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 5d838d0..6c2411f 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,42 @@ $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], + 'details' => isset($request->custom_field[$key]) ? json_encode($request->custom_field[$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 +146,7 @@ $debitur = Debiture::find($id); $validate = $request->validated(); + if ($validate) { try { DB::beginTransaction(); @@ -226,44 +224,60 @@ $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], + 'details' => isset($request->custom_field[$key]) ? json_encode($request->custom_field[$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 +313,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 +340,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 +357,7 @@ 'villages', 'pemilikJaminan', 'hubunganPemilik', - 'legalitas' + 'legalitas', ), ); } @@ -378,12 +394,20 @@ if ($zip->open($zipFilePath, ZipArchive::CREATE) === true) { foreach ($documents as $document) { - $filePath = storage_path('app/public/' . $document->dokumen_jaminan); - if (file_exists($filePath)) { - $zip->addFile($filePath, basename($filePath)); - } else { - // Log or display an error message for missing files - return redirect()->back()->with('error', 'File not found: ' . $filePath); + if($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); + if (file_exists($filePath)) { + $zip->addFile($filePath, basename($filePath)); + } else { + // Log or display an error message for missing files + return redirect()->back()->with('error', 'File not found: ' . $filePath); + } + } } } $zip->close(); @@ -407,7 +431,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')])); } @@ -421,20 +447,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) { @@ -444,12 +469,17 @@ '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, + 'dokumen_nomor' => json_decode( + $detail->dokumen_nomor, + ) ?? $detail->dokumen_nomor, '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, ]; } } @@ -459,15 +489,16 @@ 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, + 'dokumen_nomor' => 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/KJPPController.php b/app/Http/Controllers/KJPPController.php index 4898ab5..d41e077 100644 --- a/app/Http/Controllers/KJPPController.php +++ b/app/Http/Controllers/KJPPController.php @@ -5,8 +5,6 @@ namespace Modules\Lpj\Http\Controllers; use Throwable; use Illuminate\Http\Request; use Modules\Lpj\Models\KJPP; -use Illuminate\Http\Response; -use Modules\Lpj\Models\Branch; use Modules\Location\Models\City; use Modules\Lpj\Models\IjinUsaha; use Modules\Lpj\Exports\KJPPExport; @@ -57,7 +55,101 @@ class KJPPController extends Controller { $validated = $request->validated(); + if ($validated) { + $detailEmailKantor = []; + $detailNamaPimpinan = []; + $detailNomorPicPimpinan = []; + $detailNamaPicReviewer = []; + $detailNomorHpPicReviewer = []; + $detailNamaPicAdmin = []; + $detailNomorHpPicAdmin = []; + $detailNamaPicMarketing = []; + $detailNomorHpPicMarketing = []; + + $emailKantor = $request->input('detail_email_kantor.email_kantor', []); + $namaPimpinan = $request->input('detail_nama_pimpinan.nama_pimpinan', []); + $nomorHpPimpinan = $request->input('detail_nomor_hp_pimpinan.nomor_hp_pimpinan', []); + $namaPicReviewer = $request->input('detail_nama_pic_reviewer.nama_pic_reviewer', []); + $nomorHpPicReviewer = $request->input('detail_nomor_hp_pic_reviewer.nomor_hp_pic_reviewer', []); + $namaPicAdmin = $request->input('detail_nama_pic_admin.nama_pic_admin', []); + $nomorHpPicAdmin = $request->input('detail_nomor_hp_pic_admin.nomor_hp_pic_admin', []); + $namaPicMarketing = $request->input('detail_nama_pic_marketing.nama_pic_marketing', []); + $nomorHpPicMarketing = $request->input('detail_nomor_hp_pic_marketing.nomor_hp_pic_marketing', []); + + foreach ($emailKantor as $value) { + $detailEmailKantor[] = [ + 'email_kantor' => $value + ]; + } + // Encode to JSON and store + $detailEmailKantorJson = json_encode($detailEmailKantor); + + // Process detail_nama_pimpinan + foreach ($namaPimpinan as $value) { + $detailNamaPimpinan[] = [ + 'nama_pimpinan' => $value + ]; + } + $detailNamaPimpinanJson = json_encode($detailNamaPimpinan); + + // Process detail_nomor_pic_pimpinan + foreach ($nomorHpPimpinan as $value) { + $detailNomorPicPimpinan[] = [ + 'nomor_hp_pimpinan' => $value + ]; + } + $detailNomorPicPimpinanJson = json_encode($detailNomorPicPimpinan); + + // Process detail_nama_pic_reviewer + foreach ($namaPicReviewer as $value) { + $detailNamaPicReviewer[] = [ + 'nama_pic_reviewer' => $value + ]; + } + $detailNamaPicReviewerJson = json_encode($detailNamaPicReviewer); + + // Process detail_nomor_hp_pic_reviewer + foreach ($nomorHpPicReviewer as $value) { + $detailNomorHpPicReviewer[] = [ + 'nomor_hp_pic_reviewer' => $value + ]; + } + $detailNomorHpPicReviewerJson = json_encode($detailNomorHpPicReviewer); + + // Process detail_nama_pic_admin + foreach ($namaPicAdmin as $value) { + $detailNamaPicAdmin[] = [ + 'nama_pic_admin' => $value + ]; + } + $detailNamaPicAdminJson = json_encode($detailNamaPicAdmin); + + // Process detail_nomor_hp_pic_admin + foreach ($nomorHpPicAdmin as $value) { + $detailNomorHpPicAdmin[] = [ + 'nomor_hp_pic_admin' => $value + ]; + } + $detailNomorHpPicAdminJson = json_encode($detailNomorHpPicAdmin); + + // Process detail_nama_pic_marketing + foreach ($namaPicMarketing as $value) { + $detailNamaPicMarketing[] = [ + 'nama_pic_marketing' => $value + ]; + } + $detailNamaPicMarketingJson = json_encode($detailNamaPicMarketing); + + // Process detail_nomor_hp_pic_marketing + foreach ($nomorHpPicMarketing as $value) { + $detailNomorHpPicMarketing[] = [ + 'nomor_hp_pic_marketing' => $value + ]; + } + $detailNomorHpPicMarketingJson = json_encode($detailNomorHpPicMarketing); + + $file = $request->file('attachment'); $filename = $file ? time() . '.' . $file->getClientOriginalExtension() : 'default.pdf'; @@ -69,12 +161,22 @@ class KJPPController extends Controller Storage::copy('public/test/default.pdf', 'public/uploads_pdf/' . $filename); } - $validated['ijin_usaha_id'] = json_encode($request->input('ijin_usaha_id')); - $validated['jenis_aset_id'] = json_encode($request->input('jenis_aset_id')); - + $validated['detail_email_kantor'] = $detailEmailKantorJson; + $validated['detail_nama_pimpinan'] = $detailNamaPimpinanJson; + $validated['detail_nomor_hp_pimpinan'] = $detailNomorPicPimpinanJson; + $validated['detail_nama_pic_reviewer'] = $detailNamaPicReviewerJson; + $validated['detail_nomor_hp_pic_reviewer'] = $detailNomorHpPicReviewerJson; + $validated['detail_nama_pic_admin'] = $detailNamaPicAdminJson; + $validated['detail_nomor_hp_pic_admin'] = $detailNomorHpPicAdminJson; + $validated['detail_nama_pic_marketing'] = $detailNamaPicMarketingJson; + $validated['detail_nomor_hp_pic_marketing'] = $detailNomorHpPicMarketingJson; + $validated['ijin_usaha_id'] = json_encode($validated['ijin_usaha_id']); + $validated['jenis_aset_id'] = json_encode($validated['jenis_aset_id']); // Tambahkan nama file ke data yang divalidasi $validated['attachment'] = $filename; + // dd($validated); + // Simpan data ke database KJPP::create($validated); @@ -101,8 +203,46 @@ class KJPPController extends Controller $cities = City::where('code', $kjpp->city_code)->get(); $districts = District::where('code', $kjpp->district_code)->get(); $villages = Village::where('code', $kjpp->village_code)->get(); - // dd($branches); - return view('lpj::kjpp.show', compact('jenis_jaminan', 'ijin_usahas', 'ijin_usaha', 'kjpp', 'provinces', 'cities', 'districts', 'villages')); + $detailEmailKantor = json_decode($kjpp->detail_email_kantor); + $detailNamaPimpinan = json_decode($kjpp->detail_nama_pimpinan); + $detailNomorHpPimpinan = json_decode($kjpp->detail_nomor_hp_pimpinan); + $detailNamaPicReviewer = json_decode($kjpp->detail_nama_pic_reviewer); + $detailNomorHpPicReviewer = json_decode($kjpp->detail_nomor_hp_pic_reviewer); + $detailNamaPicAdmin = json_decode($kjpp->detail_nama_pic_admin); + $detailNomorHpPicAdmin = json_decode($kjpp->detail_nomor_hp_pic_admin); + $detailNamaPicMarketing = json_decode($kjpp->detail_nama_pic_marketing); + $detailNomorHpPicMarketing = json_decode($kjpp->detail_nomor_hp_pic_marketing); + + $detailJoinPimpinan = json_encode(array_map(function ($nama, $nomor) { + return [ + 'nama_pimpinan' => $nama->nama_pimpinan, + 'nomor_hp_pimpinan' => $nomor->nomor_hp_pimpinan + ]; + }, $detailNamaPimpinan, $detailNomorHpPimpinan)); + + + $detailJoinPicReviewer = json_encode(array_map(function ($nama, $nomor) { + return [ + 'nama_pic_reviewer' => $nama->nama_pic_reviewer, + 'nomor_hp_pic_reviewer' => $nomor->nomor_hp_pic_reviewer + ]; + }, $detailNamaPicReviewer, $detailNomorHpPicReviewer)); + + $detailJoinPicAdmin = json_encode(array_map(function ($nama, $nomor) { + return [ + 'nama_pic_admin' => $nama->nama_pic_admin, + 'nomor_hp_pic_admin' => $nomor->nomor_hp_pic_admin + ]; + }, $detailNamaPicAdmin, $detailNomorHpPicAdmin)); + + $detailJoinPicMarketing = json_encode(array_map(function ($nama, $nomor) { + return [ + 'nama_pic_marketing' => $nama->nama_pic_marketing, + 'nomor_hp_pic_marketing' => $nomor->nomor_hp_pic_marketing + ]; + }, $detailNamaPicMarketing, $detailNomorHpPicMarketing)); + + return view('lpj::kjpp.show', compact('jenis_jaminan', 'ijin_usahas', 'ijin_usaha', 'kjpp', 'provinces', 'cities', 'districts', 'villages', 'detailEmailKantor', 'detailJoinPicReviewer', 'detailJoinPicAdmin', 'detailJoinPicMarketing', 'detailJoinPimpinan')); } /** @@ -117,8 +257,49 @@ class KJPPController extends Controller $cities = City::where('province_code', $kjpp->province_code)->get(); $districts = District::where('city_code', $kjpp->city_code)->get(); $villages = Village::where('district_code', $kjpp->district_code)->get(); + $detailEmailKantor = json_decode($kjpp->detail_email_kantor); + $detailNamaPimpinan = json_decode($kjpp->detail_nama_pimpinan); + $detailNomorHpPimpinan = json_decode($kjpp->detail_nomor_hp_pimpinan); + $detailNamaPicReviewer = json_decode($kjpp->detail_nama_pic_reviewer); + $detailNomorHpPicReviewer = json_decode($kjpp->detail_nomor_hp_pic_reviewer); + $detailNamaPicAdmin = json_decode($kjpp->detail_nama_pic_admin); + $detailNomorHpPicAdmin = json_decode($kjpp->detail_nomor_hp_pic_admin); + $detailNamaPicMarketing = json_decode($kjpp->detail_nama_pic_marketing); + $detailNomorHpPicMarketing = json_decode($kjpp->detail_nomor_hp_pic_marketing); - return view('lpj::kjpp.create', compact('kjpp', 'ijin_usaha', 'jenis_aset', 'provinces', 'cities', 'districts', 'villages')); + // dd($detailNamaPimpinan); + + $detailJoinPimpinan = json_encode(array_map(function ($nama, $nomor) { + return [ + 'nama_pimpinan' => $nama->nama_pimpinan, + 'nomor_hp_pimpinan' => $nomor->nomor_hp_pimpinan + ]; + }, $detailNamaPimpinan, $detailNomorHpPimpinan)); + + // dd($detailJoinPimpinan); + + $detailJoinPicReviewer = json_encode(array_map(function ($nama, $nomor) { + return [ + 'nama_pic_reviewer' => $nama->nama_pic_reviewer, + 'nomor_hp_pic_reviewer' => $nomor->nomor_hp_pic_reviewer + ]; + }, $detailNamaPicReviewer, $detailNomorHpPicReviewer)); + + $detailJoinPicAdmin = json_encode(array_map(function ($nama, $nomor) { + return [ + 'nama_pic_admin' => $nama->nama_pic_admin, + 'nomor_hp_pic_admin' => $nomor->nomor_hp_pic_admin + ]; + }, $detailNamaPicAdmin, $detailNomorHpPicAdmin)); + + $detailJoinPicMarketing = json_encode(array_map(function ($nama, $nomor) { + return [ + 'nama_pic_marketing' => $nama->nama_pic_marketing, + 'nomor_hp_pic_marketing' => $nomor->nomor_hp_pic_marketing + ]; + }, $detailNamaPicMarketing, $detailNomorHpPicMarketing)); + + return view('lpj::kjpp.create', compact('kjpp', 'ijin_usaha', 'jenis_aset', 'provinces', 'cities', 'districts', 'villages', 'detailJoinPicReviewer', 'detailJoinPicAdmin', 'detailJoinPicMarketing', 'detailEmailKantor', 'detailJoinPimpinan')); } /** @@ -128,7 +309,102 @@ class KJPPController extends Controller { $validated = $request->validated(); + // dd($validated); + if ($validated) { + $detailEmailKantor = []; + $detailNamaPimpinan = []; + $detailNomorHpPimpinan = []; + $detailNamaPicReviewer = []; + $detailNomorHpPicReviewer = []; + $detailNamaPicAdmin = []; + $detailNomorHpPicAdmin = []; + $detailNamaPicMarketing = []; + $detailNomorHpPicMarketing = []; + + $emailKantor = $request->input('detail_email_kantor.email_kantor', []); + $namaPimpinan = $request->input('detail_nama_pimpinan.nama_pimpinan', []); + $nomorHpPimpinan = $request->input('detail_nomor_hp_pimpinan.nomor_hp_pimpinan', []); + $namaPicReviewer = $request->input('detail_nama_pic_reviewer.nama_pic_reviewer', []); + $nomorHpPicReviewer = $request->input('detail_nomor_hp_pic_reviewer.nomor_hp_pic_reviewer', []); + $namaPicAdmin = $request->input('detail_nama_pic_admin.nama_pic_admin', []); + $nomorHpPicAdmin = $request->input('detail_nomor_hp_pic_admin.nomor_hp_pic_admin', []); + $namaPicMarketing = $request->input('detail_nama_pic_marketing.nama_pic_marketing', []); + $nomorHpPicMarketing = $request->input('detail_nomor_hp_pic_marketing.nomor_hp_pic_marketing', []); + + foreach ($emailKantor as $value) { + $detailEmailKantor[] = [ + 'email_kantor' => $value + ]; + } + // Encode to JSON and store + $detailEmailKantorJson = json_encode($detailEmailKantor); + + // Process detail_nama_pimpinan + foreach ($namaPimpinan as $value) { + $detailNamaPimpinan[] = [ + 'nama_pimpinan' => $value + ]; + } + $detailNamaPimpinanJson = json_encode($detailNamaPimpinan); + + // Process detail_nomor_hp_pimpinan + foreach ($nomorHpPimpinan as $value) { + $detailNomorHpPimpinan[] = [ + 'nomor_hp_pimpinan' => $value + ]; + } + $detailNomorHpPimpinanJson = json_encode($detailNomorHpPimpinan); + + // Process detail_nama_pic_reviewer + foreach ($namaPicReviewer as $value) { + $detailNamaPicReviewer[] = [ + 'nama_pic_reviewer' => $value + ]; + } + $detailNamaPicReviewerJson = json_encode($detailNamaPicReviewer); + + // Process detail_nomor_hp_pic_reviewer + foreach ($nomorHpPicReviewer as $value) { + $detailNomorHpPicReviewer[] = [ + 'nomor_hp_pic_reviewer' => $value + ]; + } + $detailNomorHpPicReviewerJson = json_encode($detailNomorHpPicReviewer); + + // Process detail_nama_pic_admin + foreach ($namaPicAdmin as $value) { + $detailNamaPicAdmin[] = [ + 'nama_pic_admin' => $value + ]; + } + $detailNamaPicAdminJson = json_encode($detailNamaPicAdmin); + + // Process detail_nomor_hp_pic_admin + foreach ($nomorHpPicAdmin as $value) { + $detailNomorHpPicAdmin[] = [ + 'nomor_hp_pic_admin' => $value + ]; + } + $detailNomorHpPicAdminJson = json_encode($detailNomorHpPicAdmin); + + // Process detail_nama_pic_marketing + foreach ($namaPicMarketing as $value) { + $detailNamaPicMarketing[] = [ + 'nama_pic_marketing' => $value + ]; + } + $detailNamaPicMarketingJson = json_encode($detailNamaPicMarketing); + + // Process detail_nomor_hp_pic_marketing + foreach ($nomorHpPicMarketing as $value) { + $detailNomorHpPicMarketing[] = [ + 'nomor_hp_pic_marketing' => $value + ]; + } + $detailNomorHpPicMarketingJson = json_encode($detailNomorHpPicMarketing); + + $file = $request->file('attachment'); $filename = $file ? time() . '.' . $file->getClientOriginalExtension() : null; @@ -148,6 +424,18 @@ class KJPPController extends Controller $validated['attachment'] = $kjpp->attachment ?? 'default.pdf'; } + $validated['detail_email_kantor'] = $detailEmailKantorJson; + $validated['detail_nama_pimpinan'] = $detailNamaPimpinanJson; + $validated['detail_nomor_hp_pimpinan'] = $detailNomorHpPimpinanJson; + $validated['detail_nama_pic_reviewer'] = $detailNamaPicReviewerJson; + $validated['detail_nomor_hp_pic_reviewer'] = $detailNomorHpPicReviewerJson; + $validated['detail_nama_pic_admin'] = $detailNamaPicAdminJson; + $validated['detail_nomor_hp_pic_admin'] = $detailNomorHpPicAdminJson; + $validated['detail_nama_pic_marketing'] = $detailNamaPicMarketingJson; + $validated['detail_nomor_hp_pic_marketing'] = $detailNomorHpPicMarketingJson; + $validated['ijin_usaha_id'] = json_encode($validated['ijin_usaha_id']); + $validated['jenis_aset_id'] = json_encode($validated['jenis_aset_id']); + // Perbarui data di database KJPP::where('id', $id)->update($validated); @@ -189,8 +477,8 @@ class KJPPController extends Controller //abort(403, 'Sorry! You are not allowed to view users.'); } - // Retrieve data from the database - $query = KJPP::query(); + // Retrieve data from the database order by code ascending + $query = KJPP::query()->orderBy('code', 'asc'); // Apply search filter if provided if ($request->has('search') && !empty($request->get('search'))) { diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index e1ff600..3a0956d 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -21,10 +21,17 @@ use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\StatusPermohonan; use Modules\Lpj\Models\TujuanPenilaian; + use Modules\Lpj\Services\PermohonanHistoryService; class PermohonanController extends Controller { public $user; + protected $historyService; + + public function __construct(PermohonanHistoryService $historyService) + { + $this->historyService = $historyService; + } public function index() { @@ -36,8 +43,30 @@ $validate = $request->validated(); if ($validate) { try { + // Process file upload + $filePath = null; + if ($request->hasFile('attachment')) { + $file = $request->file('attachment'); + $fileName = time() . '_' . $file->getClientOriginalName(); + $filePath = $file->storeAs('permohonan_attachments', $fileName, 'public'); + } + + // Get keterangan if provided + $keterangan = $request->input('keterangan') ?? null; + + // Save to database - Permohonan::create($validate); + $permohonan = Permohonan::create($validate); + + // Create history + $this->historyService->createHistory( + $permohonan, + $validate['status'], + $keterangan, + [], // beforeRequest is empty for new permohonan + $permohonan->toArray(), + $filePath + ); return redirect() ->route('permohonan.index')->with('success', 'Permohonan created successfully'); } catch (Exception $e) { @@ -107,16 +136,41 @@ public function update(PermohonanRequest $request, $id) { - $validate = $request->validated(); + $permohonan = Permohonan::findOrFail($id); + $beforeRequest = $permohonan->toArray(); + $validate = $request->validated(); if ($validate) { try { // Update in database - $permohonan = Permohonan::find($id); + if ($permohonan->status == 'revisi') { $validate['status'] = 'order'; } + $permohonan->update($validate); + + $afterRequest = $permohonan->fresh()->toArray(); + // Process file upload + $file = null; + if ($request->hasFile('attachment')) { + $file = $request->file('attachment'); + } + + // Get keterangan if provided + $keterangan = $request->input('keterangan') ?? null; + + $status =$validate['status'] ?? $permohonan->status; + + $this->historyService->createHistory( + $permohonan, + $status, + $keterangan, + $beforeRequest, + $afterRequest, + $file + ); + return redirect() ->route('permohonan.index')->with('success', 'Permohonan updated successfully'); } catch (Exception $e) { 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/RegistrasiController.php b/app/Http/Controllers/RegistrasiController.php index adc0f3e..99e5f4f 100644 --- a/app/Http/Controllers/RegistrasiController.php +++ b/app/Http/Controllers/RegistrasiController.php @@ -167,6 +167,8 @@ $dataku['jenis_penilaian_id'] =$request->jenis_penilaian; $dataku['region_id'] =$request->region; $dataku['status'] = 'registered'; + if($request->catatan2) + $dataku['registrasi_catatan'] =$request->catatan2; } else { diff --git a/app/Http/Controllers/RegistrasiFinalController.php b/app/Http/Controllers/RegistrasiFinalController.php index 2561079..c82c2e6 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 Modules\Lpj\Models\PenawaranTender; class RegistrasiFinalController extends Controller { @@ -46,19 +46,20 @@ use Modules\Lpj\Models\PenawaranTender; } // Retrieve data from the database - $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'))) { $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 . '%'); }); } @@ -84,30 +85,28 @@ use Modules\Lpj\Models\PenawaranTender; // 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(); + $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++; @@ -128,14 +127,20 @@ use Modules\Lpj\Models\PenawaranTender; 'pageCount' => $pageCount, 'page' => $currentPage, 'totalCount' => $totalRecords, - 'data' => $data + 'data' => $data, ]); } public function show($id) { - $permohonan = Permohonan::find($id); - return view('lpj::registrasifinal.show', compact('id','permohonan')); + $permohonan = Permohonan::find($id); + if ($permohonan->dokumen) { + $pdfSPK_path = Storage::url($permohonan->dokumen); + $permohonan->dokumen = $pdfSPK_path; + $permohonan->dokumen = '| Dokumen SPK.pdf   '; + } + + return view('lpj::registrasifinal.show', compact('id', 'permohonan')); } public function edit($id) @@ -143,123 +148,123 @@ use Modules\Lpj\Models\PenawaranTender; return view('lpj::registrasifinal.edit', compact('id')); } - public function setData(Request $request): JsonResponse - { - $data = array(); - $datas = array(); + public function setData(Request $request) + : JsonResponse { + $data = []; + $datas = []; if (request()->ajax()) { - $id = $request->id; + $id = $request->id; $datas = Permohonan::find($id); - + if ($datas) { - $penawaran=null; - $regions=null; - $regions=Regions::pluck('name', 'id'); - $penawaran = PenawaranTender::where('nomor_registrasi','=',$datas->nomor_registrasi)->first(); + $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; - } + } - $data['status'] = 'success'; - $data['regions'] = $regions; - $data['penawaran'] = $penawaran; - $data['datas'] = $datas; - $data['message']['message_success'] = array("data successfully found"); + 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'] = ["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']; - + $permohonan = Permohonan::find($id); - $penawaran = PenawaranTender::where('nomor_registrasi','=',$permohonan->nomor_registrasi)->first(); - + $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/Http/Controllers/SpkController.php b/app/Http/Controllers/SpkController.php index ec96a62..ee191db 100644 --- a/app/Http/Controllers/SpkController.php +++ b/app/Http/Controllers/SpkController.php @@ -4,7 +4,7 @@ namespace Modules\Lpj\Http\Controllers; use Carbon\Carbon; use App\Http\Controllers\Controller; -use Barryvdh\DomPDF\Facade\Pdf; +use Barryvdh\DomPDF\Facade\Pdf; // https://github.com/barryvdh/laravel-dompdf use Exception; use Illuminate\Http\Request; use Maatwebsite\Excel\Facades\Excel; @@ -34,19 +34,16 @@ use Illuminate\Support\Facades\Auth; } // Retrieve data from the database - $query =Permohonan::query() - ->leftJoin('penawaran', 'penawaran.nomor_registrasi','=','permohonan.nomor_registrasi') - ->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id','=','penawaran.tujuan_penilaian_kjpp_id') - ->where('permohonan.status','=','spk') - ->select('penawaran.*', 'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name', 'permohonan.dokumen as dokumenSPK'); - + $query =Permohonan::query()->with(['penawaran','penawaran.tujuanPenilaianKjpp']) + ->where('permohonan.status','=','spk'); + // 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('penawaran.tanggal_permohonan', 'LIKE', '%' . $search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search . '%'); }); } @@ -72,12 +69,12 @@ use Illuminate\Support\Facades\Auth; // 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(); - + $i=0; foreach($data as $obj) { @@ -85,18 +82,26 @@ use Illuminate\Support\Facades\Auth; { $data[$i]->tanggal_penilaian_sebelumnya = Carbon::parse($obj->tanggal_penilaian_sebelumnya)->format('d F Y H:i:s'); } - + 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'); - + + } + + // data dokumen_spk + if($obj->dokumen) + { + $spkpenawaran_path = Storage::url($obj->dokumen); + // dd($spkpenawaran_path); + $data[$i]->dokumen = $spkpenawaran_path; } $i++; @@ -137,25 +142,25 @@ use Illuminate\Support\Facades\Auth; public function edit($id) { $penawaran = PenawaranTender::leftJoin('detail_penawaran', 'detail_penawaran.penawaran_id','=','penawaran.id') - ->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id') - ->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id') + ->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id') + ->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id') ->where('detail_penawaran.status','=',1) ->where('penawaran.id','=', $id) - ->select('penawaran.*', 'detail_penawaran.attachment as attachmentku', + ->select('penawaran.*', 'detail_penawaran.attachment as attachmentku', 'detail_penawaran.biaya_penawaran as detail_penawaran_biaya_penawaran', 'kjpp.name as kjpp_name', 'kjpp.address as kjpp_address', 'jenis_laporan.name as jenis_laporan_name' )->first(); - + $permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi) ->leftJoin('dokumen_jaminan', 'dokumen_jaminan.permohonan_id','=','permohonan.id') ->leftJoin('jenis_jaminan', 'jenis_jaminan.id','=','dokumen_jaminan.jenis_jaminan_id') - ->select('permohonan.*', 'jenis_jaminan.name as jenis_jaminan_name', + ->select('permohonan.*', 'jenis_jaminan.name as jenis_jaminan_name', 'dokumen_jaminan.address as dokumen_jaminan_address'); - + $data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->first(); - + return view('lpj::spk.edit', compact('data', 'penawaran')); } @@ -165,30 +170,30 @@ use Illuminate\Support\Facades\Auth; $data1 = array(); $dataPermohonan = array(); // data - + $penawaran = PenawaranTender::leftJoin('detail_penawaran', 'detail_penawaran.penawaran_id','=','penawaran.id') - ->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id') - ->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id') + ->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id') + ->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id') ->where('detail_penawaran.status','=',1) ->where('penawaran.id','=', $id) - ->select('penawaran.*', 'detail_penawaran.attachment as attachmentku', + ->select('penawaran.*', 'detail_penawaran.attachment as attachmentku', 'kjpp.name as kjpp_name', 'kjpp.address as kjpp_address', 'jenis_laporan.name as jenis_laporan_name' )->first(); - + $permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi) ->leftJoin('dokumen_jaminan', 'dokumen_jaminan.permohonan_id','=','permohonan.id') ->leftJoin('jenis_jaminan', 'jenis_jaminan.id','=','dokumen_jaminan.jenis_jaminan_id') ->select('permohonan.*', 'jenis_jaminan.name as jenis_jaminan_name'); $data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->first(); - + $folderPath = 'uploads/spk/'; $extension = '.pdf'; $newFileName = "SPK_".$penawaran->nomor_registrasi."_".Auth::user()->id."_".time(). $extension; $newFileNameWithPath = $folderPath . $newFileName; - + // update table permohonan $dataPermohonan=['dokumen' => $newFileNameWithPath]; $data->update($dataPermohonan); @@ -210,29 +215,35 @@ use Illuminate\Support\Facades\Auth; } public function dokumennya() - { + { // return view('lpj::spk.dokumennya'); $id="3"; $penawaran = PenawaranTender::leftJoin('detail_penawaran', 'detail_penawaran.penawaran_id','=','penawaran.id') - ->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id') - ->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id') + ->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id') + ->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id') ->where('detail_penawaran.status','=',1) ->where('penawaran.id','=', $id) - ->select('penawaran.*', 'detail_penawaran.attachment as attachmentku', + ->select('penawaran.*', 'detail_penawaran.attachment as attachmentku', 'detail_penawaran.biaya_penawaran as detail_penawaran_biaya_penawaran', 'kjpp.name as kjpp_name', 'kjpp.address as kjpp_address', 'jenis_laporan.name as jenis_laporan_name' )->first(); - + $permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi) ->leftJoin('dokumen_jaminan', 'dokumen_jaminan.permohonan_id','=','permohonan.id') ->leftJoin('jenis_jaminan', 'jenis_jaminan.id','=','dokumen_jaminan.jenis_jaminan_id') - ->select('permohonan.*', 'jenis_jaminan.name as jenis_jaminan_name', + ->select('permohonan.*', 'jenis_jaminan.name as jenis_jaminan_name', 'dokumen_jaminan.address as dokumen_jaminan_address'); - + $data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->first(); - + return view('lpj::spk.dokumennya', compact('data', 'penawaran')); } + + public function download($id) { + $document = Permohonan::find($id); + + return response()->download(storage_path('app/public/' .$document->dokumen)); + } } diff --git a/app/Http/Requests/KJPPRequest.php b/app/Http/Requests/KJPPRequest.php index e3e6fe4..dedf16d 100644 --- a/app/Http/Requests/KJPPRequest.php +++ b/app/Http/Requests/KJPPRequest.php @@ -3,7 +3,6 @@ namespace Modules\Lpj\Http\Requests; use Illuminate\Foundation\Http\FormRequest; -use daengdeni\LaravelIdGenerator\IdGenerator; class KJPPRequest extends FormRequest { @@ -17,21 +16,30 @@ class KJPPRequest extends FormRequest 'jenis_kantor' => 'required', 'nomor_ijin_usaha' => 'required', 'province_code' => 'required', - 'city_code' => 'required', - 'district_code' => 'required', - 'village_code' => 'required', + 'city_code' => 'nullable', + 'district_code' => 'nullable', + 'village_code' => 'nullable', 'address' => 'required', - 'postal_code' => 'required|numeric', - 'nomor_telepon_kantor' => 'required|numeric|digits_between:8,15', + 'postal_code' => 'nullable|numeric', + 'nomor_telepon_kantor' => 'nullable|numeric|digits_between:8,15', 'email_kantor' => 'required|email', + 'detail_email_kantor' => 'nullable', 'nama_pimpinan' => 'required|string|not_regex:/^\d+$/|max:255', + 'detail_nama_pimpinan' => 'nullable', 'nomor_hp_pimpinan' => 'required|numeric|digits_between:10,15', - 'nama_pic_reviewer' => 'required|string|not_regex:/^\d+$/|max:255', - 'nomor_hp_pic_reviewer' => 'required|numeric|digits_between:10,15', - 'nama_pic_admin' => 'required|string|not_regex:/^\d+$/|max:255', - 'nomor_hp_pic_admin' => 'required|numeric|digits_between:10,15', - 'nama_pic_marketing' => 'required|string|not_regex:/^\d+$/|max:255', - 'nomor_hp_pic_marketing' => 'required|numeric|digits_between:10,15', + 'detail_nomor_pic_pimpinan' => 'nullable', + 'nama_pic_reviewer' => 'nullable|string|not_regex:/^\d+$/|max:255', + 'detail_nama_pic_reviewer' => 'nullable', + 'nomor_hp_pic_reviewer' => 'nullable|numeric|digits_between:10,15', + 'detail_nomor_hp_pic_reviewer' => 'nullable', + 'nama_pic_admin' => 'nullable|string|not_regex:/^\d+$/|max:255', + 'detail_nama_pic_admin' => 'nullable', + 'nomor_hp_pic_admin' => 'nullable|numeric|digits_between:10,15', + 'detail_nomor_hp_pic_admin' => 'nullable', + 'nama_pic_marketing' => 'nullable|string|not_regex:/^\d+$/|max:255', + 'detail_nama_pic_marketing' => 'nullable', + 'nomor_hp_pic_marketing' => 'nullable|numeric|digits_between:10,15', + 'detail_nomor_hp_pic_marketing' => 'nullable', 'ijin_usaha_id' => 'required|array', 'ijin_usaha_id.*' => 'exists:ijin_usaha,code', 'jenis_aset_id' => 'required|array', @@ -69,13 +77,8 @@ class KJPPRequest extends FormRequest 'nomor_ijin_usaha.required' => 'Nomor Ijin Usaha Wajib diisi!', 'nomor_ijin_usaha.max' => 'Nomor Ijin Usaha maksimal 255 huruf!', 'province_code.required' => 'Provinsi Wajib diisi!', - 'city_code.required' => 'Kota / Kabupaten Wajib diisi!', - 'district_code.required' => 'Kecamatan Wajib diisi!', - 'village_code.required' => 'Kelurahan Wajib diisi!', - 'postal_code.required' => 'Kode Pos Wajib diisi!', 'postal_code.numeric' => 'Kode Pos harus berupa angka!', 'address.required' => 'Alamat Kantor Wajib diisi!', - 'nomor_telepon_kantor.required' => 'Nomor Telepon Kantor Wajib diisi!', 'nomor_telepon_kantor.numeric' => 'Nomor Telepon Kantor harus berupa angka!', 'nomor_telepon_kantor.digits_between' => 'Nomor Telepon Kantor minimum 8 digit dan maksimum 15 digit!', 'email_kantor.required' => 'Email Kantor Wajib diisi!', @@ -85,25 +88,17 @@ class KJPPRequest extends FormRequest 'nomor_hp_pimpinan.required' => 'Nomor HP Pimpinan Wajib diisi!', 'nomor_hp_pimpinan.numeric' => 'Nomor HP Pimpinan harus berupa angka!', 'nomor_hp_pimpinan.digits_between' => 'Nomor HP Pimpinan minimum 10 digit dan maksimum 15 digit!', - 'nama_pic_reviewer.required' => 'Nama PIC Reviewer Wajib diisi!', 'nama_pic_reviewer.not_regex' => 'Nama PIC Reviewer harus berupa huruf!', - 'nomor_hp_pic_reviewer.required' => 'Nomor HP PIC Reviewer Wajib diisi!', 'nomor_hp_pic_reviewer.numeric' => 'Nomor HP PIC Reviewer harus berupa angka!', 'nomor_hp_pic_reviewer.digits_between' => 'Nomor HP PIC Reviewer minimum 10 digit dan maksimum 15 digit!', - 'nama_pic_admin.required' => 'Nama PIC Admin Wajib diisi!', 'nama_pic_admin.not_regex' => 'Nama PIC Admin harus berupa huruf!', - 'nomor_hp_pic_admin.required' => 'Nomor HP PIC Admin Wajib diisi!', 'nomor_hp_pic_admin.numeric' => 'Nomor HP PIC Admin harus berupa angka!', 'nomor_hp_pic_admin.digits_between' => 'Nomor HP PIC Admin minimum 10 digit dan maksimum 15 digit!', - 'nama_pic_marketing.required' => 'Nama PIC Marketing Wajib diisi!', 'nama_pic_marketing.not_regex' => 'Nama PIC Marketing harus berupa huruf!', - 'nomor_hp_pic_marketing.required' => 'Nomor HP PIC Marketing Wajib diisi!', 'nomor_hp_pic_marketing.numeric' => 'Nomor HP PIC Marketing harus berupa angka!', 'nomor_hp_pic_marketing.digits_between' => 'Nomor HP PIC Marketing minimum 10 digit dan maksimum 15 digit!', 'ijin_usaha_id.required' => 'Ijin Usaha Wajib diisi!', - 'ijin_usaha_id.min' => 'Ijin Usaha Wajib diisi minimal satu atau lebih!', 'jenis_aset_id.required' => 'Jenis Aset Wajib diisi!', - 'jenis_aset_id.min' => 'Jenis Aset Wajib diisi minimal satu atau lebih!', 'attachment.mimes' => 'Attachment harus berformat pdf!', 'attachment.max' => 'Attachment berukuran maksimum 1 MB!', ]; diff --git a/app/Http/Requests/PermohonanRequest.php b/app/Http/Requests/PermohonanRequest.php index 1919029..3f2f252 100644 --- a/app/Http/Requests/PermohonanRequest.php +++ b/app/Http/Requests/PermohonanRequest.php @@ -17,7 +17,7 @@ 'nomor_registrasi' => 'nullable|string|max:10', 'tanggal_permohonan' => 'nullable|date', 'user_id' => 'nullable|exists:users,id', - 'branch_id' => 'required|exists:branches,id', + 'branch_id' => 'nullable|exists:branches,id', 'tujuan_penilaian_id' => 'required|exists:tujuan_penilaian,id', 'debiture_id' => 'required|exists:debitures,id', 'status' => 'nullable|string', @@ -49,6 +49,7 @@ 'tanggal_permohonan' => date('Y-m-d'), 'user_id' => auth()->user()->id, 'branch_id' => auth()->user()->branch_id, + 'status' => 'order' ]); } } 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/app/Models/KJPP.php b/app/Models/KJPP.php index 426d940..b9f2e34 100644 --- a/app/Models/KJPP.php +++ b/app/Models/KJPP.php @@ -18,29 +18,5 @@ class KJPP extends Model /** * The attributes that are mass assignable. */ - protected $fillable = [ - 'code', - 'name', - 'jenis_kantor', - 'nomor_ijin_usaha', - 'province_code', - 'city_code', - 'district_code', - 'village_code', - 'address', - 'postal_code', - 'nomor_telepon_kantor', - 'email_kantor', - 'nama_pimpinan', - 'nomor_hp_pimpinan', - 'nama_pic_reviewer', - 'nomor_hp_pic_reviewer', - 'nama_pic_admin', - 'nomor_hp_pic_admin', - 'nama_pic_marketing', - 'nomor_hp_pic_marketing', - 'ijin_usaha_id', - 'jenis_aset_id', - 'attachment' - ]; + protected $guarded = ['id']; } diff --git a/app/Models/PenawaranTender.php b/app/Models/PenawaranTender.php index 4ae1496..c78d00e 100644 --- a/app/Models/PenawaranTender.php +++ b/app/Models/PenawaranTender.php @@ -32,9 +32,9 @@ class PenawaranTender extends Model } // menambahkan relasi tujuan penilaian KJPP - public function tujuanPenilaianKJPP() + public function tujuanPenilaianKjpp() { - return $this->hasMany(TujuanPenilaianKJPP::class, 'id', 'tujuan_penilaian_kjpp_id'); + return $this->belongsTo(TujuanPenilaianKJPP::class, 'tujuan_penilaian_kjpp_id','id'); } public function permohonan() @@ -46,4 +46,6 @@ class PenawaranTender extends Model { return $this->belongsTo(JenisLaporan::class, 'jenis_laporan_id', 'id'); } + + } diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index 6449ecf..1dd7bdd 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -89,4 +89,8 @@ class Permohonan extends Base { return $this->belongsTo(Regions::class, 'region_id'); } + + public function penawaran(){ + return $this->belongsTo(PenawaranTender::class, 'nomor_registrasi', 'nomor_registrasi'); + } } diff --git a/app/Models/PermohonanHistory.php b/app/Models/PermohonanHistory.php new file mode 100644 index 0000000..2b58a8f --- /dev/null +++ b/app/Models/PermohonanHistory.php @@ -0,0 +1,31 @@ +belongsTo(Permohonan::class); + } + + public function user() + { + return $this->belongsTo(User::class); + } +} diff --git a/app/Services/PermohonanHistoryService.php b/app/Services/PermohonanHistoryService.php new file mode 100644 index 0000000..783d41b --- /dev/null +++ b/app/Services/PermohonanHistoryService.php @@ -0,0 +1,43 @@ +store('permohonan_history_files', 'public'); + } + + + try { + $history = PermohonanHistory::create([ + 'permohonan_id' => $permohonan->id, + 'status' => $status, + 'keterangan' => $keterangan, + 'before_request' => json_encode($beforeRequest), + 'after_request' => json_encode($afterRequest), + 'file_path' => $filePath, + 'user_id' => auth()->id(), + ]); + + } catch (\Exception $e) { + // Log the error + \Log::error('Error creating PermohonanHistory: ' . $e->getMessage()); + + // You might want to delete the uploaded file if the database operation fails + if ($filePath) { + \Storage::disk('public')->delete($filePath); + } + + // Rethrow the exception or handle it as per your application's error handling policy + throw new \Exception('Failed to create PermohonanHistory: ' . $e->getMessage()); + } + } +} diff --git a/database/migrations/2024_09_18_084905_create_kjpp_table.php b/database/migrations/2024_09_18_084905_create_kjpp_table.php index 387af1f..0539cf6 100644 --- a/database/migrations/2024_09_18_084905_create_kjpp_table.php +++ b/database/migrations/2024_09_18_084905_create_kjpp_table.php @@ -18,23 +18,30 @@ return new class extends Migration $table->string('jenis_kantor'); $table->string('nomor_ijin_usaha'); $table->string('province_code'); - $table->string('city_code'); - $table->string('district_code'); - $table->string('village_code'); + $table->string('city_code')->nullable(); + $table->string('district_code')->nullable(); + $table->string('village_code')->nullable(); $table->string('address'); - $table->string('postal_code'); - $table->string('nomor_telepon_kantor'); + $table->string('postal_code')->nullable(); + $table->string('nomor_telepon_kantor')->nullable(); $table->string('email_kantor'); + $table->string('detail_email_kantor')->nullable(); $table->string('nama_pimpinan'); $table->string('nomor_hp_pimpinan'); - $table->string('nama_pic_reviewer'); - $table->string('nomor_hp_pic_reviewer'); - $table->string('nama_pic_admin'); - $table->string('nomor_hp_pic_admin'); - $table->string('nama_pic_marketing'); - $table->string('nomor_hp_pic_marketing'); - $table->string('ijin_usaha_id')->nullable(); - $table->string('jenis_aset_id')->nullable(); + $table->string('nama_pic_reviewer')->nullable(); + $table->string('detail_nama_pic_reviewer')->nullable(); + $table->string('nomor_hp_pic_reviewer')->nullable(); + $table->string('detail_nomor_hp_pic_reviewer')->nullable(); + $table->string('nama_pic_admin')->nullable(); + $table->string('detail_nama_pic_admin')->nullable(); + $table->string('nomor_hp_pic_admin')->nullable(); + $table->string('detail_nomor_hp_pic_admin')->nullable(); + $table->string('nama_pic_marketing')->nullable(); + $table->string('detail_nama_pic_marketing')->nullable(); + $table->string('nomor_hp_pic_marketing')->nullable(); + $table->string('detail_nomor_hp_pic_marketing')->nullable(); + $table->string('ijin_usaha_id'); + $table->string('jenis_aset_id'); $table->string('attachment')->nullable(); $table->boolean('status')->default(true)->nullable(); $table->char('authorized_status', 1)->nullable(); 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_10_31_032940_create_penilai_team_table.php b/database/migrations/2024_11_08_081149_create_permohonan_histories_table.php similarity index 54% rename from database/migrations/2024_10_31_032940_create_penilai_team_table.php rename to database/migrations/2024_11_08_081149_create_permohonan_histories_table.php index fe4f80e..7f55b5d 100644 --- a/database/migrations/2024_10_31_032940_create_penilai_team_table.php +++ b/database/migrations/2024_11_08_081149_create_permohonan_histories_table.php @@ -4,20 +4,22 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -return new class () extends Migration { +return new class extends Migration +{ /** * Run the migrations. */ public function up(): void { - Schema::create('penilaian_team', function (Blueprint $table) { + Schema::create('permohonan_histories', function (Blueprint $table) { $table->id(); - $table->unsignedBigInteger('penilaian_id'); - $table->unsignedBigInteger('team_id'); + $table->unsignedBigInteger('permohonan_id'); + $table->string('status'); + $table->text('keterangan')->nullable(); + $table->json('before_request')->nullable(); + $table->json('after_request')->nullable(); + $table->string('file_path')->nullable(); $table->unsignedBigInteger('user_id')->nullable(); - $table->string('role'); - $table->boolean('status')->default(true); - $table->char('authorized_status', 1)->nullable(); $table->timestamps(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); @@ -25,6 +27,9 @@ return new class () extends Migration { $table->unsignedBigInteger('created_by')->nullable(); $table->unsignedBigInteger('updated_by')->nullable(); $table->unsignedBigInteger('deleted_by')->nullable(); + + $table->foreign('permohonan_id')->references('id')->on('permohonan')->onDelete('cascade'); + $table->foreign('user_id')->references('id')->on('users')->onDelete('set null'); }); } @@ -33,6 +38,6 @@ return new class () extends Migration { */ public function down(): void { - Schema::dropIfExists('penilai_team'); + Schema::dropIfExists('permohonan_histories'); } }; 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_11_063934_update_kjpp_table.php b/database/migrations/2024_11_11_063934_update_kjpp_table.php new file mode 100644 index 0000000..6237a41 --- /dev/null +++ b/database/migrations/2024_11_11_063934_update_kjpp_table.php @@ -0,0 +1,30 @@ +string('detail_nama_pimpinan')->nullable()->after('nama_pimpinan'); + $table->string('detail_nomor_hp_pimpinan')->nullable()->after('nomor_hp_pimpinan'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('kjpp', function (Blueprint $table) { + $table->dropColumn('detail_nama_pimpinan'); + $table->dropColumn('detail_nomor_hp_pimpinan'); + }); + } +}; 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/database/migrations/2024_11_13_101804_create_penilaian_team_table.php b/database/migrations/2024_11_13_101804_create_penilaian_team_table.php new file mode 100644 index 0000000..30005af --- /dev/null +++ b/database/migrations/2024_11_13_101804_create_penilaian_team_table.php @@ -0,0 +1,38 @@ +id(); + $table->unsignedBigInteger('penilaian_id'); + $table->unsignedBigInteger('team_id'); + $table->unsignedBigInteger('user_id')->nullable(); + $table->string('role'); + $table->boolean('status')->default(true); + $table->char('authorized_status', 1)->nullable(); + $table->timestamps(); + $table->timestamp('authorized_at')->nullable(); + $table->unsignedBigInteger('authorized_by')->nullable(); + $table->softDeletes(); + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('penilaian_team'); + } + }; diff --git a/database/seeders/JenisLegalitasJaminanSeeder.php b/database/seeders/JenisLegalitasJaminanSeeder.php index fa45d3a..516614c 100644 --- a/database/seeders/JenisLegalitasJaminanSeeder.php +++ b/database/seeders/JenisLegalitasJaminanSeeder.php @@ -17,6 +17,8 @@ class JenisLegalitasJaminanSeeder extends Seeder 'code' => 'JLJ001', 'name' => 'Sertifikat', 'slug' => 'sertifikat', + 'custom_field' => 'Luas Tanah', + 'custom_field_type' => 'number', 'status' => 1, 'created_at' => now(), 'updated_at' => now(), @@ -29,6 +31,8 @@ class JenisLegalitasJaminanSeeder extends Seeder 'code' => 'JLJ002', 'name' => 'SHGB', 'slug' => 'shgb', + 'custom_field' => null, + 'custom_field_type' => null, 'status' => 1, 'created_at' => now(), 'updated_at' => now(), @@ -41,6 +45,8 @@ class JenisLegalitasJaminanSeeder extends Seeder 'code' => 'JLJ003', 'name' => 'Copy PBB / NJOP Tahun Terakhir (Jika Ada)', 'slug' => 'copy-pbb-njop-tahun-terakhir-jika-ada', + 'custom_field' => null, + 'custom_field_type' => null, 'status' => 1, 'created_at' => now(), 'updated_at' => now(), @@ -53,6 +59,8 @@ class JenisLegalitasJaminanSeeder extends Seeder 'code' => 'JLJ004', 'name' => 'Copy NPWP Perusahaan/Perorangan', 'slug' => 'copy-npwp-perusahaanperorangan', + 'custom_field' => null, + 'custom_field_type' => null, 'status' => 1, 'created_at' => now(), 'updated_at' => now(), @@ -65,6 +73,8 @@ class JenisLegalitasJaminanSeeder extends Seeder 'code' => 'JLJ005', 'name' => 'Siteplan', 'slug' => 'siteplan', + 'custom_field' => null, + 'custom_field_type' => null, 'status' => 1, 'created_at' => now(), 'updated_at' => now(), @@ -77,6 +87,8 @@ class JenisLegalitasJaminanSeeder extends Seeder 'code' => 'JLJ006', 'name' => 'Surat Pernyataan Kebenaran Data (Surat Representasi)', 'slug' => 'surat-pernyataan-kebenaran-data-surat-representasi', + 'custom_field' => null, + 'custom_field_type' => null, 'status' => 1, 'created_at' => now(), 'updated_at' => now(), @@ -85,6 +97,20 @@ class JenisLegalitasJaminanSeeder extends Seeder 'updated_by' => 1, 'deleted_by' => null ], + [ + 'code' => 'JLJ007', + 'name' => 'IMB', + 'slug' => 'imb', + 'custom_field' => 'Luas Bangunan', + 'custom_field_type' => 'number', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'deleted_at' => null, + 'created_by' => 1, + 'updated_by' => 1, + 'deleted_by' => null + ] ]); } } diff --git a/database/seeders/LpjDatabaseSeeder.php b/database/seeders/LpjDatabaseSeeder.php index d81021d..0377451 100644 --- a/database/seeders/LpjDatabaseSeeder.php +++ b/database/seeders/LpjDatabaseSeeder.php @@ -31,12 +31,12 @@ class LpjDatabaseSeeder extends Seeder TujuanPenilaianKJPPSeeder::class, IjinUsahaSeeder::class, JenisLaporanSeeder::class, - KJPPSeeder::class, DebitureSeeder::class, PermohonanSeeder::class, PemilikJaminanSeeder::class, DokumenJaminanSeeder::class, DetailDokumenJaminanSeeder::class, + KJPPSeeder::class, PenawaranSeeder::class, DetailPenawaranSeeder::class, PenilaianSeeder::class, diff --git a/database/seeders/PermohonanSeeder.php b/database/seeders/PermohonanSeeder.php index f43aafb..a8b82d7 100644 --- a/database/seeders/PermohonanSeeder.php +++ b/database/seeders/PermohonanSeeder.php @@ -20,7 +20,7 @@ class PermohonanSeeder extends Seeder 'branch_id' => 1, 'tujuan_penilaian_id' => 1, 'debiture_id' => 1, - 'status' => 'persetujuan-penawaran', + 'status' => 'registered', 'created_at' => now(), 'updated_at' => now(), 'created_by' => 1, @@ -38,7 +38,7 @@ class PermohonanSeeder extends Seeder 'branch_id' => 1, 'tujuan_penilaian_id' => 1, 'debiture_id' => 1, - 'status' => 'tender', + 'status' => 'registered', 'created_at' => now(), 'updated_at' => now(), 'created_by' => 1, diff --git a/module.json b/module.json index 1531970..406f42d 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 @@ - + Dokumen Jaminan @@ -77,16 +77,22 @@ @if(isset($detail->dokumen_jaminan)) @php $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan]; + $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []); @endphp @foreach($dokumen_jaminan as $index => $dokumen) - @if(in_array(Auth::user()->roles[0]->name,['administrator','pemohon-eo'])) - - {{ basename($dokumen) }} - - - @endif - Preview +
+ @if(in_array(Auth::user()->roles[0]->name,['administrator','pemohon-eo'])) + @if(!empty($dokumen_nomor)) + Nomor Dokumen : {{ $dokumen_nomor[$index] }} + @endif + + {{ basename($dokumen) }} + + + @endif + Preview +

@endforeach @endif diff --git a/resources/views/component/pdfviewer.blade.php b/resources/views/component/pdfviewer.blade.php index 177ecf5..3a070e3 100644 --- a/resources/views/component/pdfviewer.blade.php +++ b/resources/views/component/pdfviewer.blade.php @@ -1,11 +1,17 @@ - - @php $n++; @endphp @endforeach + @endif - @endif
- ${item.dokumen_jaminan ? renderExistingFiles(item.dokumen_jaminan, debiturId, item.id) : ''} +
+ ${item.dokumen_jaminan ? renderExistingFiles(item.dokumen_jaminan, debiturId, item.id, item.dokumen_nomor) : ''} +
- - + + +
@@ -535,32 +556,14 @@ .catch(error => console.error('Error:', error)); } - function renderExistingFiles(dokumenJaminan, debiturId, itemId) { - if (typeof dokumenJaminan === 'string') { - return ` - - ${dokumenJaminan.split('/').pop()} - - - `; - } else if (Array.isArray(dokumenJaminan)) { - return dokumenJaminan.map(file => ` - - ${file.split('/').pop()} - - - `).join(''); - } - return ''; - } - function addFileInput(index) { const container = document.getElementById(`file-container-${index}`); const newInput = document.createElement('div'); newInput.className = 'flex items-center gap-2 mb-2 w-full'; newInput.innerHTML = ` - - + + + `; container.appendChild(newInput); } @@ -569,23 +572,53 @@ button.closest('.flex.items-center.gap-2.mb-2').remove(); } - function renderExistingFiles(dokumenJaminan, debiturId, itemId) { - if (typeof dokumenJaminan === 'string') { + function renderExistingFiles(dokumenJaminan, debiturId, itemId, dokumenNomor) { + if (typeof dokumenJaminan === 'string' && typeof dokumenNomor === 'string') { return ` - +
+ Nomor Dokumen : ${dokumenNomor} + ${dokumenJaminan.split('/').pop()} +
`; - } else if (Array.isArray(dokumenJaminan)) { - return dokumenJaminan.map(file => ` - - ${file.split('/').pop()} + }else if (typeof dokumenJaminan === 'string' && dokumenNomor === null) { + return ` +
+ Nomor Dokumen : -- + + ${dokumenJaminan.split('/').pop()} +
+ `; + } else if (Array.isArray(dokumenJaminan) && Array.isArray(dokumenNomor)) { + return dokumenJaminan.map((file, index) => `
+ Nomor Dokumen : ${dokumenNomor[index] || 'N/A'} + + ${file.split('/').pop()} + +
+ `).join(''); + } else if (Array.isArray(dokumenJaminan) && typeof dokumenNomor === 'string') { + return dokumenJaminan.map((file, index) => `
+ Nomor Dokumen : ${dokumenNomor} || 'N/A'} + + ${file.split('/').pop()} + +
+ `).join(''); + } else if (Array.isArray(dokumenJaminan) && dokumenNomor === 'null') { + return dokumenJaminan.map((file, index) => `
+ Nomor Dokumen : ${dokumenNomor} || 'N/A'} + + ${file.split('/').pop()} + +
`).join(''); } - return ''; + return dokumenNomor; } function getCustomFieldInput(type, fieldName, value) { diff --git a/resources/views/debitur/components/jaminan.blade.php b/resources/views/debitur/components/jaminan.blade.php index a45cf24..6f3cc68 100644 --- a/resources/views/debitur/components/jaminan.blade.php +++ b/resources/views/debitur/components/jaminan.blade.php @@ -71,10 +71,23 @@ {{ $loop->index+1 }}. {{ $detail->jenisLegalitasJaminan->name }}
- @if(in_array(Auth::user()->roles[0]->name,['administrator','pemohon-eo'])) - Download + @if(isset($detail->dokumen_jaminan)) + @php + $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan]; + $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []); + @endphp + @foreach($dokumen_jaminan as $index => $dokumen) + @if(in_array(Auth::user()->roles[0]->name,['administrator','pemohon-eo'])) + + {{ basename($dokumen) }} + + + @endif + Preview +
+ @endforeach @endif - Preview
diff --git a/resources/views/kjpp/create.blade.php b/resources/views/kjpp/create.blade.php index 41284bb..1bd1ff7 100644 --- a/resources/views/kjpp/create.blade.php +++ b/resources/views/kjpp/create.blade.php @@ -222,12 +222,32 @@ -
+
@error('email_kantor') {{ $message }} @enderror +
+ @if (isset($kjpp->detail_email_kantor)) + @foreach ($detailEmailKantor as $detail_email_kantor) +
+
+ + @error('email_kantor') + {{ $message }} + @enderror +
+ +
+ @endforeach + @endif +
+
@@ -253,6 +273,50 @@ @enderror
+
+
+ @if (isset($kjpp->detail_nama_pimpinan) && isset($kjpp->detail_nomor_hp_pimpinan)) + @foreach (json_decode($detailJoinPimpinan) as $detail_pimpinan) +
+ +
+ + @error('nama_pimpinan') + {{ $message }} + @enderror +
+ +
+ + @error('nomor_hp_pimpinan') + {{ $message }} + @enderror +
+ +
+ @endforeach + @endif +
+
+
+ +
+ +
+
+
+
+ @if (isset($kjpp->detail_nama_pic_reviewer) && isset($kjpp->detail_nomor_hp_pic_reviewer)) + @foreach (json_decode($detailJoinPicReviewer) as $detail_pic_reviewer) +
+ +
+ + @error('nama_pic_reviewer') + {{ $message }} + @enderror +
+ +
+ + @error('nomor_hp_pic_reviewer') + {{ $message }} + @enderror +
+ +
+ @endforeach + @endif +
+
+
+ +
+ +
+
+
+
+ @if (isset($kjpp->detail_nama_pic_admin) && isset($kjpp->detail_nomor_hp_pic_admin)) + @foreach (json_decode($detailJoinPicAdmin) as $detail_pic_admin) +
+ +
+ + @error('nama_pic_admin') + {{ $message }} + @enderror +
+ +
+ + @error('nomor_hp_pic_admin') + {{ $message }} + @enderror +
+ +
+ @endforeach + @endif +
+
+
+ +
+ +
+
+
+
+ @if (isset($kjpp->detail_nama_pic_marketing) && isset($kjpp->detail_nomor_hp_pic_marketing)) + @foreach (json_decode($detailJoinPicMarketing) as $detail_pic_marketing) +
+ +
+ + @error('nama_pic_marketing') + {{ $message }} + @enderror +
+ +
+ + @error('nomor_hp_pic_marketing') + {{ $message }} + @enderror +
+ +
+ @endforeach + @endif +
+
+
+ +
+ +
+
@endsection + +@include('lpj::kjpp.scripts.index') diff --git a/resources/views/kjpp/scripts/index.blade.php b/resources/views/kjpp/scripts/index.blade.php new file mode 100644 index 0000000..118969c --- /dev/null +++ b/resources/views/kjpp/scripts/index.blade.php @@ -0,0 +1,145 @@ +@push('scripts') + +@endpush diff --git a/resources/views/kjpp/show.blade.php b/resources/views/kjpp/show.blade.php index 0e5def9..2ca826d 100644 --- a/resources/views/kjpp/show.blade.php +++ b/resources/views/kjpp/show.blade.php @@ -42,9 +42,7 @@

- @foreach ($ijin_usaha as $iu) - {{ $iu->code }} - @endforeach + {{ $kjpp->nomor_ijin_usaha }}

@@ -53,22 +51,36 @@ Alamat Kantor
-

{{ $kjpp->address }} , Kel. - @foreach ($villages as $village) - {{ $village->name }} - @endforeach , Kec. - @foreach ($districts as $district) - {{ $district->name }} - @endforeach , - @foreach ($cities as $city) - {{ ucwords(strtolower($city->name)) }} - @endforeach , - @foreach ($provinces as $province) - {{ $province->name }} - @endforeach, Kode Pos. - @foreach ($villages as $village) - {{ $village->postal_code }} - @endforeach +

{{ $kjpp->address }} + @if (isset($kjpp->village_code)) + , Kel. + @foreach ($villages as $village) + {{ $village->name }} + @endforeach + @endif + @if (isset($kjpp->district_code)) + , Kec. + @foreach ($districts as $district) + {{ $district->name }} + @endforeach + @endif + @if (isset($kjpp->city_code)) + ,@foreach ($cities as $city) + {{ ucwords(strtolower($city->name)) }} + @endforeach + @endif + @if (isset($kjpp->province_code)) + , + @foreach ($provinces as $province) + {{ $province->name }} + @endforeach + @endif + @if (isset($kjpp->postal_code)) + , Kode Pos. + @foreach ($villages as $village) + {{ $village->postal_code }} + @endforeach + @endif

@@ -84,6 +96,13 @@

{{ $kjpp->email_kantor }}

+ @if (isset($kjpp->detail_email_kantor)) + @foreach (json_decode($kjpp->detail_email_kantor) as $detail_email_kantor) +

+ {{ $detail_email_kantor->email_kantor }} +

+ @endforeach + @endif
@@ -92,12 +111,26 @@

{{ $kjpp->nama_pimpinan }}

+ @if (isset($kjpp->detail_nama_pimpinan)) + @foreach (json_decode($detailJoinPimpinan) as $detail_nama_pimpinan) +

+ {{ $detail_nama_pimpinan->nama_pimpinan }} +

+ @endforeach + @endif

{{ $kjpp->nomor_hp_pimpinan }}

+ @if (isset($kjpp->detail_nomor_hp_pimpinan)) + @foreach (json_decode($detailJoinPimpinan) as $detail_nomor_hp_pimpinan) +

+ {{ $detail_nomor_hp_pimpinan->nomor_hp_pimpinan }} +

+ @endforeach + @endif
@@ -105,13 +138,28 @@ Nama PIC Reviewer
-

{{ $kjpp->nama_pic_reviewer }}

+

{{ $kjpp->nama_pic_reviewer ?? '-' }}

+ @if (isset($kjpp->detail_nama_pic_reviewer)) + @foreach (json_decode($detailJoinPicReviewer) as $detail_nama_pic_reviewer) +

+ {{ $detail_nama_pic_reviewer->nama_pic_reviewer }} +

+ @endforeach + @endif
-

{{ $kjpp->nomor_hp_pic_reviewer }}

+

{{ $kjpp->nomor_hp_pic_reviewer ?? '-' }} +

+ @if (isset($kjpp->detail_nomor_hp_pic_reviewer)) + @foreach (json_decode($detailJoinPicReviewer) as $detail_nomor_hp_pic_reviewer) +

+ {{ $detail_nomor_hp_pic_reviewer->nomor_hp_pic_reviewer }} +

+ @endforeach + @endif
@@ -119,13 +167,27 @@ Nama PIC Admin
-

{{ $kjpp->nama_pic_admin }}

+

{{ $kjpp->nama_pic_admin ?? '-' }}

+ @if (isset($kjpp->detail_nama_pic_admin)) + @foreach (json_decode($detailJoinPicAdmin) as $detail_nama_pic_admin) +

+ {{ $detail_nama_pic_admin->nama_pic_admin }} +

+ @endforeach + @endif
-

{{ $kjpp->nomor_hp_pic_admin }}

+

{{ $kjpp->nomor_hp_pic_admin ?? '-' }}

+ @if (isset($kjpp->detail_nomor_hp_pic_admin)) + @foreach (json_decode($detailJoinPicAdmin) as $detail_nomor_hp_pic_admin) +

+ {{ $detail_nomor_hp_pic_admin->nomor_hp_pic_admin }} +

+ @endforeach + @endif
@@ -133,13 +195,28 @@ Nama PIC Marketing
-

{{ $kjpp->nama_pic_marketing }}

+

{{ $kjpp->nama_pic_marketing ?? '-' }}

+ @if (isset($kjpp->detail_nama_pic_marketing)) + @foreach (json_decode($detailJoinPicMarketing) as $detail_nama_pic_marketing) +

+ {{ $detail_nama_pic_marketing->nama_pic_marketing }} +

+ @endforeach + @endif
-

{{ $kjpp->nomor_hp_pic_marketing }}

+

{{ $kjpp->nomor_hp_pic_marketing ?? '-' }} +

+ @if (isset($kjpp->detail_nomor_hp_pic_marketing)) + @foreach (json_decode($detailJoinPicMarketing) as $detail_nomor_hp_pic_marketing) +

+ {{ $detail_nomor_hp_pic_marketing->nomor_hp_pic_marketing }} +

+ @endforeach + @endif
@@ -209,3 +286,19 @@
@endsection + +@push('styles') + +@endpush diff --git a/resources/views/permohonan/authorization/show.blade.php b/resources/views/permohonan/authorization/show.blade.php index e8564e1..2036ba1 100644 --- a/resources/views/permohonan/authorization/show.blade.php +++ b/resources/views/permohonan/authorization/show.blade.php @@ -40,6 +40,24 @@ +
+

+ Nilai Plafond: +

+ + {{ $permohonan->nilaiPlafond->name }} + +
+ +
+

+ Status Bayar: +

+ + {{ str_replace('_',' ',$permohonan->status_bayar) }} + +
+ @@ -139,7 +157,7 @@ @include('lpj::component.detail-jaminan')
-
+ @csrf
@@ -149,6 +167,16 @@
+ +
+
+
+ +
+ +
@@ -156,7 +184,7 @@ - @@ -164,3 +192,45 @@ @endsection + +@push('scripts') + +@endpush diff --git a/resources/views/permohonan/form.blade.php b/resources/views/permohonan/form.blade.php index cfb066b..1336330 100644 --- a/resources/views/permohonan/form.blade.php +++ b/resources/views/permohonan/form.blade.php @@ -34,6 +34,7 @@ @if(isset($permohonan->id)) @method('PUT') + @endif @csrf @@ -52,19 +53,14 @@ Tujuan Penilaian
- @if(isset($tujuanPenilaian)) @foreach($tujuanPenilaian as $row) - @if(isset($permohonan)) - - @else - - @endif + @endforeach @endif @@ -83,19 +79,14 @@ @if(isset($fasilitasKredit)) @foreach($fasilitasKredit as $row) - @if(isset($permohonan)) - - @else - - @endif + @endforeach @endif - @error('status') + @error('jenis_fasilitas_kredit_id') {{ $message }} @enderror
@@ -107,22 +98,17 @@
- @error('status') + @error('nilai_plafond_id') {{ $message }} @enderror
@@ -135,10 +121,10 @@
- @error('status') + @error('status_bayar') {{ $message }} @enderror
@@ -149,12 +135,16 @@ Nilai NJOP
- + @error('nilai_njop') {{ $message }} @enderror
+ @if($permohonan->status=='revisi')
Catatan :
@@ -211,19 +201,14 @@ Tujuan Penilaian
- @if(isset($tujuanPenilaian)) @foreach($tujuanPenilaian as $row) - @if(isset($permohonan)) - - @else - - @endif + @endforeach @endif @@ -242,19 +227,14 @@ @if(isset($fasilitasKredit)) @foreach($fasilitasKredit as $row) - @if(isset($permohonan)) - - @else - - @endif + @endforeach @endif - @error('status') + @error('jenis_fasilitas_kredit_id') {{ $message }} @enderror
@@ -266,22 +246,17 @@
- @error('status') + @error('nilai_plafond_id') {{ $message }} @enderror
@@ -294,10 +269,10 @@
- @error('status') + @error('status_bayar') {{ $message }} @enderror
@@ -308,41 +283,16 @@ Nilai NJOP
- + @error('nilai_njop') {{ $message }} @enderror
-
- -
- - @error('status') - {{ $message }} - @enderror -
-
- -
+
+ -
+
+

Data KJPP

-
+
- + + + @@ -65,14 +81,18 @@ -
NoKJPPKJPPNo ProposalTanggal Proposal Biaya Penawaran Upload Penawaran Action
+
+   
diff --git a/resources/views/prosespenawaran/editulang.blade.php b/resources/views/prosespenawaran/editulang.blade.php new file mode 100644 index 0000000..66f2125 --- /dev/null +++ b/resources/views/prosespenawaran/editulang.blade.php @@ -0,0 +1,159 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection +@php + // $route = Route::currentRouteName(); + // dd($route); + $route = explode('.', Route::currentRouteName()); +@endphp + +@section('content') +
+ + +
+
+

+ Tambah Data Proses Penawaran Ulang +

+ +
+
+
+

+ Nomor Register Permohonan: +

+ + + +
+ +
+

+ Kode Penawaran: +

+ + + +
+ +
+

+ Status Penawaran: +

+ + + +
+
+ + +
+ +
+
+
+

Tambah KJPP

+
+
+ + + + + + + + + + + + + + + + + + + + + +
KJPPNo ProposalTanggal ProposalBiaya PenawaranUpload PenawaranAction
+ + + + + + + + + +
+ Rp. + +
+ +
+ + + +
+ +
+
+
+
+
+ +
+   +
+
+ +
+ +
+
+
+

Data KJPP

+
+
+ + + + + + + + + + + + + + +
NoKJPPNo ProposalTanggal ProposalBiaya PenawaranUpload PenawaranAction
+
+
+
+ +
+   +
+
+
+
+@endsection +@include('lpj::prosespenawaran.js.editulangjs') \ No newline at end of file diff --git a/resources/views/prosespenawaran/index.blade.php b/resources/views/prosespenawaran/index.blade.php index 88ca76f..ca0f017 100644 --- a/resources/views/prosespenawaran/index.blade.php +++ b/resources/views/prosespenawaran/index.blade.php @@ -149,10 +149,10 @@ return `${formatDate(new Date(data.start_date))} - ${formatDate(new Date(data.end_date))}` } }, - tujuan_penilaian_k_j_p_p: { + tujuan_penilaian_kjpp: { title: 'Tujuan Penilaian KJPP', render: (item, data) => { - return data.tujuan_penilaian_k_j_p_p[0].name + return data.tujuan_penilaian_kjpp.name } }, penawarandetails_count: { @@ -170,13 +170,25 @@ actions: { title: 'Status', render: (item, data) => { + // data.id ==> penawaran.id + var iconProses =''; + if('tender'==data.status) + { + iconProses=` + + `; + } + else if('proposal-tender'==data.status) + { + iconProses=` + + `; + } + return `
- - - - + `+iconProses+`
`; }, } diff --git a/resources/views/prosespenawaran/js/editeulangxtjs.blade.php b/resources/views/prosespenawaran/js/editeulangxtjs.blade.php new file mode 100644 index 0000000..1994b43 --- /dev/null +++ b/resources/views/prosespenawaran/js/editeulangxtjs.blade.php @@ -0,0 +1,337 @@ + \ No newline at end of file diff --git a/resources/views/prosespenawaran/js/editextjs.blade.php b/resources/views/prosespenawaran/js/editextjs.blade.php index 93f12e4..05d583f 100644 --- a/resources/views/prosespenawaran/js/editextjs.blade.php +++ b/resources/views/prosespenawaran/js/editextjs.blade.php @@ -35,21 +35,11 @@ function updateData(id, kjpp_id, kjppName){ removeErrorCssMsg(); + let no_proposal = $("#{{$route[1]}}_no_proposal_"+id).val(); + let tgl_proposal = $("#{{$route[1]}}_tgl_proposal_"+id).val(); let biaya = $("#{{$route[1]}}_biayaPenawaran_"+id).val(); let filepdf = $("#{{$route[1]}}_dokumenPersetujuan_"+id).val(); let passednih = true; - if(!biaya){ - $("#{{$route[1]}}_rp_"+id).addClass(" border-danger"); - $("#{{$route[1]}}_biayaPenawaran_"+id).addClass(" border-danger"); - $("#{{$route[1]}}_biayaPenawaran_msg_"+id).text("Silahkan isi Biaya Penawaran nya"); - passednih = false; - } - if(!filepdf){ - $("#{{$route[1]}}_dokumenPersetujuan_"+id).addClass(" border-danger"); - $("#{{$route[1]}}_dokumenPersetujuan_msg_"+id).text("Silahkan isi dokumen nya"); - $("#{{$route[1]}}_dokumenPersetujuan_"+id).val(""); - passednih = false; - } if(passednih) { @@ -58,7 +48,9 @@ let formData = new FormData(); let token = "{{ csrf_token() }}"; formData.append("dokumen_persetujuan", file_data ?? ""); - formData.append("biaya_penawaran", biaya); + formData.append("no_proposal", no_proposal); + formData.append("tgl_proposal", tgl_proposal); + formData.append("biaya_penawaran", biaya); formData.append("kjpp_rekanan_id", kjpp_id); formData.append("_method", "PUT"); formData.append("_token", token); @@ -149,7 +141,5 @@ } }) - } - - + } \ No newline at end of file diff --git a/resources/views/prosespenawaran/js/editjs.blade.php b/resources/views/prosespenawaran/js/editjs.blade.php index 34a98c6..8adaa2f 100644 --- a/resources/views/prosespenawaran/js/editjs.blade.php +++ b/resources/views/prosespenawaran/js/editjs.blade.php @@ -39,6 +39,7 @@ $("#textReg").text(response.penawaran.nomor_registrasi); $("#textCodePenawaran").text(response.penawaran.code); setTablesKJPP1(response.penawrandetails); + setKJPPList(response.kjpps); } else if('error' == response.status) { @@ -53,28 +54,64 @@ }); } + function setKJPPList(datas) + { + $('#{{$route[1]}}_kjpps').empty().append(''); + + $.each(datas, function(key, value){ + var stringVal = value.code+' - '+value.name; + $('#{{$route[1]}}_kjpps').append(new Option(stringVal, value.id)); + }); + } + function setTablesKJPP1(datas) { let i=1; $.each(datas, function(key, value){ var kjppName = value.kjpp_code+' - '+value.kjpp_name; var biaya_penawaran = value.biaya_penawaran;// alert(biaya_penawaran); + var no_proposal = (value.no_proposal)??'';// alert(no_proposal); + var tgl_proposal = (value.tgl_proposal)??'';// alert(tgl_proposal); var htmlDokumenPersetujuanDownload=''; var dokumenPersetujuanDownload = value.dokumen_persetujuan; if(dokumenPersetujuanDownload) { - htmlDokumenPersetujuanDownload='
'+value.attachment+'
'; + htmlDokumenPersetujuanDownload='
'+value.attachment+'  
'; } - + var markup = ''; markup +=''+i+''; markup +=''; - markup +='
Rp.
'; - markup +=''+htmlDokumenPersetujuanDownload+''; - markup +='
'; - markup +=''; - markup +=''; - markup +='
'; + // No Proposal + markup +=''; + markup +=''; + markup +=''; + markup +=''; + markup +=''; + // No Proposal + // Tanggal Proposal + markup +=''; + markup +=''; + markup +=''; + markup +=''; + // Tanggal Proposal + + // Biaya Penawaran + markup +=''; + markup +='
Rp.
'; + markup +=''; + markup +=''; + // Biaya Penawaran + // Upload Penawaran + markup +=''; + markup +=''; + markup +=''+htmlDokumenPersetujuanDownload; + markup +=''; + // Upload Penawaran + markup +='
'; + markup +=''; + markup +=''; + markup +='
'; markup += ''; $('#tbodyKJPP1').append(markup); @@ -84,10 +121,11 @@ if(biaya_penawaran) biaya_penawaran_format=tandaPemisahTitik(biaya_penawaran); $("#{{$route[1]}}_biayaPenawaran_"+value.id).val(biaya_penawaran_format); + i++; }); } - + $(document).on("input", "input:file", function(e) { let fileName = e.target.files[0].name; let inputFile = e.target.id; @@ -107,7 +145,7 @@ // updateAll penawaran & permohonan status $("#{{$route[1]}}_toEdit").click(function(e) { e.preventDefault(); - + // $id = penawaran.id //define variable let token = "{{ csrf_token() }}"; let useURL = "{{ route($route[0].'.'.$route[1].'.updateAll',$id) }}"; @@ -150,5 +188,106 @@ }); }); + $('#form_{{$route[1]}}').submit(function(e) { + e.preventDefault(); + + var formData = new FormData(this); + //define variable + let token = "{{ csrf_token() }}"; + let useURL = "{{ route($route[0].'.'.$route[1].'.updateDraft',$id) }}"; + formData.append('_token', token); + formData.append('_method', 'PUT'); + + $.ajax({ + url: useURL, + type: "POST", + data: formData, + cache: false, + processData: false, + contentType: false, + success: function(response) { + console.log(response); + + if ('success' == response.status) + { + // toastr.success(response.message); + // success + var message = response.message; + toastrku("success", message); + setTimeout(function () { + location.reload(true); + }, 2000); +// + } + else if('error' == response.status) + { + var message = response.message; + toastrku("error", message); + } + + }, + error: function(response, textStatus, errorThrown) { + // var errors = response.responseJSON.errors; + // console.log(errors); + console.log(response); + + } + }); + }); + + $("#{{$route[1]}}_toAddKJPP").click(function(e) { + e.preventDefault(); + + let kjpp_id = $("#{{$route[1]}}_kjpps").val(); + let id = $("#id").val(); + let token = "{{ csrf_token() }}"; + let useURL = "{{ route($route[0].'.'.$route[1].'.store') }}"; + + var input_data = new Object(); + input_data._token= token; + input_data.kjpp_id= kjpp_id; + input_data.penawaran_id= id; + + if(kjpp_id>0) + { + $.ajax({ + url: useURL, + type: "POST", + cache: false, + data: input_data, + success:function(response){ + + if ('success' == response.status) + { + // toastr.success(response.message); + // success + var message = response.message; + toastrku("success", message); + setTimeout(function () { + location.reload(true); + }, 2000); + } + else if('error' == response.status) + { + var message = response.message; + toastrku("error", message); + } + }, + error: function (response, textStatus, errorThrown) { + console.log(response); + } + + }); + } + else + { + swal.fire({ + title: "Perhatikan", + text: "Silahkan pilih KJPP terlebih dahulu", + icon: "error" + }); + } + + }); -@endpush +@endpush \ No newline at end of file diff --git a/resources/views/prosespenawaran/js/editulangjs.blade.php b/resources/views/prosespenawaran/js/editulangjs.blade.php new file mode 100644 index 0000000..53de74b --- /dev/null +++ b/resources/views/prosespenawaran/js/editulangjs.blade.php @@ -0,0 +1,151 @@ +@push('scripts') + @include('lpj::assetsku.includenya') + @include('lpj::prosespenawaran.js.editeulangxtjs') + +@endpush diff --git a/resources/views/prosespenawaran/show.blade.php b/resources/views/prosespenawaran/show.blade.php index 1ef200f..2629eb2 100644 --- a/resources/views/prosespenawaran/show.blade.php +++ b/resources/views/prosespenawaran/show.blade.php @@ -14,7 +14,18 @@ Detail Data Proses Penawaran
- Proses Penawaran + @php + $buttonProses=''; + if('tender'==$prosespenawaran->status) + { + $buttonProses=' Proses Penawaran'; + } + elseif ('proposal-tender'==$prosespenawaran->status) + { + $buttonProses=' Proses Penawaran Ulang'; + } + @endphp + {!! $buttonProses !!} Back
diff --git a/resources/views/registrasi/edit.blade.php b/resources/views/registrasi/edit.blade.php index 167fa25..c606451 100644 --- a/resources/views/registrasi/edit.blade.php +++ b/resources/views/registrasi/edit.blade.php @@ -81,6 +81,15 @@ + + +
+ +
+ +
diff --git a/resources/views/registrasi/js/editjs.blade.php b/resources/views/registrasi/js/editjs.blade.php index 1863f78..80bc38d 100644 --- a/resources/views/registrasi/js/editjs.blade.php +++ b/resources/views/registrasi/js/editjs.blade.php @@ -13,6 +13,7 @@ $("#{{ $route[0] }}_div_jenis_pilihan").show(); $("#{{ $route[0] }}_div_catatan").hide(); $("#{{ $route[0] }}_div_region").hide(); + $("#{{ $route[0] }}_div_catatan2").show(); // prepare data setData(); } @@ -94,12 +95,14 @@ $("#{{ $route[0] }}_div_jenis_pilihan").show(); $("#{{ $route[0] }}_catatan").val(''); $("#{{ $route[0] }}_div_catatan").hide(); + $("#{{ $route[0] }}_div_catatan2").show(); } else { $("#{{$route[0]}}_jenis_penilaian option[value=0]").prop('selected', true); $("#{{ $route[0] }}_div_jenis_pilihan").hide(); $("#{{ $route[0] }}_div_catatan").show(); + $("#{{ $route[0] }}_div_catatan2").hide(); } }); @@ -115,6 +118,7 @@ let jenis_penilaian = $("#{{$route[0]}}_jenis_penilaian").val(); let region = $("#{{$route[0]}}_region").val(); let catatan = $("#{{$route[0]}}_catatan").val(); + let catatan2 = $("#{{$route[0]}}_catatan2").val(); if(jenis_penilaian==0) jenis_penilaian=''; @@ -129,6 +133,7 @@ input_data.jenis_penilaian= jenis_penilaian; input_data.region= region; input_data.catatan = catatan; + input_data.catatan2 = catatan2; let useURL= '{{ route($route[0].'.update', $id) }}'; $.ajax({ diff --git a/resources/views/registrasi/show.blade.php b/resources/views/registrasi/show.blade.php index 9ff7791..af13005 100644 --- a/resources/views/registrasi/show.blade.php +++ b/resources/views/registrasi/show.blade.php @@ -147,6 +147,38 @@ @include('lpj::component.detail-jaminan') +
+
+

+ Data Biaya +

+
+
+
+
+ + + + + + + + + + +
+ Status Bayar + + {{ strtoupper(str_replace('_',' ',$permohonan->status_bayar)) }} +
+ Nilai NJOP + + {{ $permohonan->nilai_njop }} +
+
+
+
+
@@ -199,7 +231,7 @@
-
+
@@ -208,6 +240,15 @@ +
+

+
+ +
+ +
diff --git a/resources/views/registrasifinal/edit.blade.php b/resources/views/registrasifinal/edit.blade.php index ddaead8..c0b365e 100644 --- a/resources/views/registrasifinal/edit.blade.php +++ b/resources/views/registrasifinal/edit.blade.php @@ -13,7 +13,8 @@
- + + @method('PUT') @csrf
diff --git a/resources/views/registrasifinal/index.blade.php b/resources/views/registrasifinal/index.blade.php index 4e50882..808da23 100644 --- a/resources/views/registrasifinal/index.blade.php +++ b/resources/views/registrasifinal/index.blade.php @@ -114,6 +114,9 @@ }, tujuan_penilaian_kjpp_name: { title: 'Tujuan Penilaian', + render: (item, data) => { + return `${data.tujuan_penilaian_kjpp.name || ''}`; + }, }, nama_kjpp_sebelumnya: { title: 'Nama KJPP Terpilih', @@ -133,10 +136,10 @@ title: 'Status', render: (item, data) => { return ``; diff --git a/resources/views/registrasifinal/js/editjs.blade.php b/resources/views/registrasifinal/js/editjs.blade.php index 9464649..89f2a5e 100644 --- a/resources/views/registrasifinal/js/editjs.blade.php +++ b/resources/views/registrasifinal/js/editjs.blade.php @@ -17,7 +17,8 @@ function setData() { - let id = $("#id").val(); + // id => penawaran.id + let id = $("#{{$route[0]}}_id").val(); let token = "{{ csrf_token() }}"; // alert('token = ' + token); var useURL = "{{ route('registrasifinal.setData') }}"; @@ -43,6 +44,8 @@ $("#textCodePenawaran").text(response.penawaran.code); $("#textStatusPenawaran").text(response.penawaran.status); setRegionList(response.regions,0); + // alert(response.datas.dokumen); + $("#pdfSPK").attr("href", response.datas.dokumen); // success // var message = response.message; @@ -79,6 +82,7 @@ let token = "{{ csrf_token() }}"; let _method = $('input[name=_method]').val(); + // id => penawaran.id let id = $('#{{$route[0]}}_id').val(); let region = $("#{{$route[0]}}_region").val(); let catatan = $("#{{$route[0]}}_catatan").val(); diff --git a/resources/views/registrasifinal/show.blade.php b/resources/views/registrasifinal/show.blade.php index 7592d0d..b9471ad 100644 --- a/resources/views/registrasifinal/show.blade.php +++ b/resources/views/registrasifinal/show.blade.php @@ -45,10 +45,9 @@ Tujan Permohonan: - {{ $permohonan->tujuanPenilaian->name }} + {{ $permohonan->tujuanPenilaian->name }} {!! $permohonan->dokumen !!}
-
diff --git a/resources/views/spk/documentSPK.blade.php b/resources/views/spk/documentSPK.blade.php index 8bf42c3..0f9f78a 100644 --- a/resources/views/spk/documentSPK.blade.php +++ b/resources/views/spk/documentSPK.blade.php @@ -1,12 +1,15 @@ - - - - - - - +@php + $manifest = json_decode(file_get_contents(public_path('build/manifest.json')), true); + $cssFiles = array_filter($manifest, function($value) { + return strpos($value['file'], '.css') !== false; + }); + +@endphp + +@foreach($cssFiles as $file) + +@endforeach +
-
\ No newline at end of file +
diff --git a/resources/views/spk/edit.blade.php b/resources/views/spk/edit.blade.php index 03edfae..171d57a 100644 --- a/resources/views/spk/edit.blade.php +++ b/resources/views/spk/edit.blade.php @@ -15,7 +15,7 @@

Buat SPK

- +
@@ -25,9 +25,9 @@
-
+