diff --git a/app/Helpers/Lpj.php b/app/Helpers/Lpj.php index c51457b..6c9d611 100644 --- a/app/Helpers/Lpj.php +++ b/app/Helpers/Lpj.php @@ -75,7 +75,16 @@ function checkKelengkapanDetailKJPP($id) // detail_penawaran apakah isian biaya_penawaran, attachment, dokumen_persetujuan sudah lengkap? $query = PenawaranDetailTender::select('id') ->where('penawaran_id', '=', $id) + ->where('status','=',1) ->where(function ($query) { + // no_proposal + $query->orWhere('no_proposal', '', ""); + $query->orWhereNull('no_proposal'); + + // tgl_proposal + $query->orWhere('tgl_proposal', '', ""); + $query->orWhereNull('tgl_proposal'); + $query->orWhere('biaya_penawaran', '', ""); $query->orWhereNull('biaya_penawaran'); diff --git a/app/Http/Controllers/DokumenJaminanController.php b/app/Http/Controllers/DokumenJaminanController.php index 60ff7a8..b3cfe8a 100644 --- a/app/Http/Controllers/DokumenJaminanController.php +++ b/app/Http/Controllers/DokumenJaminanController.php @@ -4,6 +4,8 @@ use App\Http\Controllers\Controller; use Exception; + use Illuminate\Http\JsonResponse; + use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Storage; use Modules\Location\Models\City; @@ -18,8 +20,6 @@ use Modules\Lpj\Models\JenisJaminan; use Modules\Lpj\Models\JenisLegalitasJaminan; use Modules\Lpj\Models\PemilikJaminan; - use Illuminate\Http\JsonResponse; - use Illuminate\Support\Collection; use ZipArchive; class DokumenJaminanController extends Controller @@ -72,45 +72,41 @@ $document = DokumenJaminan::create($validate); - try { - foreach ($request->dokumen_jaminan as $key => $value) { - $file_name = $value->getClientOriginalName(); + if ($request->jenis_legalitas_jaminan_id) { + foreach ($request->jenis_legalitas_jaminan_id as $key => $value) { + $detailData = [ + 'dokumen_jaminan_id' => $document->id, + 'jenis_legalitas_jaminan_id' => $value, + 'name' => $request->name[$key], + 'keterangan' => $request->keterangan[$key], + ]; - if ($file_name) { - try { - $file_name = $value->getClientOriginalName(); - $value->storeAs( - 'public/jaminan/' . $debitur->id . '/' . $document->id . '/', - $file_name, - ); - - $detail = [ - 'dokumen_jaminan_id' => $document->id, - 'jenis_legalitas_jaminan_id' => $request->jenis_legalitas_jaminan_id[$key], - 'dokumen_jaminan' => 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name, - 'name' => $request->name[$key], - 'keterangan' => $request->keterangan[$key], - 'details' => isset($request->custom_field[$key]) ? json_encode($request->custom_field[$key]) : '', - ]; - DetailDokumenJaminan::create($detail); - } catch (Exception $e) { - DB::rollBack(); - return redirect()->route('debitur.jaminan.index', $id)->with( - 'error', - 'Gagal upload file dokumen jaminan ' . $key . ': ' . $e->getMessage(), - ); + $dokumenJaminan = []; + $dokumenNomor = []; + if (isset($request->dokumen_jaminan[$key]) && is_array($request->dokumen_jaminan[$key])) { + foreach ($request->dokumen_jaminan[$key] as $index => $file) { + if ($file) { + $file_name = $file->getClientOriginalName(); + $file->storeAs( + 'public/jaminan/' . $debitur->id . '/' . $document->id . '/', + $file_name, + ); + $dokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name; + $dokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? ''; + } } } + + if (!empty($dokumenJaminan)) { + $detailData['dokumen_jaminan'] = json_encode($dokumenJaminan); + $detailData['dokumen_nomor'] = json_encode($dokumenNomor); + } + + DetailDokumenJaminan::create($detailData); } - DB::commit(); - } catch (Exception $e) { - DB::rollBack(); - return redirect()->route('debitur.jaminan.index', $id)->with( - 'error', - 'gg' . $e->getMessage(), - ); } + DB::commit(); return redirect()->route('debitur.jaminan.index', $id)->with( 'success', 'Dokumen Jaminan berhasil ditambahkan', @@ -149,6 +145,7 @@ $debitur = Debiture::find($id); $validate = $request->validated(); + if ($validate) { try { DB::beginTransaction(); @@ -226,44 +223,59 @@ $document->update($validate); // Get existing detail documents - $existingDetails = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->get()->keyBy('id'); + $existingDetails = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->get()->keyBy( + 'id', + ); - if($request->jenis_legalitas_jaminan_id){ - foreach($request->jenis_legalitas_jaminan_id as $key => $value){ + if ($request->jenis_legalitas_jaminan_id) { + foreach ($request->jenis_legalitas_jaminan_id as $key => $value) { $detailData = [ - 'dokumen_jaminan_id' => $document->id, + 'dokumen_jaminan_id' => $document->id, 'jenis_legalitas_jaminan_id' => $value, - 'name' => $request->name[$key], - 'keterangan' => $request->keterangan[$key], + 'name' => $request->name[$key], + 'keterangan' => $request->keterangan[$key], ]; $dokumenJaminan = []; + $dokumenNomor=[]; + if (isset($request->dokumen_jaminan[$key]) && is_array($request->dokumen_jaminan[$key])) { - foreach($request->dokumen_jaminan[$key] as $file) { + foreach ($request->dokumen_jaminan[$key] as $index => $file) { if ($file) { $file_name = $file->getClientOriginalName(); $file->storeAs( 'public/jaminan/' . $debitur->id . '/' . $document->id . '/', - $file_name + $file_name, ); $dokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name; + $dokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? ''; } } } if (!empty($dokumenJaminan)) { $detailData['dokumen_jaminan'] = json_encode($dokumenJaminan); + $detailData['dokumen_nomor'] = json_encode($dokumenNomor); } if (isset($request->detail_dokumen_jaminan_id[$key])) { - $detailId = $request->detail_dokumen_jaminan_id[$key]; + $detailId = $request->detail_dokumen_jaminan_id[$key]; $detailDocument = $existingDetails->get($detailId); if ($detailDocument) { // Merge new files with existing ones if (!empty($dokumenJaminan)) { - $existingFiles = json_decode($detailDocument->dokumen_jaminan, true) ?: []; - $mergedFiles = array_merge($existingFiles, $dokumenJaminan); + $existingFiles = json_decode( + $detailDocument->dokumen_jaminan, + true, + ) ?: []; + $existingNomor = json_decode( + $detailDocument->dokumen_nomor, + true, + ) ?: []; + $mergedFiles = array_merge($existingFiles, $dokumenJaminan); + $mergedNomor = array_merge($existingNomor, $dokumenNomor); $detailData['dokumen_jaminan'] = json_encode($mergedFiles); + $detailData['dokumen_nomor'] = json_encode($mergedNomor); } $detailDocument->update($detailData); $existingDetails->forget($detailId); @@ -299,24 +311,26 @@ $id, $jaminan, ) { - $document = DokumenJaminan::find($jaminan); - $details = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->get(); + $document = DokumenJaminan::find($jaminan); + $details = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->get(); - $debitur = Debiture::find($document->debiture_id); - $provinces = Province::all(); - $cities = City::where('province_code', $document->province_code)->get(); - $districts = District::where('city_code', $document->city_code)->get(); - $villages = Village::where('district_code', $document->district_code)->get(); + $debitur = Debiture::find($document->debiture_id); + $provinces = Province::all(); + $cities = City::where('province_code', $document->province_code)->get(); + $districts = District::where('city_code', $document->city_code)->get(); + $villages = Village::where('district_code', $document->district_code)->get(); $jenisJaminan = JenisJaminan::all(); $jenisLegalitasJaminan = JenisLegalitasJaminan::all(); - $_jenisJaminan = JenisJaminan::find($document->jenis_jaminan_id); + $_jenisJaminan = JenisJaminan::find($document->jenis_jaminan_id); $legalitasJaminan = json_decode($_jenisJaminan->jenis_legalitas_jaminan_id, true); - $currentLegalitasJaminan = JenisLegalitasJaminan::whereIn('id',$document->detail->pluck('jenis_legalitas_jaminan_id')->toArray())->get(); - + $currentLegalitasJaminan = JenisLegalitasJaminan::whereIn( + 'id', + $document->detail->pluck('jenis_legalitas_jaminan_id')->toArray(), + )->get(); // Remove values from $legalitasJaminan that are in $currentLegalitasJaminan @@ -324,8 +338,8 @@ $legalitas = JenisLegalitasJaminan::whereIn('code', $legalitasJaminan)->get(); - $pemilikJaminan = PemilikJaminan::where('debiture_id', $document->debiture_id)->get(); - $hubunganPemilik = HubunganPemilikJaminan::all(); + $pemilikJaminan = PemilikJaminan::where('debiture_id', $document->debiture_id)->get(); + $hubunganPemilik = HubunganPemilikJaminan::all(); return view( 'lpj::debitur.jaminan', @@ -341,7 +355,7 @@ 'villages', 'pemilikJaminan', 'hubunganPemilik', - 'legalitas' + 'legalitas', ), ); } @@ -378,7 +392,9 @@ if ($zip->open($zipFilePath, ZipArchive::CREATE) === true) { foreach ($documents as $document) { - $files = is_array(json_decode($document->dokumen_jaminan)) ? json_decode($document->dokumen_jaminan) : [$document->dokumen_jaminan]; + $files = is_array(json_decode($document->dokumen_jaminan)) ? json_decode( + $document->dokumen_jaminan, + ) : [$document->dokumen_jaminan]; foreach ($files as $file) { $filePath = storage_path('app/public/' . $file); @@ -411,7 +427,9 @@ { $dokumen = request()->get('dokumen'); $document = DetailDokumenJaminan::find($dokumen); - $file = is_array(json_decode($document->dokumen_jaminan)) ? json_decode($document->dokumen_jaminan) : [$document->dokumen_jaminan]; + $file = is_array(json_decode($document->dokumen_jaminan)) ? json_decode( + $document->dokumen_jaminan, + ) : [$document->dokumen_jaminan]; return response()->download(storage_path('app/public/' . $file[request()->get('index')])); } @@ -425,20 +443,19 @@ } - public function getLegalitasJaminan($id = 10, $jenisJaminanId = 1) : JsonResponse - { - - $jenisJaminan = JenisJaminan::findOrFail($jenisJaminanId); - $legalitasJaminan = $jenisJaminan->jenis_legalitas_jaminan_id; + public function getLegalitasJaminan($id = 10, $jenisJaminanId = 1) + : JsonResponse { + $jenisJaminan = JenisJaminan::findOrFail($jenisJaminanId); + $legalitasJaminan = $jenisJaminan->jenis_legalitas_jaminan_id; $newLegalitasJaminan = JenisLegalitasJaminan::whereIn('code', json_decode($legalitasJaminan, true))->get(); $existingLegalitas = []; - $newLegalitas = []; + $newLegalitas = []; // Create a set of new jenis_legalitas_jaminan_ids for quick lookup $newLegalitasIds = $newLegalitasJaminan->pluck('id')->toArray(); - if($id>0) { + if ($id > 0) { $document = DokumenJaminan::findOrFail($id); if ($document && $document->detail) { foreach ($document->detail as $detail) { @@ -448,12 +465,14 @@ 'id' => $detail->id, 'jenis_legalitas_jaminan_id' => $detail->jenis_legalitas_jaminan_id, 'name' => $detail->jenisLegalitasJaminan->name, - 'dokumen_jaminan' => json_decode($detail->dokumen_jaminan) ?? $detail->dokumen_jaminan, + 'dokumen_jaminan' => json_decode( + $detail->dokumen_jaminan, + ) ?? $detail->dokumen_jaminan, 'custom_field' => $detail->jenisLegalitasJaminan->custom_field, 'custom_field_type' => $detail->jenisLegalitasJaminan->custom_field_type, 'details' => $detail->details, 'keterangan' => $detail->keterangan, - 'is_existing' => true + 'is_existing' => true, ]; } } @@ -463,15 +482,15 @@ foreach ($newLegalitasJaminan as $legalitas) { if (!Collection::make($existingLegalitas)->contains('jenis_legalitas_jaminan_id', $legalitas->id)) { $newLegalitas[] = [ - 'id' => null, + 'id' => null, 'jenis_legalitas_jaminan_id' => $legalitas->id, - 'name' => $legalitas->name, - 'dokumen_jaminan' => null, - 'custom_field' => $legalitas->custom_field, - 'custom_field_type' => $legalitas->custom_field_type, - 'details' => null, - 'keterangan' => null, - 'is_existing' => false + 'name' => $legalitas->name, + 'dokumen_jaminan' => null, + 'custom_field' => $legalitas->custom_field, + 'custom_field_type' => $legalitas->custom_field_type, + 'details' => null, + 'keterangan' => null, + 'is_existing' => false, ]; } } diff --git a/app/Http/Controllers/ProsesPenawaranController.php b/app/Http/Controllers/ProsesPenawaranController.php index d8a5e9b..05b199c 100644 --- a/app/Http/Controllers/ProsesPenawaranController.php +++ b/app/Http/Controllers/ProsesPenawaranController.php @@ -5,6 +5,7 @@ namespace Modules\Lpj\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Http\Response; use App\Http\Controllers\Controller; +use Carbon\Carbon; use Exception; use Maatwebsite\Excel\Facades\Excel; use Illuminate\Http\JsonResponse; @@ -14,6 +15,7 @@ use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\DB; 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; @@ -38,7 +40,7 @@ class ProsesPenawaranController extends Controller } // Retrieve data from the database - $query = PenawaranTender::query()->where('status', '=', 'tender')->withCount('penawarandetails'); + $query = PenawaranTender::query()->whereIn('status', ['tender', 'proposal-tender'])->withCount('penawarandetails'); // Apply search filter if provided if ($request->has('search') && !empty($request->get('search'))) { @@ -75,7 +77,7 @@ class ProsesPenawaranController extends Controller // Get the data for the current page //$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); - $data = $query->with(['tujuanPenilaianKJPP','permohonan','permohonan.debiture'])->get(); + $data = $query->with(['tujuanPenilaianKjpp','permohonan','permohonan.debiture'])->get(); // Calculate the page count $pageCount = ceil($totalRecords / $request->get('size')); @@ -116,7 +118,6 @@ class ProsesPenawaranController extends Controller ->get(); if ($penawaran) { - $i=0; foreach($penawrandetails as $obj) { @@ -127,7 +128,18 @@ class ProsesPenawaranController extends Controller } $i++; } - + DB::enableQueryLog(); + $kjpps = KJPP::whereNotIn('id', function($query) use ($id) { + $query->select('kjpp_rekanan_id') + ->from('detail_penawaran') + ->where('penawaran_id', '=', $id) + ->where('status','=',1); // status=1 (masih aktif) + }) + ->select('id', 'name', 'code') // Pilih beberapa kolom sekaligus + ->get(); + $sql=DB::getQueryLog(); + $data['sql'] = $sql; + $data['kjpps'] = $kjpps; $data['penawaran'] = $penawaran; $data['penawrandetails'] = $penawrandetails; $data['status'] = 'success'; @@ -155,65 +167,52 @@ class ProsesPenawaranController extends Controller $data = array(); $dataPenawaranDetail = array(); if (request()->ajax()) { - $validator = ProsesPenawaranController::rulesEditnya($request, $id); + + try { - if ($validator['fails']) { - $data['message'] = $validator['errors']; - $data['status'] = 'error'; - } - else - { - try { + $dataPenawaranDetail = ['updated_by' => Auth::id(), + 'updated_at' => now(), + 'no_proposal' => $request->no_proposal, + 'tgl_proposal' => $request->tgl_proposal, + 'biaya_penawaran' => str_replace(".","",$request->biaya_penawaran) + ]; - $dataPenawaranDetail = ['updated_by' => Auth::id(), - 'updated_at' => now(), - 'biaya_penawaran' => str_replace(".","",$request->biaya_penawaran) - ]; - - if ($request->hasFile('dokumen_persetujuan')) + if ($request->hasFile('dokumen_persetujuan')) + { + $file_tmp = $request->file('dokumen_persetujuan'); + $folderPath = 'uploads/penawaran/'; + if ($file_tmp->isValid()) { - $file_tmp = $request->file('dokumen_persetujuan'); - $folderPath = 'uploads/penawaran/'; - if ($file_tmp->isValid()) - { - $myFile=$file_tmp->getClientOriginalName(); // nama file with extension - $file_name = pathinfo($myFile, PATHINFO_FILENAME); // nama file without extension + $myFile=$file_tmp->getClientOriginalName(); // nama file with extension + $file_name = pathinfo($myFile, PATHINFO_FILENAME); // nama file without extension - $extension = $file_tmp->getClientOriginalExtension(); - // kjppID_penawaranID_namaFile_userID_time - $newFileName = $request->kjpp_rekanan_id.'_'.$id.'_'.$file_name.'_'.Auth::user()->id."_".time() .'.'. $extension; - Storage::disk('public')->put($folderPath.'/'.$newFileName,file_get_contents($file_tmp)); + $extension = $file_tmp->getClientOriginalExtension(); + // kjppID_penawaranID_namaFile_userID_time + $newFileName = $request->kjpp_rekanan_id.'_'.$id.'_'.$file_name.'_'.Auth::user()->id."_".time() .'.'. $extension; + Storage::disk('public')->put($folderPath.'/'.$newFileName,file_get_contents($file_tmp)); - $newFileNameWithPath = $folderPath . $newFileName; - $dataPenawaranDetail['attachment'] = $myFile; - $dataPenawaranDetail['dokumen_persetujuan'] = $newFileNameWithPath; - - $penawarandetail = PenawaranDetailTender::findOrFail($id); - $penawarandetail->update($dataPenawaranDetail); - - $data['detailpenawaran_id'] = $id; - $data['status'] = 'success'; - $data['message'] ['message_success'] = array('Proses Penawarn KJPP successfully'); - } - else - { - $data['status'] = 'error'; - $data['message'] ['check_file_jenis'] = array("Silahkan upload file pdf"); - } + $newFileNameWithPath = $folderPath . $newFileName; + $dataPenawaranDetail['attachment'] = $myFile; + $dataPenawaranDetail['dokumen_persetujuan'] = $newFileNameWithPath; } else { $data['status'] = 'error'; - $data['message'] ['check_file'] = array("Silahkan upload file"); - + $data['message'] ['check_file_jenis'] = array("Silahkan upload file pdf"); } - - } catch (Exception $e) { - - $data['status'] = 'error'; - $data['message'] ['message_error_try_catch'] = array('Proses Penawarn KJPP failed.'); } - } + + $penawarandetail = PenawaranDetailTender::findOrFail($id); + $penawarandetail->update($dataPenawaranDetail); + + $data['detailpenawaran_id'] = $id; + $data['status'] = 'success'; + $data['message'] ['message_success'] = array('Proses Penawarn KJPP successfully'); + } catch (Exception $e) { + + $data['status'] = 'error'; + $data['message'] ['message_error_try_catch'] = array('Proses Penawarn KJPP failed.'); + } } else { $data['status'] = 'error'; @@ -339,4 +338,492 @@ class ProsesPenawaranController extends Controller $prosespenawaran = PenawaranTender::find($id); return view('lpj::prosespenawaran.show', compact('id', 'prosespenawaran')); } + + public function updateDraft(Request $request, $id): JsonResponse + { + // $id = penawaran.id + // init + $data = array(); + $dataPenawaranDetail = array(); + $failed = 0; + + DB::beginTransaction(); + try + { + // update detail_penawaran + $detail_penawaran_ids = $request->input('prosespenawaran_penawarandetail_id', []); + $no_proposals = $request->input('prosespenawaran_no_proposal', []); + $tgl_proposals = $request->input('prosespenawaran_tgl_proposal', []); + $biaya_penawarans = $request->input('prosespenawaran_biayaPenawaran', []); + $dokumen_penawarans = $request->file('prosespenawaran_dokumenPersetujuan'); + + $tot_kjpp = sizeof($detail_penawaran_ids); + if($tot_kjpp>0) + { + // loop + for($i=0;$i<$tot_kjpp;$i++) + { + $detail_penawaran_id= $detail_penawaran_ids[$i]; + $dataPenawaranDetail = [ + 'no_proposal' => $no_proposals[$i], + 'tgl_proposal' => $tgl_proposals[$i], + 'biaya_penawaran' => str_replace(".","",$biaya_penawarans[$i]), // 'biaya_penawaran' => str_replace(".","",$request->biaya_penawaran) + 'updated_by' => Auth::id(), + 'updated_at' => now(), + ]; + + $penawarandetail = PenawaranDetailTender::find($detail_penawaran_id); + if ($dokumen_penawarans) + { + if (is_array($dokumen_penawarans) && array_key_exists($i, $dokumen_penawarans)) + { + $file_tmp = $dokumen_penawarans[$i]; + if($file_tmp->isValid()) + { + $folderPath = 'uploads/penawaran/'; + + $myFile=$file_tmp->getClientOriginalName(); // nama file with extension + $file_name = pathinfo($myFile, PATHINFO_FILENAME); // nama file without extension + + $extension = $file_tmp->getClientOriginalExtension(); + // kjppID_penawaranID_namaFile_userID_time + $newFileName = $penawarandetail->kjpp_rekanan_id.'_'.$penawarandetail->penawaran_id.'_'.$file_name.'_'.Auth::user()->id."_".time() .'.'. $extension; + Storage::disk('public')->put($folderPath.'/'.$newFileName,file_get_contents($file_tmp)); + + $newFileNameWithPath = $folderPath . $newFileName; + $dataPenawaranDetail['attachment'] = $myFile; + $dataPenawaranDetail['dokumen_persetujuan'] = $newFileNameWithPath; + } + + } + + } + + $checkStatus = $penawarandetail->update($dataPenawaranDetail); + if(!$checkStatus) + $failed++; + } + + if($failed>0) + { + DB::rollBack(); + $data['status'] = 'error'; + $data['message'] ['message_error'] = array('Proses Draft Penawaran KJPP failed'); + } + else + { + DB::commit(); + $data['status'] = 'success'; + $data['message'] ['message_success'] = array('Proses Draft Penawaran KJPP successfully'); + } + + } + else + { + $data['status'] = 'error'; + $data['message'] ['message_error'] = array('Data inti tidak ada.'); + } + + } + catch (Exception $e) + { + // dd($e); + DB::rollBack(); + $data['status'] = 'error'; + $data['message'] ['message_error_try_catch'] = array('Proses Draft Penawaran KJPP failed.'); + } + + return response()->json($data); + } + + public function store(Request $request): JsonResponse + { + // init + $data = array(); + // $data['request']=$request->all(); + $dataPenawaranDetail = array(); + try + { + $dataPenawaranDetail = [ + 'penawaran_id' => $request->penawaran_id, + 'kjpp_rekanan_id' => $request->kjpp_id, + 'created_by' => Auth::id(), + 'created_at' => Carbon::now() + ]; + + PenawaranDetailTender::create($dataPenawaranDetail); + + $data['status'] = 'success'; + $data['message'] ['message_success'] = array('Proses Tambah KJPP successfully'); + } + catch (Exception $e) + { + // dd($e); + $data['status'] = 'error'; + $data['message'] ['message_error_try_catch'] = array('Proses Tambah KJPP failed.'); + } + + return response()->json($data); + } + + public function editulang($id) + { + // id ==> penawaran.id + return view('lpj::prosespenawaran.editulang', compact('id')); + } + + public function setDataUlang(Request $request): JsonResponse + { + $data = array(); + $penawaran = array(); + $penawrandetails = array(); + + if (request()->ajax()) { + $id = $request->id; + $penawaran = PenawaranTender::where('status','=','proposal-tender')->find($id); + + if ($penawaran) { + $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(); + + $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; + } + + $kjpps = KJPP::whereNotIn('id', function($query) use ($id) { + $query->select('kjpp_rekanan_id') + ->from('detail_penawaran') + ->where('penawaran_id', '=', $id) + ->where('status','=',1); // status=1 (masih aktif) + }) + ->select('id', 'name', 'code') // Pilih beberapa kolom sekaligus + ->get(); + + $data['kjpps'] = $kjpps; + $data['penawaran'] = $penawaran; + $data['penawrandetails'] = $penawrandetails; + $data['status'] = 'success'; + $data['message']['message_success'] = array("data successfully found"); + } else { + $data['status'] = 'error'; + $data['penawaran'] = null; + $data['penawrandetails'] = null; + $data['message']['message_data'] = array("data not found"); + } + } else { + $data['status'] = 'error'; + $data['message']['message_ajax'] = array("no ajax request"); + } + + return response()->json($data); + } + + public function updateKJPPStatusUlang(Request $request, $id): JsonResponse + { + // message menggunakan SweetAlert2 + // init + $data = array(); + $dataDetailPenawaran = array(); + // cek masa aktif penawaran + $detailpenawaran = PenawaranDetailTender::find($id); + $checkActiveDateRange = checkActiveDateRangePenawaran($detailpenawaran->penawaran_id); + // cek masa aktif penawaran + + // cek apakah blm di approve (penawaran.status = proposal-tender) + $penawaran = PenawaranTender::find($detailpenawaran->penawaran_id); + // cek apakah blm di approve (penawaran.status = proposal-tender) + if($checkActiveDateRange && ('proposal-tender'==$penawaran->status)) + { + try { + + $data['id']=$id; + + $dataDetailPenawaran = ['status' => '0', + 'updated_by' => Auth::id(), + 'updated_at' => now() + ]; + + $detailpenawaran->update($dataDetailPenawaran); + + $data['status'] = 'success'; + $data['message'] ['message_success'] = array('Sukses delete Penawaran KJPP '.$request->kjppName); + } catch (Exception $e) { + + $data['status'] = 'error'; + $data['message'] ['message_error_try_catch'] = array("Gagal delete Penawaran KJPP ".$request->kjppName); + // $data['message']['message_error'] = array("Gagal delete Penawaran KJPP ".$request->kjppName); + } + } + else + { + $data['status'] = 'error'; + $data['message']['active_date_range'] = array("Penawaran sudah di tutup"); + // $data['message']['message_error'] = array("Penawaran sudah di tutup"); + } + + return response()->json($data); + } + + public function updateulang(Request $request, $id): JsonResponse + { + // id ==> detail_penawaran.id + // init + $data = array(); + $dataDetailPenawaranLog = array(); + $dataDetailPenawaran = array(); + $pleaseCommit= true; + if (request()->ajax()) { + + $validator = ProsesPenawaranController::rulesEditUlangnya($request, $id); + + if ($validator['fails']) { + $data['message'] = $validator['errors']; + $data['status'] = 'error'; + } + else + { + // cek masa aktif penawaran + $detailpenawaran = PenawaranDetailTender::find($id); + $checkActiveDateRange = checkActiveDateRangePenawaran($detailpenawaran->penawaran_id); + // cek masa aktif penawaran + + // cek apakah blm di approve (penawaran.status = proposal-tender) + $penawaran = PenawaranTender::find($detailpenawaran->penawaran_id); + // cek apakah blm di approve (penawaran.status = proposal-tender) + if($checkActiveDateRange && ('proposal-tender'==$penawaran->status)) + { + DB::beginTransaction(); + try { + + $dataDetailPenawaranLog = [ + 'detail_penawaran_id' =>$detailpenawaran->id, + 'kjpp_rekanan_id' =>$detailpenawaran->kjpp_rekanan_id, + 'penawaran_id' =>$detailpenawaran->penawaran_id, + 'biaya_penawaran' =>$detailpenawaran->biaya_penawaran, + 'no_proposal' =>$detailpenawaran->no_proposal, + 'tgl_proposal' =>$detailpenawaran->tgl_proposal, + 'attachment' =>$detailpenawaran->attachment, + 'dokumen_persetujuan' =>$detailpenawaran->dokumen_persetujuan, + 'status' =>$detailpenawaran->status, + 'authorized_status' =>$detailpenawaran->authorized_status, + 'authorized_at' =>$detailpenawaran->authorized_at, + 'authorized_at' =>$detailpenawaran->authorized_at, + 'created_at' =>$detailpenawaran->created_at, + 'updated_at' =>$detailpenawaran->updated_at, + 'deleted_at' =>$detailpenawaran->deleted_at, + 'created_by' =>$detailpenawaran->created_by, + 'updated_by' =>$detailpenawaran->updated_by, + 'deleted_by' =>$detailpenawaran->deleted_by + + ]; + + PenawaranDetailTenderLog::create($dataDetailPenawaranLog); + + $biaya_penawaran=""; + if($request->biaya_penawaran) + $biaya_penawaran= str_replace(".","",$request->biaya_penawaran); + $dataDetailPenawaran = ['updated_by' => Auth::id(), + 'updated_at' => now(), + 'no_proposal' => $request->no_proposal, + 'tgl_proposal' => $request->tgl_proposal, + 'biaya_penawaran' => $biaya_penawaran + ]; + + if ($request->hasFile('dokumen_persetujuan')) + { + $file_tmp = $request->file('dokumen_persetujuan'); + $folderPath = 'uploads/penawaran/'; + if ($file_tmp->isValid()) + { + $myFile=$file_tmp->getClientOriginalName(); // nama file with extension + $file_name = pathinfo($myFile, PATHINFO_FILENAME); // nama file without extension + + $extension = $file_tmp->getClientOriginalExtension(); + // kjppID_penawaranID_namaFile_userID_time + $newFileName = $request->kjpp_rekanan_id.'_'.$id.'_'.$file_name.'_'.Auth::user()->id."_".time() .'.'. $extension; + Storage::disk('public')->put($folderPath.'/'.$newFileName,file_get_contents($file_tmp)); + + $newFileNameWithPath = $folderPath . $newFileName; + $dataDetailPenawaran['attachment'] = $myFile; + $dataDetailPenawaran['dokumen_persetujuan'] = $newFileNameWithPath; + } + else + { + $pleaseCommit=false; + $data['status'] = 'error'; + $data['message']['check_file_jenis'] = array("Silahkan upload file pdf"); + } + } + else + { + $data['status'] = 'error'; + $data['message']['check_file'] = array("Silahkan upload file"); + + } + + $detailpenawaran->update($dataDetailPenawaran); + + if($pleaseCommit) + { + DB::commit(); + + $data['id'] = $id; + $data['detailpenawaran'] = $detailpenawaran; + $data['status'] = 'success'; + $data['message']['message_success'] = array('Proses Penawarn KJPP Ulang successfully'); + } + else + { + DB::rollBack(); + $data['status'] = 'error'; + $data['message']['message_error'] = array("Proses Penawarn KJPP Ulang failed.."); + } + + } catch (Exception $e) { + DB::rollBack(); + $data['status'] = 'error'; + $data['message']['message_error_try_catch'] = array('Proses Penawarn KJPP Ulang failed.'); + } + } + else + { + $data['status'] = 'error'; + $data['message']['active_date_range'] = array("Penawaran sudah di tutup"); + } + + } + + } else { + $data['status'] = 'error'; + $data['message']['message_ajax'] = array("no ajax request"); + } + + return response()->json($data); + } + + public function rulesEditUlangnya($request, $id) + { + $validateIt = [ + // 'name' diambil dari definisi parameter yang di kirim pada POST Data + 'no_proposal' => 'required', + 'tgl_proposal' => 'required', + 'biaya_penawaran' => 'required', + 'dokumen_persetujuan' => 'required|file|mimes:pdf' + ]; + + $messageIt = [ + 'no_proposal.required' => 'Silahkan isi No Proposal', + 'tgl_proposal.required' => 'Silahkan isi Tanggal Penawaran', + 'biaya_penawaran.required' => 'Silahkan isi Biaya Penawaran', + 'dokumen_persetujuan.required' => 'Silahkan isi dokumen', + 'dokumen_persetujuan.file' => 'Silahkan isi file', + 'dokumen_persetujuan.mimes' => 'Silahkan upload pdf' + ]; + + $validator = Validator::make($request->all(), $validateIt, $messageIt); + + $data['fails'] = $validator->fails(); + $data['errors'] = $validator->errors(); + + return $data; + } + + public function storeUlang(Request $request): JsonResponse + { + // init + $data = array(); + // $data['request']=$request->all(); + $dataDetailPenawaran = array(); + // cek masa aktif penawaran + $checkActiveDateRange = checkActiveDateRangePenawaran($request->penawaran_id); + // cek masa aktif penawaran + + // cek apakah blm di approve (penawaran.status = proposal-tender) + $penawaran = PenawaranTender::find($request->penawaran_id); + // cek apakah blm di approve (penawaran.status = proposal-tender) + if($checkActiveDateRange && ('proposal-tender'==$penawaran->status)) + { + try + { + $biaya_penawaran=""; + if($request->biaya_penawaran) + $biaya_penawaran= str_replace(".","",$request->biaya_penawaran); + $dataDetailPenawaran = [ + 'kjpp_rekanan_id' => $request->kjpp_rekanan_id, + 'no_proposal' => $request->no_proposal, + 'tgl_proposal' => $request->tgl_proposal, + 'biaya_penawaran' => $biaya_penawaran, + 'penawaran_id' => $request->penawaran_id, + 'created_by' => Auth::id(), + 'created_at' => Carbon::now() + ]; + + if ($request->hasFile('dokumen_persetujuan')) + { + $file_tmp = $request->file('dokumen_persetujuan'); + $folderPath = 'uploads/penawaran/'; + if ($file_tmp->isValid()) + { + $myFile=$file_tmp->getClientOriginalName(); // nama file with extension + $file_name = pathinfo($myFile, PATHINFO_FILENAME); // nama file without extension + + $extension = $file_tmp->getClientOriginalExtension(); + // kjppID_penawaranID_namaFile_userID_time + $newFileName = $request->kjpp_rekanan_id.'_'.$request->penawaran_id.'_'.$file_name.'_'.Auth::user()->id."_".time() .'.'. $extension; + Storage::disk('public')->put($folderPath.'/'.$newFileName,file_get_contents($file_tmp)); + + $newFileNameWithPath = $folderPath . $newFileName; + $dataDetailPenawaran['attachment'] = $myFile; + $dataDetailPenawaran['dokumen_persetujuan'] = $newFileNameWithPath; + } + else + { + $pleaseCommit=false; + $data['status'] = 'error'; + $data['message']['check_file_jenis'] = array("Silahkan upload file pdf"); + } + } + else + { + $data['status'] = 'error'; + $data['message']['check_file'] = array("Silahkan upload file"); + + } + PenawaranDetailTender::create($dataDetailPenawaran); + + $data['status'] = 'success'; + $data['message'] ['message_success'] = array('Proses Tambah KJPP Ulang successfully'); + } + catch (Exception $e) + { + dd($e); + $data['status'] = 'error'; + $data['message'] ['message_error_try_catch'] = array('Proses Tambah KJPP Ulang failed.'); + } + } + else + { + $data['status'] = 'error'; + $data['message']['active_date_range'] = array("Penawaran sudah di tutup"); + } + + return response()->json($data); + } } diff --git a/app/Http/Controllers/RegistrasiFinalController.php b/app/Http/Controllers/RegistrasiFinalController.php index bf08eb1..4ee203e 100644 --- a/app/Http/Controllers/RegistrasiFinalController.php +++ b/app/Http/Controllers/RegistrasiFinalController.php @@ -3,10 +3,19 @@ namespace Modules\Lpj\Http\Controllers; use App\Http\Controllers\Controller; -use Carbon\Carbon; -use Exception; + use Carbon\Carbon; + use Exception; + use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; + 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\PenawaranTender; + use Modules\Lpj\Models\Permohonan; + use Modules\Lpj\Models\Regions; + // use Modules\Location\Models\City; // use Modules\Location\Models\District; // use Modules\Location\Models\Province; @@ -20,15 +29,6 @@ use Exception; // use Modules\Lpj\Models\JenisJaminan; // use Modules\Lpj\Models\JenisLegalitasJaminan; // use Modules\Lpj\Models\PemilikJaminan; - use Modules\Lpj\Models\Permohonan; - use Modules\Lpj\Models\JenisPenilaian; - use Modules\Lpj\Models\Regions; - use Illuminate\Http\JsonResponse; - use Illuminate\Support\Facades\Validator; - use Illuminate\Support\Facades\Auth; - use Illuminate\Support\Facades\DB; - use Illuminate\Support\Facades\Storage; -use Modules\Lpj\Models\PenawaranTender; class RegistrasiFinalController extends Controller { @@ -46,12 +46,12 @@ use Modules\Lpj\Models\PenawaranTender; } // Retrieve data from the database - // data.id => penawaran.id - $query =PenawaranTender::query() - ->select('penawaran.*', 'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name') - ->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id','=','penawaran.tujuan_penilaian_kjpp_id') - ->where('penawaran.status','=','spk') - ->withCount('penawarandetails'); + $query = PenawaranTender::with(['permohonan', 'tujuanPenilaianKjpp'])->whereHas( + 'permohonan', + function ($q) { + $q->where('status', '=', 'spk'); + }, + )->withCount('penawarandetails'); // Apply search filter if provided if ($request->has('search') && !empty($request->get('search'))) { @@ -90,25 +90,23 @@ use Modules\Lpj\Models\PenawaranTender; //$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); $data = $query->with(['permohonan'])->get(); // dd($data); - $i=0; - foreach($data as $obj) - { - if($obj->tanggal_penilaian_sebelumnya) - { - $data[$i]->tanggal_penilaian_sebelumnya = Carbon::parse($obj->tanggal_penilaian_sebelumnya)->format('d F Y H:i:s'); + $i = 0; + foreach ($data as $obj) { + if ($obj->tanggal_penilaian_sebelumnya) { + $data[$i]->tanggal_penilaian_sebelumnya = Carbon::parse($obj->tanggal_penilaian_sebelumnya)->format( + 'd F Y H:i:s', + ); } - if($obj->biaya_kjpp_sebelumnya) - { + if ($obj->biaya_kjpp_sebelumnya) { $data[$i]->biaya_kjpp_sebelumnya = formatRupiah($obj->biaya_kjpp_sebelumnya); - } // 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'); - + 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++; @@ -129,24 +127,20 @@ use Modules\Lpj\Models\PenawaranTender; 'pageCount' => $pageCount, 'page' => $currentPage, 'totalCount' => $totalRecords, - 'data' => $data + 'data' => $data, ]); } public function show($id) { - // $id => penawaran.id - $penawaran = PenawaranTender::find($id); - $permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi)->first(); - - if($permohonan->dokumen) - { - $pdfSPK_path = Storage::url($permohonan->dokumen); + $permohonan = Permohonan::find($id); + if ($permohonan->dokumen) { + $pdfSPK_path = Storage::url($permohonan->dokumen); $permohonan->dokumen = $pdfSPK_path; - $permohonan->dokumen = '| Dokumen SPK.pdf '; - } + $permohonan->dokumen = '| Dokumen SPK.pdf '; + } - return view('lpj::registrasifinal.show', compact('id','permohonan')); + return view('lpj::registrasifinal.show', compact('id', 'permohonan')); } public function edit($id) @@ -155,130 +149,123 @@ use Modules\Lpj\Models\PenawaranTender; return view('lpj::registrasifinal.edit', compact('id')); } - public function setData(Request $request): JsonResponse - { - $data = array(); - $datas = array(); - $penawaran=null; - $regions=null; + public function setData(Request $request) + : JsonResponse { + $data = []; + $datas = []; if (request()->ajax()) { - // $id => penawaran.id - $id = $request->id; - $penawaran = PenawaranTender::find($id); - $datas = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi)->first(); + $id = $request->id; + $datas = Permohonan::find($id); + if ($datas) { - - $regions=Regions::pluck('name', 'id'); + $penawaran = null; + $regions = null; + $regions = Regions::pluck('name', 'id'); + $penawaran = PenawaranTender::where('nomor_registrasi', '=', $datas->nomor_registrasi)->first(); $penawaranString = ""; - if($penawaran->status) - { - $penawaranString = convertSlug($penawaran->status); + if ($penawaran->status) { + $penawaranString = convertSlug($penawaran->status); $penawaran->status = $penawaranString; - } - - if($datas->dokumen) - { - $pdfSPK_path = Storage::url($datas->dokumen); + } + + if ($datas->dokumen) { + $pdfSPK_path = Storage::url($datas->dokumen); $datas->dokumen = $pdfSPK_path; } - $data['status'] = 'success'; - $data['regions'] = $regions; - $data['penawaran'] = $penawaran; - $data['datas'] = $datas; - $data['message']['message_success'] = array("data successfully found"); + $data['status'] = 'success'; + $data['regions'] = $regions; + $data['penawaran'] = $penawaran; + $data['datas'] = $datas; + $data['message']['message_success'] = ["data successfully found"]; } else { - $data['status'] = 'error'; - $data['datas'] = null; - $data['message']['message_data'] = array("data not found"); + $data['status'] = 'error'; + $data['datas'] = null; + $data['message']['message_data'] = ["data not found"]; } } else { - $data['status'] = 'error'; - $data['message']['message_ajax'] = array("no ajax request"); + $data['status'] = 'error'; + $data['message']['message_ajax'] = ["no ajax request"]; } return response()->json($data); } - public function update(Request $request, $id): JsonResponse - { + public function update(Request $request, $id) + : JsonResponse { // init - $data = array(); - $dataPermohonan = array(); - $dataPenawaran = array(); + $data = []; + $dataPermohonan = []; + $dataPenawaran = []; if (request()->ajax()) { $validator = RegistrasiFinalController::rulesEditnya($request, $id); if ($validator['fails']) { $data['message'] = $validator['errors']; - $data['status'] = 'error'; - } - else - { + $data['status'] = 'error'; + } else { DB::beginTransaction(); try { - // update table permohonan => status (registrasi-final), region_id, keterangan, authorized_at, authorized_status, authorized_by // update table penawaran => status (registrasi-final) $dataPermohonan = [ - 'status' => 'registrasi-final', - 'region_id' => $request->region, - 'keterangan' => $request->catatan, - 'authorized_at' => now(), - 'authorized_status' =>1, - 'authorized_by' => Auth::id() - ]; + 'status' => 'registrasi-final', + 'region_id' => $request->region, + 'keterangan' => $request->catatan, + 'authorized_at' => now(), + 'authorized_status' => 1, + 'authorized_by' => Auth::id(), + ]; $dataPenawaran = ['status' => 'registrasi-final']; - // $id => penawaran.id - $penawaran = PenawaranTender::find($id); - $permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi)->first(); + + $permohonan = Permohonan::find($id); + $penawaran = PenawaranTender::where('nomor_registrasi', '=', $permohonan->nomor_registrasi) + ->first(); $permohonan->update($dataPermohonan); $penawaran->update($dataPenawaran); // DB::commit(); - $data['status'] = 'success'; - $data['message']['message_success'] = array('Regitrasi Final '.$permohonan->nomor_registrasi.' successfully'); + $data['status'] = 'success'; + $data['message']['message_success'] = ['Regitrasi Final ' . $permohonan->nomor_registrasi . ' successfully']; } catch (Exception $e) { DB::rollBack(); - $data['status'] = 'error'; - $data['message']['message_try_catch'] = array('Regitrasi Final '.$permohonan->nomor_registrasi.' failed.'); + $data['status'] = 'error'; + $data['message']['message_try_catch'] = ['Regitrasi Final ' . $permohonan->nomor_registrasi . ' failed.']; } } - } else { - $data['status'] = 'error'; - $data['message']['message_ajax'] = array("no ajax request"); + $data['status'] = 'error'; + $data['message']['message_ajax'] = ["no ajax request"]; } return response()->json($data); - } public function rulesEditnya($request, $id) { - $validate_catatan=''; + $validate_catatan = ''; $validateIt = [ // 'name' diambil dari definisi parameter yang di kirim pada POST Data - 'region' => 'required', + 'region' => 'required', 'catatan' => 'required', ]; $messageIt = [ - 'region.required' => 'Silahkan pilih Region', - 'catatan.required' => 'Silahkan isi Catatan' + 'region.required' => 'Silahkan pilih Region', + 'catatan.required' => 'Silahkan isi Catatan', ]; $validator = Validator::make($request->all(), $validateIt, $messageIt); - $data['fails'] = $validator->fails(); + $data['fails'] = $validator->fails(); $data['errors'] = $validator->errors(); return $data; diff --git a/app/Models/DetailDokumenJaminan.php b/app/Models/DetailDokumenJaminan.php index 487cf75..ad76f13 100644 --- a/app/Models/DetailDokumenJaminan.php +++ b/app/Models/DetailDokumenJaminan.php @@ -16,6 +16,7 @@ 'jenis_legalitas_jaminan_id', 'name', 'dokumen_jaminan', + 'dokumen_nomor', 'keterangan', 'details', 'status', diff --git a/database/migrations/2024_10_16_153558_create_analisa_tanah_bangunan_table.php b/database/migrations/2024_10_16_153558_create_analisa_tanah_bangunan_table.php index 585dbf4..2c0cf23 100644 --- a/database/migrations/2024_10_16_153558_create_analisa_tanah_bangunan_table.php +++ b/database/migrations/2024_10_16_153558_create_analisa_tanah_bangunan_table.php @@ -20,7 +20,7 @@ return new class extends Migration $table->string('kontur_tanah'); $table->string('ketinggian_jalan'); $table->string('kontur_jalan'); - $table->string('posis_kavling'); + $table->string('posisi_kavling'); $table->enum('tusuk_sate', ['yes', 'no']); $table->enum('lockland', ['yes', 'no']); $table->string('kondisi_fisik_tanah'); diff --git a/database/migrations/2024_11_01_081201_create_kategori_form_analisa_inspeksi_table.php b/database/migrations/2024_11_01_081201_create_kategori_form_analisa_inspeksi_table.php index 7b14758..87c765e 100644 --- a/database/migrations/2024_11_01_081201_create_kategori_form_analisa_inspeksi_table.php +++ b/database/migrations/2024_11_01_081201_create_kategori_form_analisa_inspeksi_table.php @@ -15,6 +15,7 @@ return new class extends Migration $table->id(); $table->string('name'); $table->string('code'); + $table->unsignedBigInteger('kategori_jenis_aset_id'); // Add this line $table->foreign('kategori_jenis_aset_id')->references('id')->on('kategori_jenis_aset'); $table->boolean('status')->default(true); $table->char('authorized_status', 1)->nullable(); diff --git a/database/migrations/2024_11_07_044004_update_detail_dokumen_jaminan_table.php b/database/migrations/2024_11_07_044004_update_detail_dokumen_jaminan_table.php new file mode 100644 index 0000000..c8b10ee --- /dev/null +++ b/database/migrations/2024_11_07_044004_update_detail_dokumen_jaminan_table.php @@ -0,0 +1,28 @@ +string('dokumen_nomor')->nullable()->after('dokumen_jaminan'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('detail_dokumen_jaminan', function (Blueprint $table) { + $table->dropColumn('dokumen_nomor'); + }); + } +}; diff --git a/database/migrations/2024_11_08_085002_update_detail_penawaran_table.php b/database/migrations/2024_11_08_085002_update_detail_penawaran_table.php new file mode 100644 index 0000000..5a788a1 --- /dev/null +++ b/database/migrations/2024_11_08_085002_update_detail_penawaran_table.php @@ -0,0 +1,30 @@ +string('no_proposal')->nullable()->after('penawaran_id'); + $table->date('tgl_proposal')->nullable()->after('no_proposal'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('detail_penawaran', function (Blueprint $table) { + $table->dropColumn('no_proposal'); + $table->dropColumn('tgl_proposal'); + }); + } +}; diff --git a/database/migrations/2024_11_12_191108_update_detail_penawaran_log_table.php b/database/migrations/2024_11_12_191108_update_detail_penawaran_log_table.php new file mode 100644 index 0000000..345fd9f --- /dev/null +++ b/database/migrations/2024_11_12_191108_update_detail_penawaran_log_table.php @@ -0,0 +1,30 @@ +string('no_proposal')->nullable()->after('penawaran_id'); + $table->date('tgl_proposal')->nullable()->after('no_proposal'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('detail_penawaran_logs', function (Blueprint $table) { + $table->dropColumn('no_proposal'); + $table->dropColumn('tgl_proposal'); + }); + } +}; diff --git a/module.json b/module.json index 572fe59..be26736 100644 --- a/module.json +++ b/module.json @@ -59,15 +59,7 @@ "attributes": [], "permission": "", "roles": ["administrator", "admin"] - }, - { - "title": "Data Proses Penawaran Ulang", - "path": "tender.prosespenawaranulang", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - } + } ] }, { diff --git a/resources/views/component/detail-jaminan.blade.php b/resources/views/component/detail-jaminan.blade.php index cc5a114..3435775 100644 --- a/resources/views/component/detail-jaminan.blade.php +++ b/resources/views/component/detail-jaminan.blade.php @@ -69,7 +69,7 @@
| No | +KJPP | +No Proposal | +Tanggal Proposal | +Biaya Penawaran | +Upload Penawaran | +Action | +
|---|