Files
lpj/app/Http/Controllers/OtorisasiPenawaranController.php
Daeng Deni Mardaeni 254274b40f Refactor OtorisasiPenawaranController indentation and formatting
Merubah indentation dan formatting pada file OtorisasiPenawaranController.php untuk meningkatkan keterbacaan kode. Perubahan ini meliputi perbaikan penempatan namespace, import statements, dan penyesuaian indentasi method-method dalam controller tersebut tanpa mengubah logika bisnis.
2024-11-20 22:48:18 +07:00

330 lines
15 KiB
PHP

<?php
namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller;
use Carbon\Carbon;
use Exception;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use Maatwebsite\Excel\Facades\Excel;
use Modules\Lpj\Models\KJPP;
use Modules\Lpj\Models\PenawaranDetailTender;
use Modules\Lpj\Models\PenawaranDetailTenderLog;
use Modules\Lpj\Models\PenawaranTender;
use Modules\Lpj\Models\Permohonan;
class OtorisasiPenawaranController extends Controller
{
public $user;
/**
* Display a listing of the resource.
*/
public function index()
{
// dd('hai otorisasi');
return view('lpj::otorisasipenawaran.index');
}
public function dataForDatatables(Request $request)
{
if (is_null($this->user) || !$this->user->can('debitur.view')) {
//abort(403, 'Sorry! You are not allowed to view users.');
}
// Retrieve data from the database
$query = PenawaranTender::query()->select(
'penawaran.*',
'debitures.name as debitures_name',
'permohonan.tanggal_permohonan',
'users.name as user_pemohon',
'branches.name as branches_name',
'tujuan_penilaian.name as tujuan_penilaian_name',
'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name',
)->leftJoin('permohonan', 'permohonan.nomor_registrasi', '=', 'penawaran.nomor_registrasi')->leftJoin(
'debitures',
'debitures.id',
'=',
'permohonan.debiture_id',
)->leftJoin('users', 'users.id', '=', 'permohonan.user_id')->leftJoin(
'branches',
'branches.id',
'=',
'permohonan.branch_id',
)->leftJoin('tujuan_penilaian', 'tujuan_penilaian.id', '=', 'permohonan.tujuan_penilaian_id')->leftJoin(
'tujuan_penilaian_kjpp',
'tujuan_penilaian_kjpp.id',
'=',
'penawaran.tujuan_penilaian_kjpp_id',
)->where('penawaran.status', '=', 'proposal-tender')->withCount('penawarandetails');
// Apply search filter if provided
if ($request->has('search') && !empty($request->get('search'))) {
$search = $request->get('search');
$query->where(function ($q) use ($search) {
$q->where('nomor_registrasi', 'LIKE', '%' . $search . '%');
$q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%');
$q->orWhere('status', 'LIKE', '%' . $search . '%');
});
}
// Apply sorting if provided
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
$order = $request->get('sortOrder');
$column = $request->get('sortField');
$query->orderBy($column, $order);
}
// Get the total count of records
$totalRecords = $query->count();
// Apply pagination if provided
if ($request->has('page') && $request->has('size')) {
$page = $request->get('page');
$size = $request->get('size');
$offset = ($page - 1) * $size; // Calculate the offset
$query->skip($offset)->take($size);
}
// Get the filtered count of records
$filteredRecords = $query->count();
// Get the data for the current page
//$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
$data = $query->get();
// format date
$i = 0;
foreach ($data as $obj) {
// tanggal_permohonan
if ($obj->tanggal_permohonan) {
$data[$i]->tanggal_permohonan = Carbon::parse($obj->tanggal_permohonan)->format('d M Y');
}
// date_range
$data[$i]->date_range = "-";
if ($obj->start_date && $obj->end_date) {
$data[$i]->date_range = Carbon::parse($obj->start_date)->format('d M Y') . ' - ' . Carbon::parse(
$obj->end_date,
)->format('d M Y');
}
$i++;
}
// format date
// Calculate the page count
$pageCount = ceil($totalRecords / $request->get('size'));
// Calculate the current page number
$currentPage = 0 + 1;
// Return the response data as a JSON object
return response()->json([
'draw' => $request->get('draw'),
'recordsTotal' => $totalRecords,
'recordsFiltered' => $filteredRecords,
'pageCount' => $pageCount,
'page' => $currentPage,
'totalCount' => $totalRecords,
'data' => $data,
]);
}
public function edit($id)
{
return view('lpj::otorisasipenawaran.edit', compact('id'));
}
public function setData(Request $request)
: JsonResponse {
$data = [];
$penawaran = [];
$penawrandetails = [];
$penawarandetailLogs = [];
if (request()->ajax()) {
$id = $request->id;
$penawaran = PenawaranTender::where('status', '=', 'proposal-tender')->find($id);
if ($penawaran) {
$penawarandetailLogs = PenawaranDetailTenderLog::where('penawaran_id', $id)->leftJoin(
'kjpp',
'kjpp.id',
'=',
'detail_penawaran_logs.kjpp_rekanan_id',
)->select(
'detail_penawaran_logs.*',
DB::raw("DATE_FORMAT(detail_penawaran_logs.created_at, '%d-%m-%Y %H:%i') AS created_at2"),
'kjpp.code AS kjpp_code',
'kjpp.name AS kjpp_name',
)->get();
$penawrandetails = PenawaranDetailTender::where('penawaran_id', '=', $id)->leftJoin(
'kjpp',
'kjpp.id',
'=',
'detail_penawaran.kjpp_rekanan_id',
)->select('detail_penawaran.*', 'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name')->where(
'detail_penawaran.status',
'=',
1,
)->get();
if (sizeof($penawarandetailLogs) > 0) {
$h = 0;
foreach ($penawarandetailLogs as $obj1) {
if ($obj1->dokumen_persetujuan && Storage::disk('public')->exists(
$obj1->dokumen_persetujuan,
)) {
$penawarandetailLogs_path = Storage::url(
$obj1->dokumen_persetujuan,
);
$penawarandetailLogs[$h]->dokumen_persetujuan = $penawarandetailLogs_path;
}
$h++;
}
}
$i = 0;
foreach ($penawrandetails as $obj) {
if ($obj->dokumen_persetujuan && Storage::disk('public')->exists($obj->dokumen_persetujuan)) {
$penawrandetails_path = Storage::url($obj->dokumen_persetujuan);
$penawrandetails[$i]->dokumen_persetujuan = $penawrandetails_path;
}
$i++;
}
$penawaranString = "";
if ($penawaran->status) {
$penawaranString = convertSlug($penawaran->status);
$penawaran->status = $penawaranString;
}
$kjpp = null;
$kjpp = KJPP::pluck('name', 'id');
$data['penawaran'] = $penawaran;
$data['penawrandetails'] = $penawrandetails;
$data['penawarandetailLogs'] = $penawarandetailLogs;
$data['status'] = 'success';
$data['message']['message_success'] = ["data successfully found"];
} else {
$data['status'] = 'error';
$data['penawaran'] = null;
$data['penawrandetails'] = null;
$data['message']['message_data'] = ["data not found"];
}
} else {
$data['status'] = 'error';
$data['message']['message_ajax'] = ["no ajax request"];
}
return response()->json($data);
}
public function otorisasiPenawaranKJPP(Request $request, $id)
: JsonResponse {
$data = [];
$dataDetailPenawaranLog = [];
if (request()->ajax()) {
// cek masa aktif penawaran
$detailpenawaran = PenawaranDetailTender::find($id);
$penawaran = PenawaranTender::findOrFail($detailpenawaran->penawaran_id);
$checkActiveDateRange = checkActiveDateRangePenawaran($detailpenawaran->penawaran_id);
// cek masa aktif penawaran
if ($checkActiveDateRange) {
DB::beginTransaction();
try {
// update status KJPP yg tidak terpilih menjadi 2 -> kalah
// update status Penawaran menjadi SPK
// update status Permohonan menjadi SPK
// insert detail_permohonan_log
PenawaranDetailTender::where('status', 1)
->where('penawaran_id', $request->penawaran_id)
->whereNotIn('id', [$id])
->update([
'status' => 2,
'updated_by' => Auth::id(),
'updated_at' => now(),
]);
PenawaranTender::where('id', $request->penawaran_id)->update([
'status' => 'spk',
'nama_kjpp_sebelumnya' => $request->kjppName,
'biaya_kjpp_sebelumnya' => $request->biaya_penawaran,
'tanggal_penilaian_sebelumnya' => now(),
'authorized_status' => 1,
'authorized_at' => now(),
'authorized_by' => Auth::id(),
'updated_by' => Auth::id(),
'updated_at' => now(),
]);
Permohonan::where('nomor_registrasi', $request->noReg)->update([
'status' => 'persetujuan-penawaran',
'updated_by' => Auth::id(),
'updated_at' => now(),
]);
// log
$detailPenawaran = PenawaranDetailTender::where('penawaran_id', $request->penawaran_id)->get();
if (sizeof($detailPenawaran) > 0) {
foreach ($detailPenawaran as $model) {
array_push($dataDetailPenawaranLog, [
'detail_penawaran_id' => $model->id,
'kjpp_rekanan_id' => $model->kjpp_rekanan_id,
'penawaran_id' => $model->penawaran_id,
'biaya_penawaran' => $model->biaya_penawaran,
'attachment' => $model->attachment,
'dokumen_persetujuan' => $model->dokumen_persetujuan,
'status' => $model->status,
'authorized_status' => $model->authorized_status,
'authorized_at' => $model->authorized_at,
'authorized_at' => $model->authorized_at,
'created_at' => $model->created_at,
'updated_at' => $model->updated_at,
'deleted_at' => $model->deleted_at,
'created_by' => $model->created_by,
'updated_by' => $model->updated_by,
'deleted_by' => $model->deleted_by,
]);
}
PenawaranDetailTenderLog::insert($dataDetailPenawaranLog);
}
// log
DB::commit();
$data['status'] = 'success';
$data['message']['message_success'] = ['Otorisasi Penawaran KJPP ' . $request->kjppName . ' successfully'];
} catch (Exception $e) {
DB::rollBack();
$data['status'] = 'error';
$data['message']['message_error'] = ["Otorisasi Penawaran KJPP failed.."];
}
} else {
$data['status'] = 'error';
$data['message'] ['active_date_range'] = ["Penawaran sudah di tutup"];
}
} else {
$data['status'] = 'error';
$data['message']['message_ajax'] = ["no ajax request"];
}
return response()->json($data);
}
public function show($id)
{
$prosespenawaran = PenawaranTender::find($id);
return view('lpj::otorisasipenawaran.show', compact('id', 'prosespenawaran'));
}
}