diff --git a/app/Http/Controllers/ActivityController.php b/app/Http/Controllers/ActivityController.php index 496f1b4..1008d7d 100644 --- a/app/Http/Controllers/ActivityController.php +++ b/app/Http/Controllers/ActivityController.php @@ -35,28 +35,41 @@ class ActivityController extends Controller // Ambil user yang sedang login $user = auth()->user(); $roles = $user->load('roles'); - $regionId = null; - // Cek apakah user memiliki role 'senior officer' - if ($roles->roles->pluck('name')->contains('senior officer')) { - $regionId = TeamsUsers::with('team.regions') + // Inisialisasi regionId dan teamId sebagai null agar bisa dinamis + $regionId = null; + $teamId = null; + + if ($roles->roles->pluck('name')->contains('senior-officer')) { + $userTeam = TeamsUsers::with('team') ->where('user_id', $user->id) - ->first()?->team->regions_id; + ->first(); + $regionId = $userTeam?->team->regions_id; + $teamId = $userTeam?->teams_id; + } - $teamsActivity = TeamsUsers::with(['user', 'team', 'team.regions']) - ->whereHas('team', function ($q) use ($regionId) { + $teamsActivity = TeamsUsers::with(['user', 'team', 'team.regions', 'user.roles']) + ->whereHas('team', function ($q) use ($regionId, $teamId) { if ($regionId) { $q->where('regions_id', $regionId); } + if ($teamId) { + $q->where('id', $teamId); // Hanya tim yang sama + } }) ->where('user_id', '!=', $user->id) + ->whereHas('user.roles', function ($query) { + // Filter hanya peran 'surveyor' atau 'surveyor-penilai' + $query->whereIn('name', ['surveyor', 'surveyor-penilai']); + }) ->get(); return view('lpj::activity.progres_activity.index', compact('teamsActivity')); } + public function senior() { return view('lpj::activity.senior_officer.index'); @@ -106,6 +119,10 @@ class ActivityController extends Controller * Update the specified resource in storage. */public function dataForDatatables(Request $request) { + + $user = auth()->user(); + + // Check permissions if (is_null($this->user) || !$this->user->can('debitur.view')) { // abort(403, 'Sorry! You are not allowed to view users.'); @@ -157,7 +174,23 @@ class ActivityController extends Controller $filteredRecords = $query->count(); // Get data - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); + + $data = null; + $userRole = $user->roles[0]->name ?? null; + + if (in_array($userRole, ['surveyor', 'surveyor-penilai'])) { + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian',]) + ->whereHas('penilaian.userPenilai', function ($q) use ($user) { + $q->where('user_id', $user->id); + }) + ->get(); + } else { + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian']) + ->get(); + } + + + // Calculate total pages $pageCount = ceil($totalRecords / $request->get('size', 10)); @@ -194,13 +227,23 @@ class ActivityController extends Controller public function dataTablesForActivity(Request $request, $id) { + + if (is_null($this->user) || !$this->user->can('debitur.view')) { + // abort(403, 'Sorry! You are not allowed to view users.'); + } // Query Penilaian dengan relasi yang diperlukan - $query = Penilaian::with(['permohonan', 'permohonan.debiture', 'permohonan.tujuanPenilaian']) - ->where(function($q) use ($id) { - $q->where('surveyor_id', $id) - ->orWhere('penilaian_id', $id) - ->orWhere('penilai_surveyor_id', $id); - }); + $query = Penilaian::with([ + 'permohonan', + 'permohonan.debiture', + 'permohonan.tujuanPenilaian', + 'permohonan.debiture.documents.jenisJaminan', + 'userPenilai' + ]) + ->whereHas('userPenilai', function ($q) use ($id) { + $q->where('user_id', $id); + }); + + // Filter pencarian if ($request->has('search') && !empty($request->get('search'))) { diff --git a/app/Http/Controllers/DokumenJaminanController.php b/app/Http/Controllers/DokumenJaminanController.php index 2ae5384..207413c 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; @@ -14,6 +16,7 @@ use Modules\Lpj\Models\Debiture; use Modules\Lpj\Models\DetailDokumenJaminan; use Modules\Lpj\Models\DokumenJaminan; + use Modules\Lpj\Models\HubunganPemilikJaminan; use Modules\Lpj\Models\JenisJaminan; use Modules\Lpj\Models\JenisLegalitasJaminan; use Modules\Lpj\Models\PemilikJaminan; @@ -69,44 +72,41 @@ $document = DokumenJaminan::create($validate); - try { - foreach ($request->dokumen_jaminan as $key => $value) { - $file_name = $value->getClientOriginalName(); + if ($request->jenis_legalitas_jaminan_id) { + foreach ($request->jenis_legalitas_jaminan_id as $key => $value) { + $detailData = [ + 'dokumen_jaminan_id' => $document->id, + 'jenis_legalitas_jaminan_id' => $value, + 'name' => $request->name[$key], + 'keterangan' => $request->keterangan[$key], + ]; - if ($file_name) { - try { - $file_name = $value->getClientOriginalName(); - $value->storeAs( - 'public/jaminan/' . $debitur->id . '/' . $document->id . '/', - $file_name, - ); - - $detail = [ - 'dokumen_jaminan_id' => $document->id, - 'jenis_legalitas_jaminan_id' => $request->jenis_legalitas_jaminan_id[$key], - 'dokumen_jaminan' => 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name, - 'name' => $request->name[$key], - 'keterangan' => $request->keterangan[$key], - ]; - 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', @@ -125,10 +125,18 @@ $jenisJaminan = JenisJaminan::all(); $jenisLegalitasJaminan = JenisLegalitasJaminan::all(); $pemilikJaminan = PemilikJaminan::where('debiture_id', $id)->get(); + $hubunganPemilik = HubunganPemilikJaminan::all(); return view( 'lpj::debitur.jaminan', - compact('debitur', 'provinces', 'jenisJaminan', 'jenisLegalitasJaminan', 'pemilikJaminan'), + compact( + 'debitur', + 'provinces', + 'jenisJaminan', + 'jenisLegalitasJaminan', + 'pemilikJaminan', + 'hubunganPemilik', + ), ); } @@ -137,11 +145,58 @@ $debitur = Debiture::find($id); $validate = $request->validated(); + if ($validate) { try { DB::beginTransaction(); $validate['debiture_id'] = $id; + if ($validate['pemilik_jaminan_id'] == 00) { + $pemilik_jaminan = [ + 'hubungan_pemilik_jaminan_id' => request()->get('hubungan_pemilik_jaminan_id'), + 'province_code' => $debitur->province_code, + 'city_code' => $debitur->city_code, + 'district_code' => $debitur->district_code, + 'village_code' => $debitur->village_code, + 'postal_code' => $debitur->postal_code, + 'address' => $debitur->address, + 'nomor_id' => request()->get('nomor_id'), + 'name' => request()->get('pemilik_name'), + ]; + + $detailSertifikat = []; + $names = request()->input('detail_sertifikat.name', []); + $nomorIds = request()->input('detail_sertifikat.nomor_id', []); + + foreach ($names as $index => $name) { + if (isset($nomorIds[$index])) { + $detailSertifikat[] = [ + 'name' => $name, + 'nomor_id' => $nomorIds[$index], + ]; + } + } + + $pemilik_jaminan['detail_sertifikat'] = json_encode($detailSertifikat); + + //dd($pemilik_jaminan); + + try { + $pemilikJaminan = PemilikJaminan::updateOrCreate([ + 'debiture_id' => $id, + 'name' => request()->get('pemilik_name'), + ], $pemilik_jaminan); + } catch (Exception $e) { + return redirect()->route('debitur.jaminan.index', $id)->with( + 'error', + 'Gagal update pemilik jaminan: ' . $e->getMessage(), + ); + } + + $validate['pemilik_jaminan_id'] = $pemilikJaminan->id; + } + + if ($validate['pemilik_jaminan_id'] == 0) { $pemilik_jaminan = [ 'hubungan_pemilik_jaminan_id' => 1, @@ -160,59 +215,86 @@ 'debiture_id' => $id, 'name' => $debitur->name, ], $pemilik_jaminan); + + $validate['pemilik_jaminan_id'] = $pemilikJaminan->id; } $document = DokumenJaminan::find($jaminan); $document->update($validate); - if ($request->detail_dokumen_jaminan_id) { - foreach ($request->detail_dokumen_jaminan_id as $key => $value) { - if (isset($request->dokumen_jaminan[$key])) { - $file = $request->dokumen_jaminan[$key]; - if ($file) { - $file_name = $file->getClientOriginalName(); - } + // Get existing detail documents + $existingDetails = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->get()->keyBy( + 'id', + ); - if (isset($file_name)) { - $file->storeAs( - 'public/jaminan/' . $debitur->id . '/' . $document->id . '/', - $file_name, - ); + 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], + ]; - $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], - ]; - if (isset($request->detail_dokumen_jaminan_id[$key])) { - $detailDocument = DetailDokumenJaminan::find( - $request->detail_dokumen_jaminan_id[$key], + $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, ); - - $detailDocument->update($detail); - $detailDocument->save(); + $dokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name; + $dokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? ''; } } - } else { - $detail = [ - 'dokumen_jaminan_id' => $document->id, - 'jenis_legalitas_jaminan_id' => $request->jenis_legalitas_jaminan_id[$key], - 'name' => $request->name[$key], - 'keterangan' => $request->keterangan[$key], - ]; + } - if (isset($request->detail_dokumen_jaminan_id[$key])) { - $detailDocument = DetailDokumenJaminan::find( - $request->detail_dokumen_jaminan_id[$key], - ); - $detailDocument->update($detail); + 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]; + $detailDocument = $existingDetails->get($detailId); + if ($detailDocument) { + // Merge new files with existing ones + if (!empty($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); } + } else { + DetailDokumenJaminan::create($detailData); } } } + // Delete any remaining existing details that weren't updated + foreach ($existingDetails as $detail) { + $files = json_decode($detail->dokumen_jaminan, true) ?: []; + foreach ($files as $file) { + Storage::delete('public/' . $file); + } + $detail->delete(); + } + DB::commit(); return redirect()->route('debitur.jaminan.index', $id)->with( 'success', @@ -229,16 +311,35 @@ $id, $jaminan, ) { - $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(); + $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(); + + $jenisJaminan = JenisJaminan::all(); $jenisLegalitasJaminan = JenisLegalitasJaminan::all(); - $pemilikJaminan = PemilikJaminan::where('debiture_id', $document->debiture_id)->get(); + + $_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(); + + + // Remove values from $legalitasJaminan that are in $currentLegalitasJaminan + $legalitasJaminan = array_diff($legalitasJaminan, $currentLegalitasJaminan->pluck('code')->toArray()); + + $legalitas = JenisLegalitasJaminan::whereIn('code', $legalitasJaminan)->get(); + + $pemilikJaminan = PemilikJaminan::where('debiture_id', $document->debiture_id)->get(); + $hubunganPemilik = HubunganPemilikJaminan::all(); return view( 'lpj::debitur.jaminan', @@ -253,6 +354,8 @@ 'districts', 'villages', 'pemilikJaminan', + 'hubunganPemilik', + 'legalitas', ), ); } @@ -289,12 +392,18 @@ 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); + $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(); @@ -305,11 +414,11 @@ } else { return redirect()->back()->with('error', 'Failed to create ZIP file.'); } - + return response()->download($zipFilePath, $zipFileName, [ - 'Content-Type' => 'application/zip', + 'Content-Type' => 'application/zip', 'Content-Disposition' => 'attachment; filename="' . $zipFileName . '"', - 'Content-Length' => filesize($zipFilePath), + 'Content-Length' => filesize($zipFilePath), ])->deleteFileAfterSend(false); } @@ -318,10 +427,13 @@ { $dokumen = request()->get('dokumen'); $document = DetailDokumenJaminan::find($dokumen); - return response()->download(storage_path('app/public/' . $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')])); } - public function legalitasJaminan($id, $jaminan) + public function legalitasJaminan($id) { $jenisJaminan = JenisJaminan::find($id); $legalitasJaminan = $jenisJaminan->jenis_legalitas_jaminan_id; @@ -329,4 +441,65 @@ $legalitas = JenisLegalitasJaminan::whereIn('code', json_decode($legalitasJaminan, true))->get(); echo json_encode($legalitas); } + + + 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 = []; + + // Create a set of new jenis_legalitas_jaminan_ids for quick lookup + $newLegalitasIds = $newLegalitasJaminan->pluck('id')->toArray(); + + if ($id > 0) { + $document = DokumenJaminan::findOrFail($id); + if ($document && $document->detail) { + foreach ($document->detail as $detail) { + // Only include existing legalitas if its id is in the new set + if (in_array($detail->jenis_legalitas_jaminan_id, $newLegalitasIds)) { + $existingLegalitas[] = [ + '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_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, + ]; + } + } + } + } + + foreach ($newLegalitasJaminan as $legalitas) { + if (!Collection::make($existingLegalitas)->contains('jenis_legalitas_jaminan_id', $legalitas->id)) { + $newLegalitas[] = [ + 'id' => null, + 'jenis_legalitas_jaminan_id' => $legalitas->id, + '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, + ]; + } + } + + $combinedLegalitas = array_merge($existingLegalitas, $newLegalitas); + return response()->json($combinedLegalitas); + } } diff --git a/app/Http/Controllers/KJPPController.php b/app/Http/Controllers/KJPPController.php index 4898ab5..e043735 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; @@ -58,6 +56,79 @@ class KJPPController extends Controller $validated = $request->validated(); if ($validated) { + $detailEmailKantor = []; + $detailNamaPicReviewer = []; + $detailNomorHpPicReviewer = []; + $detailNamaPicAdmin = []; + $detailNomorHpPicAdmin = []; + $detailNamaPicMarketing = []; + $detailNomorHpPicMarketing = []; + + $emailKantor = $request->input('detail_email_kantor.email_kantor', []); + $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_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 +140,20 @@ 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_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 +180,36 @@ 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); + $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); + + $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')); } /** @@ -117,8 +224,36 @@ 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); + $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')); + $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')); } /** @@ -128,7 +263,82 @@ class KJPPController extends Controller { $validated = $request->validated(); + // dd($validated); + if ($validated) { + $detailEmailKantor = []; + $detailNamaPicReviewer = []; + $detailNomorHpPicReviewer = []; + $detailNamaPicAdmin = []; + $detailNomorHpPicAdmin = []; + $detailNamaPicMarketing = []; + $detailNomorHpPicMarketing = []; + + $emailKantor = $request->input('detail_email_kantor.email_kantor', []); + $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_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 +358,16 @@ class KJPPController extends Controller $validated['attachment'] = $kjpp->attachment ?? 'default.pdf'; } + $validated['detail_email_kantor'] = $detailEmailKantorJson; + $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); diff --git a/app/Http/Controllers/OtorisasiPenawaranController.php b/app/Http/Controllers/OtorisasiPenawaranController.php index 91762f2..66180ed 100644 --- a/app/Http/Controllers/OtorisasiPenawaranController.php +++ b/app/Http/Controllers/OtorisasiPenawaranController.php @@ -42,16 +42,16 @@ class OtorisasiPenawaranController extends Controller $query =PenawaranTender::query() ->select('penawaran.*',DB::raw("CONCAT(DATE_FORMAT(penawaran.start_date, '%d %M %Y'), ' - ', DATE_FORMAT(penawaran.end_date, '%d %M %Y')) AS date_range"), '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','=','persetujuan-penawaran') - ->withCount('penawarandetails'); - + ->where('penawaran.status','=','proposal-tender') + ->withCount('penawarandetails'); + // Apply search filter if provided if ($request->has('search') && !empty($request->get('search'))) { $search = $request->get('search'); $query->where(function ($q) use ($search) { $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); - + $q->orWhere('status', 'LIKE', '%' . $search . '%'); }); } @@ -114,19 +114,19 @@ class OtorisasiPenawaranController extends Controller if (request()->ajax()) { $id = $request->id; - $penawaran = PenawaranTender::where('status','=','persetujuan-penawaran')->find($id); - + $penawaran = PenawaranTender::where('status','=','proposal-tender')->find($id); + if ($penawaran) { $penawarandetailLogs = PenawaranDetailTenderLog::where('penawaran_id',$id) - ->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran_logs.kjpp_rekanan_id') + ->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran_logs.kjpp_rekanan_id') ->select('detail_penawaran_logs.*', DB::raw("DATE_FORMAT(detail_penawaran_logs.created_at, '%d-%m-%Y %H:%i') AS created_at2"),'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name') ->get(); $penawrandetails = PenawaranDetailTender::where('penawaran_id','=',$id) - ->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran.kjpp_rekanan_id') + ->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran.kjpp_rekanan_id') ->select('detail_penawaran.*', 'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name') ->where('detail_penawaran.status','=',1) ->get(); - + if(sizeof($penawarandetailLogs)>0) { $h=0; @@ -139,8 +139,8 @@ class OtorisasiPenawaranController extends Controller } $h++; } - - } + + } $i=0; foreach($penawrandetails as $obj) @@ -149,17 +149,17 @@ class OtorisasiPenawaranController extends Controller { $penawrandetails_path = Storage::url($obj->dokumen_persetujuan); $penawrandetails[$i]->dokumen_persetujuan = $penawrandetails_path; - + } $i++; } - + $penawaranString = ""; if($penawaran->status) { $penawaranString = convertSlug($penawaran->status); $penawaran->status = $penawaranString; - } + } $kjpp=null; $kjpp = KJPP::pluck('name', 'id'); @@ -202,11 +202,11 @@ class OtorisasiPenawaranController extends Controller // update status Penawaran menjadi SPK // update status Permohonan menjadi SPK // insert detail_permohonan_log - + PenawaranDetailTender::where('status', 1) ->where('penawaran_id', $request->penawaran_id) ->whereNotIn('id', [$id]) - ->update(['status' => 2, + ->update(['status' => 2, 'updated_by' => Auth::id(), 'updated_at' => now() ]); @@ -228,12 +228,12 @@ class OtorisasiPenawaranController extends Controller 'updated_by' => Auth::id(), 'updated_at' => now() ]); - + // log $detailPenawaran = PenawaranDetailTender::where('penawaran_id', $request->penawaran_id)->get(); if(sizeof($detailPenawaran)>0) { - + foreach ($detailPenawaran as $model) { array_push($dataDetailPenawaranLog, [ 'detail_penawaran_id' =>$model->id, @@ -248,12 +248,12 @@ class OtorisasiPenawaranController extends Controller 'authorized_at' =>$model->authorized_at, 'created_at' =>$model->created_at, 'updated_at' =>$model->updated_at, - 'deleted_at' =>$model->deleted_at, + 'deleted_at' =>$model->deleted_at, 'created_by' =>$model->created_by, 'updated_by' =>$model->updated_by, 'deleted_by' =>$model->deleted_by ]); - + } PenawaranDetailTenderLog::insert($dataDetailPenawaranLog); diff --git a/app/Http/Controllers/PemilikJaminanController.php b/app/Http/Controllers/PemilikJaminanController.php index 7c38601..b8e0ecd 100644 --- a/app/Http/Controllers/PemilikJaminanController.php +++ b/app/Http/Controllers/PemilikJaminanController.php @@ -63,6 +63,7 @@ public function update(PemilikJaminanRequest $request, $id, $pemilik) { $validate = $request->validated(); + if ($validate) { try { $pemilik = PemilikJaminan::find($pemilik); @@ -88,6 +89,7 @@ $districts = District::where('city_code', $pemilik->city_code)->get(); $villages = Village::where('district_code', $pemilik->district_code)->get(); $hubunganPemilik = HubunganPemilikJaminan::all(); + $detailSertifikat = $pemilik->detail_sertifikat; return view( 'lpj::pemilik_jaminan.form', @@ -99,6 +101,7 @@ 'villages', 'hubunganPemilik', 'pemilik', + 'detailSertifikat' ), ); } diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php new file mode 100644 index 0000000..6b2a0c0 --- /dev/null +++ b/app/Http/Controllers/PenilaiController.php @@ -0,0 +1,135 @@ +find($id); + + return view('lpj::penilai.show', compact('permohonan')); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit($id) + { + return view('lpj::edit'); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, $id) + { + // + } + + /** + * Remove the specified resource from storage. + */ + public function destroy($id) + { + // + } + + public function dataForDatatables(Request $request) + { + if (is_null($this->user) || !$this->user->can('penilai.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); + } + + // Retrieve data from the database + $query = Permohonan::query()->where('status', '=', 'done'); + + // 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->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('jenisfasilitasKredit', 'name', 'LIKE', '%' . $search . '%'); + }); + } + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Get the total count of records + $totalRecords = $query->count(); + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'jenisfasilitasKredit'])->get(); + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = 0 + 1; + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + } +} diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index f273b0a..ea1c261 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -5,14 +5,18 @@ namespace Modules\Lpj\Http\Controllers; use App\Http\Controllers\Controller; use Exception; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; use Modules\Lpj\Http\Requests\PenilaianRequest; use Modules\Lpj\Models\JenisPenilaian; use Modules\Lpj\Models\Penilaian; +use Modules\Lpj\Models\PenilaianTeam; use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\StatusPermohonan; use Modules\Lpj\Models\Teams; +use Modules\Lpj\Models\Regions; use Modules\Lpj\Models\TeamsUsers; use Modules\Usermanagement\Models\User; +use Illuminate\Support\Facades\Auth; class PenilaianController extends Controller { @@ -37,16 +41,95 @@ class PenilaianController extends Controller if ($validatedData) { try { - $penilaian = Penilaian::create($validatedData); + DB::beginTransaction(); + + $penilaian = Penilaian::create($validatedData); + $validatedData['penilaian_id'] = $penilaian->id; + + $teams_ids = []; + $user_ids = []; + $roles = []; + + if ($validatedData['surveyor_id'] === 'pilih_dari_region') { + $surveyor_region_id = $validatedData['surveyor_region_id']; + + // Hapus team_id sebelumnya di Permohonan jika ada + $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first(); + if ($permohonan) { + $permohonan->update([ + 'region_id' => $surveyor_region_id, + ]); + } + + $teams_ids[] = $surveyor_region_id; + $user_ids[] = null; + $roles[] = 'surveyor'; + } else { + $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first(); + $teams_ids[] = $validatedData['teams_id']; + + if (isset($validatedData['penilai_surveyor_id'])) { + $user_ids[] = $validatedData['penilai_surveyor_id']; + } else { + $user_ids[] = $validatedData['surveyor_id']; + } + + $roles[] = 'surveyor'; + + } + + if ($validatedData['penilai_id'] === 'pilih_dari_region') { + $penilaian_region_id = $validatedData['penilai_region_id']; + + // Hapus team_id sebelumnya di Permohonan jika ada + $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first(); + if ($permohonan) { + $permohonan->update([ + 'region_id' => $penilaian_region_id, + ]); + } + + $teams_ids[] = $penilaian_region_id; + $user_ids[] = null; + $roles[] = 'penilai'; + } else { + $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first(); + $teams_ids[] = $validatedData['teams_id']; + + if (isset($validatedData['penilai_surveyor_id'])) { + $user_ids[] = $validatedData['penilai_surveyor_id']; + }else { + $user_ids[] = $validatedData['penilai_id']; + } + + $roles[] = 'penilai'; + + } + + foreach ($teams_ids as $key => $teams_id) { + PenilaianTeam::create([ + 'penilaian_id' => $validatedData['penilaian_id'], + 'team_id' => $teams_id, + 'user_id' => $user_ids[$key], + 'role' => $roles[$key], + ]); + } + + if ($validatedData['surveyor_id'] === 'pilih_dari_region' || $validatedData['penilai_id'] === 'pilih_dari_region') { + $status = 'registered'; + } else { + $status = 'assign'; + } - $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi); $permohonan->update([ - 'status' => 'assign', + 'status' => $status, ]); + DB::commit(); + return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil disimpan'); } catch (Exception $e) { - + DB::rollBack(); return redirect()->route('penilaian.index')->with('error', $e->getMessage()); } } @@ -63,22 +146,43 @@ class PenilaianController extends Controller /** * Update the specified resource in storage. */ - public function update(PenilaianRequest $request, $id) + public function update(Request $request, $id) { - $validate = $request->validated(); - if ($validate) { - try { - $penilaian = Penilaian::where('nomor_registrasi', $request->nomor_registrasi)->firstOrFail(); - $penilaian->update($validate); - $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi); - $permohonan->update([ - 'status' => 'assign', - ]); + try { + DB::beginTransaction(); + $penilaian = Penilaian::where('nomor_registrasi', $request->nomor_registrasi)->first(); + + $penilaianId = $penilaian->id; + + $penilainTeam = PenilaianTeam::where('penilaian_id', $penilaianId)->get(); + + + foreach ($penilainTeam as $item) { + if ($item->role === 'surveyor' && $item->user_id === null) { + $item->update([ + 'user_id' => $request->surveyor_id, + 'role' => 'surveyor', + ]); + } + + if ($item->role === 'penilai' && $item->user_id === null) { + $item->update([ + 'user_id' => $request->penilai_id, + 'role' => 'penilai', + ]); + } - return redirect()->route('penilaian.index', $id)->with('success', 'Penilaian berhasil diubah'); - } catch (Exception $e) { - return redirect()->route('penilaian.index', $id)->with('error', $e->getMessage()); } + + $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi); + $permohonan->update([ + 'status' => 'assign', + ]); + DB::commit(); + return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil disimpan'); + } catch (Exception $e) { + DB::rollBack(); + return redirect()->route('penilaian.index')->with('error', $e->getMessage()); } } @@ -87,42 +191,66 @@ class PenilaianController extends Controller */ public function assignment($id) { - $permohonan = Permohonan::with( - [ - 'user', - 'debiture.province', - 'debiture.city', - 'debiture.district', - 'debiture.village', - 'branch', - 'tujuanPenilaian', - ], - )->findOrFail($id); + $permohonan = Permohonan::with([ + 'user', + 'debiture.province', + 'debiture.city', + 'debiture.district', + 'debiture.village', + 'branch', + 'tujuanPenilaian', + ])->findOrFail($id); - $idPenilaian = $permohonan->jenis_penilaian_id; + $idPenilaian = $permohonan->jenis_penilaian_id; $idRegion = $permohonan->region_id; $jenisPenilaian = JenisPenilaian::find($idPenilaian); + $userTeam = Teams::with(['regions', 'teamsUsers.user']) + ->whereHas('regions', function ($q) use ($idRegion) { + $q->where('id', $idRegion); + }) + ->get(); - $teamPenilai = Teams::with(['regions', 'teamsUsers', 'teamsUsers.user', ]) - ->whereHas('regions', function ($q) use ($idRegion) { - $q->where('id', $idRegion); - })->get(); + $teamPenilai = $userTeam->flatMap(function ($team) { + return $team->teamsUsers->filter(function ($teamUser) { + return $teamUser->user->roles->contains(function ($role) { + return $role->name === 'surveyor' || $role->name === 'surveyor-penilai'; + }); + })->map(function ($teamUser) { + return $teamUser->user; + }); + })->unique('id'); + $existingTeamIds = $teamPenilai->pluck('id')->toArray(); + + $updateTeamPenilai = Teams::with(['regions', 'teamsUsers', 'teamsUsers.user']) + ->whereNotIn('id', $existingTeamIds) + ->get(); $regionName = null; - foreach ($teamPenilai as $item) { + foreach ($userTeam as $item) { $regionName = $item->regions; } + // $regionName = $userTeam->first()?->regions->name; + - // dd($teamPenilai); $penilaian = Penilaian::where('nomor_registrasi', $permohonan->nomor_registrasi)->first(); - return view('lpj::penilaian.form', compact('permohonan', 'teamPenilai', 'jenisPenilaian', 'penilaian', 'regionName')); - } + $penilaianTeam = collect(); + if ($penilaian && $penilaian->id) { + $penilaianTeam = PenilaianTeam::where('penilaian_id', $penilaian->id)->get(); + } + + // return response()->json([ + // 'penilaianTeam' => $penilaianTeam + // ]); + + + return view('lpj::penilaian.form', compact('permohonan', 'teamPenilai', 'jenisPenilaian', 'penilaian', 'regionName', 'updateTeamPenilai', 'penilaianTeam')); + } /** * Remove the specified resource from storage. */ @@ -160,8 +288,9 @@ class PenilaianController extends Controller public function dataForDatatables(Request $request) { + if (is_null($this->user) || !$this->user->can('debitur.view')) { - // abort(403, 'Sorry! You are not allowed to view users.'); + } $query = Permohonan::query(); @@ -180,6 +309,9 @@ class PenilaianController extends Controller } $query->whereRaw('LOWER(status) = ?', ['registered']); + $query->whereHas('region.teams.teamsUsers.user', function ($q) { + $q->where('id', Auth::user()->id); + }); if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { $order = $request->get('sortOrder'); @@ -202,7 +334,7 @@ class PenilaianController extends Controller } $filteredRecords = $query->count(); - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'region.teams.teamsUsers.user'])->get(); $pageCount = ceil($totalRecords / $size); @@ -222,7 +354,8 @@ class PenilaianController extends Controller - public function otorisator(Request $request){ + public function otorisator(Request $request) + { $type = $request->route('type'); $header = ''; @@ -248,7 +381,8 @@ class PenilaianController extends Controller return view('lpj::penilaian.otorisator.index', compact('header')); } - public function show($id){ + public function show($id) + { $permohonan = Permohonan::find($id); @@ -272,7 +406,10 @@ class PenilaianController extends Controller $status = 'proses paparan'; break; case 'Pembayaran': - $status = 'proses pembayaran'; + $status = 'proses'; + break; + case 'Pembatalan': + $status = 'order'; break; default: $status = ''; @@ -298,7 +435,11 @@ class PenilaianController extends Controller if (!empty($otorisator)) { - $query->whereRaw('LOWER(status) = ?', [strtolower($status)]); + if ($status == 'proses') { + $query->whereIn('status_bayar', ['sudah_bayar', 'belum_bayar']); + } else { + $query->whereRaw('LOWER(status) = ?', [strtolower($status)]); + } } // Sorting berdasarkan sortField dan sortOrder diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index 2cd35d0..6bd6bfb 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -3,6 +3,7 @@ namespace Modules\Lpj\Http\Controllers; use App\Http\Controllers\Controller; + use Barryvdh\DomPDF\Facade\Pdf; use Exception; use Illuminate\Http\Request; use Maatwebsite\Excel\Facades\Excel; @@ -32,25 +33,20 @@ public function store(PermohonanRequest $request) { - $validate = $request->validated(); if ($validate) { try { // Save to database Permohonan::create($validate); return redirect() - ->route('permohonan.index') - ->with('success', 'Permohonan created successfully'); + ->route('permohonan.index')->with('success', 'Permohonan created successfully'); } catch (Exception $e) { return redirect() - ->route('permohonan.create') - ->with('error', 'Failed to create permohonan' . $e->getMessage()); + ->route('permohonan.create')->with('error', 'Failed to create permohonan' . $e->getMessage()); } } else { return redirect() - ->route('permohonan.create') - ->with('success', 'error naon iye') - ->withInput(); + ->route('permohonan.create')->with('success', 'error naon iye')->withInput(); } } @@ -112,19 +108,20 @@ public function update(PermohonanRequest $request, $id) { $validate = $request->validated(); - if ($validate) { try { // Update in database $permohonan = Permohonan::find($id); + if ($permohonan->status == 'revisi') { + $validate['status'] = 'order'; + } + $permohonan->update($validate); return redirect() - ->route('permohonan.index') - ->with('success', 'Permohonan updated successfully'); + ->route('permohonan.index')->with('success', 'Permohonan updated successfully'); } catch (Exception $e) { return redirect() - ->route('permohonan.edit', $id) - ->with('error', 'Failed to update permohonan'); + ->route('permohonan.edit', $id)->with('error', 'Failed to update permohonan'); } } } @@ -304,4 +301,20 @@ return redirect()->route('authorization.index')->with('success', 'Permohonan updated successfully'); } + + public function show($id) + { + $permohonan = Permohonan::find($id); + + return view('lpj::permohonan.show', compact('permohonan')); + } + + public function print($id) + { + $permohonan = Permohonan::find($id); + return view('lpj::permohonan.print', compact('permohonan')); + + // $pdf = Pdf::loadView('lpj::permohonan.print', compact('permohonan')); + // return $pdf->stream(); + } } diff --git a/app/Http/Controllers/ProsesPenawaranController.php b/app/Http/Controllers/ProsesPenawaranController.php index a37669b..bbd3fab 100644 --- a/app/Http/Controllers/ProsesPenawaranController.php +++ b/app/Http/Controllers/ProsesPenawaranController.php @@ -75,7 +75,7 @@ class ProsesPenawaranController extends Controller // Get the data for the current page //$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); - $data = $query->with(['tujuanPenilaianKJPP'])->get(); + $data = $query->with(['tujuanPenilaianKjpp','permohonan','permohonan.debiture'])->get(); // Calculate the page count $pageCount = ceil($totalRecords / $request->get('size')); @@ -110,13 +110,12 @@ class ProsesPenawaranController extends Controller $id = $request->id; $penawaran = PenawaranTender::find($id); $penawrandetails = PenawaranDetailTender::where('penawaran_id','=',$id) - ->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran.kjpp_rekanan_id') + ->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran.kjpp_rekanan_id') ->select('detail_penawaran.*', 'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name') ->where('detail_penawaran.status','=',1) ->get(); - + if ($penawaran) { - $i=0; foreach($penawrandetails as $obj) { @@ -156,11 +155,11 @@ class ProsesPenawaranController extends Controller $dataPenawaranDetail = array(); if (request()->ajax()) { $validator = ProsesPenawaranController::rulesEditnya($request, $id); - + if ($validator['fails']) { $data['message'] = $validator['errors']; $data['status'] = 'error'; - } + } else { try { @@ -174,9 +173,9 @@ class ProsesPenawaranController extends Controller { $file_tmp = $request->file('dokumen_persetujuan'); $folderPath = 'uploads/penawaran/'; - if ($file_tmp->isValid()) + if ($file_tmp->isValid()) { - $myFile=$file_tmp->getClientOriginalName(); // nama file with extension + $myFile=$file_tmp->getClientOriginalName(); // nama file with extension $file_name = pathinfo($myFile, PATHINFO_FILENAME); // nama file without extension $extension = $file_tmp->getClientOriginalExtension(); @@ -205,16 +204,16 @@ class ProsesPenawaranController extends Controller { $data['status'] = 'error'; $data['message'] ['check_file'] = array("Silahkan upload file"); - + } - + } catch (Exception $e) { - + $data['status'] = 'error'; $data['message'] ['message_error_try_catch'] = array('Proses Penawarn KJPP failed.'); } } - + } else { $data['status'] = 'error'; $data['message'] ['message_ajax'] = array("no ajax request"); @@ -257,57 +256,52 @@ class ProsesPenawaranController extends Controller $dataPenawaran = array(); $penawaran = PenawaranTender::find($id); $checkActiveDateRange = checkActiveDateRangePenawaran($id); - + // cek masa aktif penawaran if($checkActiveDateRange) { - - $checkKelengkapanDetailKJPP = checkKelengkapanDetailKJPP($id); + + $checkKelengkapanDetailKJPP = checkKelengkapanDetailKJPP($id); if($checkKelengkapanDetailKJPP) { DB::beginTransaction(); try { - $dataPenawaran = ['status' => 'persetujuan-penawaran', + $_updatestatus = ['status' => 'proposal-tender', 'updated_by' => Auth::id(), 'updated_at' => now() ]; - - $dataPermohonan = ['status' => 'persetujuan-penawaran', - 'updated_by' => Auth::id(), - 'updated_at' => now() - ]; - + $permohonan = Permohonan::where('nomor_registrasi','=', $penawaran->nomor_registrasi)->first(); - - $penawaran->update($dataPenawaran); - $permohonan->update($dataPermohonan); - + + $penawaran->update($_updatestatus); + $permohonan->update($_updatestatus); + DB::commit(); - + $data['message'] ['message_success'] = array('Sukses melakukan Proses Penawaran'); $data['status'] = 'success'; - + } catch (Exception $e) { DB::rollBack(); // dd($e); $data['message'] ['message_error_try_catch'] = array("Gagal melakukan Proses Penawaran"); $data['status'] = 'error'; } - + } else { $data['message'] ['cek_kelengkapan_data'] = array("Silahkan lengkapi data KJPP"); $data['status'] = 'error'; } - + } else { $data['message'] ['active_date_range'] = array("Penawaran sudah di tutup"); $data['status'] = 'error'; } - + return response()->json($data); } @@ -326,12 +320,12 @@ class ProsesPenawaranController extends Controller 'updated_at' => now() ]; - $detailpenawaran->update($dataDetailPenawaran); + $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); } diff --git a/app/Http/Controllers/ProsesPenawaranUlangController.php b/app/Http/Controllers/ProsesPenawaranUlangController.php index f34ee70..c6aa41b 100644 --- a/app/Http/Controllers/ProsesPenawaranUlangController.php +++ b/app/Http/Controllers/ProsesPenawaranUlangController.php @@ -41,16 +41,16 @@ class ProsesPenawaranUlangController extends Controller $query =PenawaranTender::query() ->select('penawaran.*',DB::raw("CONCAT(DATE_FORMAT(penawaran.start_date, '%d %M %Y'), ' - ', DATE_FORMAT(penawaran.end_date, '%d %M %Y')) AS date_range"), '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','=','persetujuan-penawaran') - ->withCount('penawarandetails'); - + ->where('penawaran.status','=','proposal-tender') + ->withCount('penawarandetails'); + // Apply search filter if provided if ($request->has('search') && !empty($request->get('search'))) { $search = $request->get('search'); $query->where(function ($q) use ($search) { $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); - + $q->orWhere('status', 'LIKE', '%' . $search . '%'); }); } @@ -118,11 +118,11 @@ class ProsesPenawaranUlangController extends Controller if (request()->ajax()) { $id = $request->id; - $penawaran = PenawaranTender::where('status','=','persetujuan-penawaran')->find($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') + ->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(); @@ -143,7 +143,7 @@ class ProsesPenawaranUlangController extends Controller { $penawaranString = convertSlug($penawaran->status); $penawaran->status = $penawaranString; - } + } $data['penawaran'] = $penawaran; $data['penawrandetails'] = $penawrandetails; @@ -176,7 +176,7 @@ class ProsesPenawaranUlangController extends Controller if ($validator['fails']) { $data['message'] = $validator['errors']; $data['status'] = 'error'; - } + } else { // cek masa aktif penawaran @@ -187,7 +187,7 @@ class ProsesPenawaranUlangController extends Controller { DB::beginTransaction(); try { - + $dataDetailPenawaranLog = [ 'detail_penawaran_id' =>$detailpenawaran->id, 'kjpp_rekanan_id' =>$detailpenawaran->kjpp_rekanan_id, @@ -201,15 +201,15 @@ class ProsesPenawaranUlangController extends Controller 'authorized_at' =>$detailpenawaran->authorized_at, 'created_at' =>$detailpenawaran->created_at, 'updated_at' =>$detailpenawaran->updated_at, - 'deleted_at' =>$detailpenawaran->deleted_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); @@ -222,9 +222,9 @@ class ProsesPenawaranUlangController extends Controller { $file_tmp = $request->file('dokumen_persetujuan'); $folderPath = 'uploads/penawaran/'; - if ($file_tmp->isValid()) + if ($file_tmp->isValid()) { - $myFile=$file_tmp->getClientOriginalName(); // nama file with extension + $myFile=$file_tmp->getClientOriginalName(); // nama file with extension $file_name = pathinfo($myFile, PATHINFO_FILENAME); // nama file without extension $extension = $file_tmp->getClientOriginalExtension(); @@ -247,9 +247,9 @@ class ProsesPenawaranUlangController extends Controller { $data['status'] = 'error'; $data['message']['check_file'] = array("Silahkan upload file"); - + } - + $detailpenawaran->update($dataDetailPenawaran); if($pleaseCommit) @@ -279,7 +279,7 @@ class ProsesPenawaranUlangController extends Controller $data['status'] = 'error'; $data['message']['active_date_range'] = array("Penawaran sudah di tutup"); } - + } } else { @@ -288,7 +288,7 @@ class ProsesPenawaranUlangController extends Controller } return response()->json($data); - } + } // delete KJPP di detail_penawaran (status di buat 0) public function updateKJPPStatus(Request $request, $id): JsonResponse @@ -316,16 +316,16 @@ class ProsesPenawaranUlangController extends Controller 'authorized_at' =>$model->authorized_at, 'created_at' =>$model->created_at, 'updated_at' =>$model->updated_at, - 'deleted_at' =>$model->deleted_at, + 'deleted_at' =>$model->deleted_at, 'created_by' =>$model->created_by, 'updated_by' =>$model->updated_by, 'deleted_by' =>$model->deleted_by ]; - + PenawaranDetailTenderLog::create($dataDetailPenawaranLog); // log - + $data['id']=$id; $dataku = ['status' => '0', @@ -333,7 +333,7 @@ class ProsesPenawaranUlangController extends Controller 'updated_at' => now() ]; - $model->update($dataku); + $model->update($dataku); DB::commit(); $data['status'] = 'success'; 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/SLAController.php b/app/Http/Controllers/SLAController.php new file mode 100644 index 0000000..f411dc4 --- /dev/null +++ b/app/Http/Controllers/SLAController.php @@ -0,0 +1,65 @@ +user) || !$this->user->can('debitur.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); + } + + // Retrieve data from the database + $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('penawaran.tanggal_permohonan', 'LIKE', '%' . $search . '%'); + + $q->orWhere('status', 'LIKE', '%' . $search . '%'); + }); + } + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Get the total count of records + $totalRecords = $query->count(); + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + //$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); + + $data = $query->get(); + + $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) + { + $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++; + } + + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = 0 + 1; + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data + ]); + } + public function viewSpk() { // return Excel::download(new TujuanPenilaianExport, 'tujuan_penilaian.xlsx'); return view('lpj::spk.view'); } + + public function show($id) + { + $penawaran = PenawaranTender::find($id); + // return view('lpj::spk.show', compact('id','permohonan')); + } + + 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') + ->where('detail_penawaran.status','=',1) + ->where('penawaran.id','=', $id) + ->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', + 'dokumen_jaminan.address as dokumen_jaminan_address'); + + $data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->first(); + + return view('lpj::spk.edit', compact('data', 'penawaran')); + } + + public function update(Request $request, $id): JsonResponse + { + // init + $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') + ->where('detail_penawaran.status','=',1) + ->where('penawaran.id','=', $id) + ->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); + // update table permohonan + + // pdf path + $spkpenawaran_path = Storage::url($newFileNameWithPath); + + $pdf =Pdf::loadView('lpj::spk.documentSPK', compact('data', 'penawaran')); + + $content = $pdf->download()->getOriginalContent(); + Storage::put('public/'.$newFileNameWithPath,$content); + + $data1['status'] = 'success'; + $data1['spkpenawaran_path'] = $spkpenawaran_path; + $data1['message']['message_success'] = array('Generate SPK PDF successfully'); + + return response()->json($data1); + } + + 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') + ->where('detail_penawaran.status','=',1) + ->where('penawaran.id','=', $id) + ->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', + '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/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index 36b9ae2..f19d4c9 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -6,6 +6,7 @@ use App\Http\Controllers\Controller; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Auth; use Illuminate\Http\Response; use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\Branch; @@ -32,9 +33,14 @@ use Modules\Lpj\Models\Denah; use Modules\Lpj\Models\FotoJaminan; use Modules\Lpj\Models\Lingkungan; use Modules\Lpj\Models\LantaiUnit; +use Modules\Lpj\Models\Lantai; +use Modules\Lpj\Models\ViewUnit; use Modules\Lpj\Models\ObjekJaminan; use Modules\Lpj\Models\RuteJaminan; use Modules\Lpj\Models\AnalisaUnit; +use Modules\Lpj\Models\GolonganMasySekitar; +use Modules\Lpj\Models\TingkatKeramaian; +use Modules\Lpj\Models\LaluLintasLokasi; use Modules\Lpj\Models\SpekBagunanAnalisaDetail; use Modules\Lpj\Http\Requests\SurveyorRequest; use Modules\Lpj\Http\Requests\FormSurveyorRequest; @@ -42,6 +48,7 @@ use Modules\Lpj\Http\Requests\FormSurveyorRequest; class SurveyorController extends Controller { public $user; + /** * Display a listing of the resource. */ @@ -113,6 +120,8 @@ class SurveyorController extends Controller ->where('permohonan_id', $id) ->get(); + + return view('lpj::surveyor.detail', compact( 'buttonDisable', 'fotojaminan', @@ -508,6 +517,11 @@ class SurveyorController extends Controller $query->whereRaw('LOWER(status) = ?', ['assign']); + $query->whereHas('region.teams.teamsUsers.user', function ($q) { + $q->where('id', Auth::user()->id); + }); + + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { $order = $request->get('sortOrder'); $column = $request->get('sortField'); @@ -552,6 +566,8 @@ class SurveyorController extends Controller { $permohonan = $this->getPermohonanJaminanId($id, $jaminanId); + + $branches = Branch::all(); $provinces = Province::all(); @@ -570,6 +586,11 @@ class SurveyorController extends Controller $spekBangunan = SpekBangunan::all(); $saranaPelengkap = SaranaPelengkap::all(); $arahMataAngin = ArahMataAngin::all(); + $lantai = Lantai::all(); + $viewUnit = ViewUnit::all(); + $golMasySekitar = GolonganMasySekitar::all(); + $tingkatKeramaian = TingkatKeramaian::all(); + $laluLintasLokasi = LaluLintasLokasi::all(); $analisa = Analisa::with('analisaTanahBangunan', 'analisaLingkungan', 'analisaFakta', 'jenisJaminan') @@ -597,6 +618,11 @@ class SurveyorController extends Controller 'spekBangunan', 'saranaPelengkap', 'arahMataAngin', + 'lantai', + 'viewUnit', + 'golMasySekitar', + 'tingkatKeramaian', + 'laluLintasLokasi' )); } @@ -625,10 +651,6 @@ class SurveyorController extends Controller $provinces = Province::all(); $fotoJaminan = FotoJaminan::with(['objekJaminan', 'lantaiUnit' ,'ruteJaminan', 'lingkungan'])->where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); - - // return response()->json([ - // 'data' => $fotoJaminan, - // ]); return view('lpj::surveyor.components.foto', compact('permohonan', 'surveyor', 'branches', 'provinces', 'fotoJaminan')); } @@ -658,25 +680,18 @@ class SurveyorController extends Controller } + + + private function getHeader(string $type): array + { + return self::HEADERS[$type] ?? []; + } + public function data(Request $request) { $type = $request->route('type'); - - $headers = [ - 'bentuk-tanah' => ['Bentuk Tanah', 'bentuk-tanah'], - 'kontur-tanah' => ['Kontur Tanah', 'kontur-tanah'], - 'posisi-kavling' => ['Posisi Kavling', 'posisi-kavling'], - 'ketinggian-tanah' => ['Ketinggian Tanah', 'ketinggian-tanah'], - 'kondisi-fisik-tanah' => ['Kondisi Fisik Tanah', 'kondisi-fisik-tanah'], - 'jenis-bangunan' => ['Jenis Bangunan', 'jenis-bangunan'], - 'kondisi-bangunan' => ['Kondisi Bangunan', 'kondisi-bangunan'], - 'sifat-bangunan' => ['Sifat Bangunan', 'sifat-bangunan'], - 'sarana-pelengkap' => ['Sarana Pelengkap', 'sarana-pelengkap'], - ]; - - $header = $headers[$type] ?? ''; - + $header = $this->getHeader($request->route('type')); return view('lpj::surveyor.data.index', compact('header')); } @@ -684,21 +699,9 @@ class SurveyorController extends Controller public function createData($type) { - $headers = [ - 'bentuk-tanah' => ['Bentuk Tanah', 'bentuk-tanah'], - 'kontur-tanah' => ['Kontur Tanah', 'kontur-tanah'], - 'posisi-kavling' => ['Posisi Kavling', 'posisi-kavling'], - 'ketinggian-tanah' => ['Ketinggian Tanah', 'ketinggian-tanah'], - 'kondisi-fisik-tanah' => ['Kondisi Fisik Tanah', 'kondisi-fisik-tanah'], - 'jenis-bangunan' => ['Jenis Bangunan', 'jenis-bangunan'], - 'kondisi-bangunan' => ['Kondisi Bangunan', 'kondisi-bangunan'], - 'sifat-bangunan' => ['Sifat Bangunan', 'sifat-bangunan'], - 'sarana-pelengkap' => ['Sarana Pelengkap', 'sarana-pelengkap'], - ]; - - - $header = $headers[$type] ?? ''; - return view('lpj::surveyor.data.form', compact('header')); + $spekKategoriBagunan = SpekKategoritBangunan::all(); + $header = $this->getHeader($type); + return view('lpj::surveyor.data.form', compact('header', 'spekKategoriBagunan')); } @@ -708,37 +711,37 @@ class SurveyorController extends Controller $validate = $request->validated(); if ($validate) { - $type = $request->route('type'); + try { + $type = $request->route('type'); - $modelClasses = [ - 'bentuk-tanah' => BentukTanah::class, - 'kontur-tanah' => KonturTanah::class, - 'posisi-kavling' => PosisiKavling::class, - 'bentuk-tanah' => BentukTanah::class, - 'kontur-tanah' => KonturTanah::class, - 'posisi-kavling' => PosisiKavling::class, - 'ketinggian-tanah' => KetinggianTanah::class, - 'kondisi-fisik-tanah' => KondisiFisikTanah::class, - 'jenis-bangunan' => JenisBangunan::class, - 'kondisi-bangunan' => KondisiBangunan::class, - 'sifat-bangunan' => SifatBangunan::class, - 'sarana-pelengkap' => SaranaPelengkap::class, - ]; + $modelClass = $this->getModelClass($type); - if (!array_key_exists($type, $modelClasses)) { + if (!$modelClass) { return redirect() ->route('basicdata.'. $type .'.index') ->with('error', 'Invalid type specified.'); } - $modelClass = $modelClasses[$type]; - $data = $request->all(); - $data['status'] = true; + if ($type == 'spek-bangunan') { + $validate['spek_kategori_bagunan_id'] = $request->spek_kategori_bagunan_id; + + } + + + $data = array_merge($validate, ['status' => true]); $modelClass::create($data); return redirect() ->route('basicdata.' . $type .'.index') ->with('success', 'created successfully'); + + } catch (Exeception $e) { + + return response()->json(array('error' => $e->getMessage()), 400); + // return redirect() + // ->route('basicdata.' . $type .'.index') + // ->with('error', $th->getMessage()); + } } } @@ -757,6 +760,9 @@ class SurveyorController extends Controller 'spek-bangunan' => ['Spek Bangunan', 'spek-bangunan', SpekBangunan::class], 'spek-kategori-bangunan' => ['Spek Kategori Bangunan', 'spek-kategori-bangunan', SpekKategoritBangunan::class], 'sarana-pelengkap' => ['Sarana Pelengkap', 'sarana-pelengkap', SaranaPelengkap::class], + 'lantai-unit' => ['Lantai Unit', 'lantai-unit', Lantai::class], + 'view-unit' => ['View Unit', 'view-unit', ViewUnit::class], + 'gol-mas-sekitar' => ['Golongan Masyarakat Sekitar', 'gol-mas-sekitar', GolonganMasySekitar::class], ]; @@ -769,7 +775,13 @@ class SurveyorController extends Controller $header = $dataMap[$type] ?? ''; $model = $modelClass::findOrFail($id); - return view('lpj::surveyor.data.form', compact('header', 'model')); + if ($type == 'spek-bangunan') { + $spekKategoriBagunan = SpekKategoritBangunan::all(); + + } + + + return view('lpj::surveyor.data.form', compact('header', 'model', 'spekKategoriBagunan')); } @@ -777,26 +789,22 @@ class SurveyorController extends Controller { $validate = $request->validated(); if ($validate) { - $modelClasses = [ - 'bentuk-tanah' => BentukTanah::class, - 'kontur-tanah' => KonturTanah::class, - 'posisi-kavling' => PosisiKavling::class, - 'ketinggian-tanah' => KetinggianTanah::class, - 'kondisi-fisik-tanah' => KondisiFisikTanah::class, - 'jenis-bangunan' => JenisBangunan::class, - 'kondisi-bangunan' => KondisiBangunan::class, - 'sifat-bangunan' => SifatBangunan::class, - 'sarana-pelengkap' => SaranaPelengkap::class, + $modelClass = $this->getModelClass($type); - ]; + if ($type == 'spek-bangunan') { + $validate['spek_kategori_bagunan_id'] = $request->spek_kategori_bagunan_id; + + } // Check if the provided type exists in the modelClasses - if (!array_key_exists($type, $modelClasses)) { + if (!$modelClass) { return redirect() ->route('basicdata.' . $type . '.index') ->with('error', 'Invalid type specified.'); } - $modelClass = $modelClasses[$type]; + + + $model = $modelClass::findOrFail($id); $model->update($validate); @@ -817,8 +825,6 @@ class SurveyorController extends Controller //abort(403, 'Sorry! You are not allowed to view users.'); } - // Retrieve data from the database - $models = [ 'Bentuk Tanah' => BentukTanah::class, 'Kontur Tanah' => KonturTanah::class, @@ -828,9 +834,14 @@ class SurveyorController extends Controller 'Jenis Bangunan' => JenisBangunan::class, 'Kondisi Bangunan' => KondisiBangunan::class, 'Sifat Bangunan' => SifatBangunan::class, - // 'Spek Kategori Bangunan' => SpekKategoritBangunan::class, - // 'Spek Bangunan' => SpekBangunan::class, + 'Spek Kategori Bangunan' => SpekKategoritBangunan::class, + 'Spek Bangunan' => SpekBangunan::class, 'Sarana Pelengkap' => SaranaPelengkap::class, + 'Lalu Lintas Depan Lokasi' => LaluLintasLokasi::class, + 'Tingkat Keramaian' => TingkatKeramaian::class, + 'Golongan Masyarakat Sekitar' => GolonganMasySekitar::class, + 'Lantai Unit' => Lantai::class, + 'View Unit' => ViewUnit::class, ]; @@ -840,8 +851,6 @@ class SurveyorController extends Controller throw new InvalidArgumentException("Invalid type: $type"); } - - // Apply search filter if provided if ($request->has('search') && !empty($request->get('search'))) { $search = $request->get('search'); $query->where(function ($q) use ($search) { @@ -897,24 +906,13 @@ class SurveyorController extends Controller { try { - $modelClasses = [ - 'bentuk-tanah' => BentukTanah::class, - 'kontur-tanah' => KonturTanah::class, - 'posisi-kavling' => PosisiKavling::class, - 'ketinggian-tanah' => KetinggianTanah::class, - 'kondisi-fisik-tanah' => KondisiFisikTanah::class, - 'jenis-bangunan' => JenisBangunan::class, - 'kondisi-bangunan' => KondisiBangunan::class, - 'sifat-bangunan' => SifatBangunan::class, - 'sarana-pelengkap' => SaranaPelengkap::class, - ]; + $modelClass = $this->getModelClass($type); - - if (!array_key_exists($type, $modelClasses)) { + if (!$modelClass) { return response()->json(['success' => false, 'message' => 'Invalid type specified.'], 400); } - $modelClass = $modelClasses[$type]; + $model = $modelClass::findOrFail($id); $model->delete(); @@ -948,6 +946,55 @@ class SurveyorController extends Controller ->findOrFail($id); } + public function submitSurveyor(Request $request, $id) + { + + + $permohonan = Permohonan::find($id); + $permohonan->update([ + 'status' => 'done', + ]); + return redirect() + ->route('surveyor.index') + ->with('success', 'form surveyor submitted successfully'); + + } + + + public function validateSubmit(){ + + } + + + private function getModelClass(string $type): ?string + { + return $this->modelClasses[$type] ?? null; + } + + + + private $modelClasses = [ + 'bentuk-tanah' => BentukTanah::class, + 'kontur-tanah' => KonturTanah::class, + 'posisi-kavling' => PosisiKavling::class, + 'ketinggian-tanah' => KetinggianTanah::class, + 'kondisi-fisik-tanah' => KondisiFisikTanah::class, + 'jenis-bangunan' => JenisBangunan::class, + 'kondisi-bangunan' => KondisiBangunan::class, + 'sifat-bangunan' => SifatBangunan::class, + 'sarana-pelengkap' => SaranaPelengkap::class, + 'lalu-lintas-lokasi' => LaluLintasLokasi::class, + 'tingkat-keramaian' => TingkatKeramaian::class, + 'gol-mas-sekitar' => GolonganMasySekitar::class, + 'spek-kategori-bangunan' => SpekKategoritBangunan::class, + 'spek-bangunan' => SpekBangunan::class, + 'lantai-unit' => Lantai::class, + 'view-unit' => ViewUnit::class, + ]; + + + + private function getCommonData() { return [ @@ -964,21 +1011,34 @@ class SurveyorController extends Controller 'spekKategoriBangunan' => SpekKategoritBangunan::all(), 'spekBangunan' => SpekBangunan::all(), 'saranaPelengkap' => SaranaPelengkap::all(), - 'arahMataAngin' => ArahMataAngin::all() + 'arahMataAngin' => ArahMataAngin::all(), + 'lantai' => Lantai::all(), + 'viewUnit' => ViewUnit::all(), + 'golMasySekitar' => GolonganMasySekitar::all(), + 'tingkatKeramaian' => TingkatKeramaian::all(), + 'laluLintasLokasi' => LaluLintasLokasi::all(), + ]; } - public function submitSurveyor(Request $request, $id) - { - $permohonan = Permohonan::find($id); - $permohonan->update([ - 'status' => 'done', - ]); - return redirect() - ->route('surveyor.index') - ->with('success', 'form surveyor submitted successfully'); - - } + private const HEADERS = [ + 'bentuk-tanah' => ['Bentuk Tanah', 'bentuk-tanah'], + 'kontur-tanah' => ['Kontur Tanah', 'kontur-tanah'], + 'posisi-kavling' => ['Posisi Kavling', 'posisi-kavling'], + 'ketinggian-tanah' => ['Ketinggian Tanah', 'ketinggian-tanah'], + 'kondisi-fisik-tanah' => ['Kondisi Fisik Tanah', 'kondisi-fisik-tanah'], + 'jenis-bangunan' => ['Jenis Bangunan', 'jenis-bangunan'], + 'kondisi-bangunan' => ['Kondisi Bangunan', 'kondisi-bangunan'], + 'sifat-bangunan' => ['Sifat Bangunan', 'sifat-bangunan'], + 'sarana-pelengkap' => ['Sarana Pelengkap', 'sarana-pelengkap'], + 'lalu-lintas-lokasi' => ['Lalu Lintas Depan Lokasi', 'lalu-lintas-lokasi'], + 'tingkat-keramaian' => ['Tingkat Keramaian', 'tingkat-keramaian'], + 'gol-mas-sekitar' => ['Golongan Masyarakat Sekitar', 'gol-mas-sekitar'], + 'spek-kategori-bangunan' => ['Spek Kategori Bangunan', 'spek-kategori-bangunan'], + 'spek-bangunan' => ['Spek Bangunan', 'spek-bangunan'], + 'lantai-unit' => ['Lantai Unit', 'lantai-unit'], + 'view-unit' => ['View Unit', 'view-unit'], + ]; } diff --git a/app/Http/Controllers/TeamsController.php b/app/Http/Controllers/TeamsController.php index e360132..9efc3ca 100644 --- a/app/Http/Controllers/TeamsController.php +++ b/app/Http/Controllers/TeamsController.php @@ -31,20 +31,25 @@ class TeamsController extends Controller * Show the form for creating a new resource. */ public function create() - { +{ - // cek region apakah sudah ada di tabel teams - $regionTeam = Teams::pluck('regions_id')->toArray(); - $region = Regions::whereNotIn('id', $regionTeam)->get(); + $regionTeam = Teams::pluck('regions_id')->toArray(); - // cek user apakah sudah ada di tabel teams_users - $userTeam = TeamsUsers::pluck('user_id')->toArray(); - $user = User::whereNotIn('id', $userTeam) - ->with('roles') - ->get(); + $regions = Regions::whereNotIn('id', $regionTeam)->get(); - return view('lpj::teams.form', compact('region', 'user')); - } + $userTeam = TeamsUsers::pluck('user_id')->toArray(); + $usersWithRole = User::whereNotIn('id', $userTeam) + ->with('roles') // Eager load roles + ->get(); + + $user = $usersWithRole->filter(function ($user) { + return $user->roles->contains(function ($role) { + return $role->name === 'surveyor' || $role->name === 'surveyor-penilai' || $role->name === 'senior-officer'; + }); + }); + + return view('lpj::teams.form', compact('regions', 'user')); +} /** * Store a newly created resource in storage. @@ -97,16 +102,23 @@ class TeamsController extends Controller { $teams = Teams::find($id); - - $region = Regions::all(); + $regions = Regions::all(); $usedUsers = TeamsUsers::where('teams_id', '!=', $id)->pluck('user_id')->toArray(); - $user = User::whereNotIn('id', $usedUsers) + $usersWithRole = User::whereNotIn('id', $usedUsers) ->with('roles') ->get(); + + + $user = $usersWithRole->filter(function ($user) { + return $user->roles->contains(function ($role) { + return $role->name === 'surveyor' || $role->name === 'surveyor-penilai' || $role->name === 'senior-officer'; + }); + }); + // Ambil user yang sudah ada di tim ini $selectedUsers = $teams->teamsUsers->pluck('user_id')->toArray(); - return view('lpj::teams.form', compact('teams', 'region', 'user', 'selectedUsers')); + return view('lpj::teams.form', compact('teams', 'regions', 'user', 'selectedUsers')); } /** diff --git a/app/Http/Controllers/TenderController.php b/app/Http/Controllers/TenderController.php index 1ec30cb..6dd992f 100644 --- a/app/Http/Controllers/TenderController.php +++ b/app/Http/Controllers/TenderController.php @@ -241,15 +241,25 @@ class TenderController extends Controller } - - - /** - * Remove the specified resource from storage. + * Tampilkan Surat Tender */ - public function destroy($id) + public function showSuratTender($noreg) { - // + $penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first(); + + // Kalau tidak ketemu nomor registrasi dengan tabel penawaran + if (!$penawaran) { + return redirect()->route('tender.penawaran.createPenawaran', ['noreg' => $noreg]) + ->with('error', 'Anda Belum Membuat Penawaran. Silahkan isi terlebih dahulu!'); + } + // Jika batas tanggal penawaran sudah lewat + if ($penawaran->end_date < date('Y-m-d')) { + return redirect()->route('tender.penawaran.editPenawaran', ['noreg' => $noreg]) + ->with('error', 'Sudah Kadaluarsa. Silahkan perpanjang tanggal penawaran terlebih dahulu!'); + } + + return view('lpj::penawaran.surat_tender', compact('penawaran', 'noreg')); } public function datatablesPenawaran(Request $request) diff --git a/app/Http/Requests/DebitureRequest.php b/app/Http/Requests/DebitureRequest.php index 7f83fbb..40b608e 100644 --- a/app/Http/Requests/DebitureRequest.php +++ b/app/Http/Requests/DebitureRequest.php @@ -4,6 +4,7 @@ use Illuminate\Foundation\Http\FormRequest; use Modules\Lpj\Rules\UniqueCifExceptZero; + use Modules\Lpj\Rules\UniqueExcept; class DebitureRequest extends FormRequest { diff --git a/app/Http/Requests/JenisLegalitasJaminanRequest.php b/app/Http/Requests/JenisLegalitasJaminanRequest.php index 1d5d98c..82fb205 100644 --- a/app/Http/Requests/JenisLegalitasJaminanRequest.php +++ b/app/Http/Requests/JenisLegalitasJaminanRequest.php @@ -15,9 +15,11 @@ : array { return [ - 'code' => 'required|max:6', - 'name' => 'required|max:255', - 'slug' => 'required|max:255', + 'code' => 'required|max:6', + 'name' => 'required|max:255', + 'slug' => 'required|max:255', + 'custom_field' => 'nullable|max:255', + 'custom_field_type' => 'nullable|max:255', ]; } @@ -32,7 +34,7 @@ public function prepareForValidation() { - if($this->method() == 'POST' && $this->code == null) { + if ($this->method() == 'POST' && $this->code == null) { $this->merge([ 'code' => IdGenerator::generate( ['table' => 'jenis_legalitas_jaminan', 'length' => 6, 'prefix' => 'JLJ', 'field' => 'code'], @@ -41,7 +43,7 @@ ]); } else { $this->merge([ - 'slug' => Str::slug($this->name), + 'slug' => Str::slug($this->name), ]); } } diff --git a/app/Http/Requests/KJPPRequest.php b/app/Http/Requests/KJPPRequest.php index e3e6fe4..6a693a8 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,28 @@ 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', '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', + '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 +75,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 +86,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/PemilikJaminanRequest.php b/app/Http/Requests/PemilikJaminanRequest.php index b6e267d..e139f55 100644 --- a/app/Http/Requests/PemilikJaminanRequest.php +++ b/app/Http/Requests/PemilikJaminanRequest.php @@ -26,6 +26,7 @@ 'address' => 'nullable|string', 'postal_code' => 'nullable|string|max:10', 'status' => 'nullable|boolean', + 'detail_sertifikat' => 'nullable|string|max:255', ]; //$rules['nomor_id'] = 'nullable|max:16|unique:pemilik_jaminan,nomor_id,debiture_id,' . $this->debiture_id; @@ -41,4 +42,24 @@ { return true; } + + public function prepareForValidation() { + + $detailSertifikat = []; + $names = $this->input('detail_sertifikat.name', []); + $nomorIds = $this->input('detail_sertifikat.nomor_id', []); + + foreach ($names as $index => $name) { + if (isset($nomorIds[$index])) { + $detailSertifikat[] = [ + 'name' => $name, + 'nomor_id' => $nomorIds[$index] + ]; + } + } + + $this->merge([ + 'detail_sertifikat' => json_encode($detailSertifikat), + ]); + } } diff --git a/app/Http/Requests/PenilaianRequest.php b/app/Http/Requests/PenilaianRequest.php index 0d9c1bf..a3c1db0 100644 --- a/app/Http/Requests/PenilaianRequest.php +++ b/app/Http/Requests/PenilaianRequest.php @@ -33,11 +33,16 @@ class PenilaianRequest extends FormRequest 'tanggal_kunjungan' => 'required|max:255', 'status' => 'required|string', 'nomor_registrasi' => 'required|string', - 'surveyor_id' => 'nullable|required_without:penilai_surveyor_id', - 'penilaian_id' => 'nullable|required_without:penilai_surveyor_id', - 'penilai_surveyor_id' => 'nullable|required_without_all:surveyor_id,penilaian_id', + + 'surveyor_id' => 'nullable|required_without_all:penilai_surveyor_id,surveyor_region_id,penilai_region_id,penilai_id', + 'penilai_id' => 'nullable|required_without_all:penilai_surveyor_id,surveyor_region_id,penilai_region_id,surveyor_id', + 'penilai_surveyor_id' => 'nullable', + 'surveyor_region_id' => 'nullable|required_without_all:penilai_surveyor_id,penilai_region_id,penilai_id,surveyor_id', + 'penilai_region_id' => 'nullable|required_without_all:penilai_surveyor_id,surveyor_region_id,penilai_id,surveyor_id', + 'keterangan' => 'nullable', ]; + } diff --git a/app/Http/Requests/PermohonanRequest.php b/app/Http/Requests/PermohonanRequest.php index 8d6ef20..3f2f252 100644 --- a/app/Http/Requests/PermohonanRequest.php +++ b/app/Http/Requests/PermohonanRequest.php @@ -17,10 +17,10 @@ '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' => 'required|string', + 'status' => 'nullable|string', 'jenis_fasilitas_kredit_id' => 'required|exists:jenis_fasilitas_kredit,id', 'nilai_plafond_id' => 'required|exists:nilai_plafond,id', 'status_bayar' => 'required|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/Http/Requests/SurveyorRequest.php b/app/Http/Requests/SurveyorRequest.php index b986f8e..0762ad9 100644 --- a/app/Http/Requests/SurveyorRequest.php +++ b/app/Http/Requests/SurveyorRequest.php @@ -4,62 +4,138 @@ namespace Modules\Lpj\Http\Requests; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Rule; + class SurveyorRequest extends FormRequest { /** - * Get the validation rules that apply to the request. + * Table mapping for different actionszz */ - public function rules() - : array - { - - $action = $this->input('action'); - - $uniqueTable = [ - 'bentuk-tanah' => 'bentuk_tanah', - 'kontur-tanah' => 'kontur_tanah', - 'posisi-kavling' => 'posisi_kavling', - 'ketinggian-tanah' => 'ketinggian_tanah', - 'kondisi-fisik-tanah' => 'kondisi_fisik_tanah', - 'kondisi-bangunan' => 'kondisi_bangunan', - 'jenis-bangunan' => 'jenis_bangunan', - 'sifat-bangunan' => 'sifat_bangunan', - 'sarana-pelengkap' => 'sarana_pelengkap', - 'lalu_lintas_lokasi' => 'lalu_lintas_lokasi', - 'tingkat-keramaian' => 'tingkat_keramaian', - ]; - - - - $rules = [ - 'name' => 'required|max:255', - - ]; - - $id = $this->route('id'); - - if ($this->method() == 'PUT' || $this->method() == 'PATCH') { - $rules['code'] = 'required|max:50|unique:' . $uniqueTable[$action] . ',code,' . $id; - } else { - - $rules['code'] = 'required|max:50|unique:' . $uniqueTable[$action] . ',code'; - } - return $rules; - } + private const TABLE_MAPPING = [ + 'bentuk-tanah' => 'bentuk_tanah', + 'kontur-tanah' => 'kontur_tanah', + 'posisi-kavling' => 'posisi_kavling', + 'ketinggian-tanah' => 'ketinggian_tanah', + 'kondisi-fisik-tanah' => 'kondisi_fisik_tanah', + 'kondisi-bangunan' => 'kondisi_bangunan', + 'jenis-bangunan' => 'jenis_bangunan', + 'sifat-bangunan' => 'sifat_bangunan', + 'sarana-pelengkap' => 'sarana_pelengkap', + 'lalu-lintas-lokasi' => 'lalu_lintas_lokasi', + 'tingkat-keramaian' => 'tingkat_keramaian', + 'gol-mas-sekitar' => 'gol_mas_sekitar', + 'spek-kategori-bangunan' => 'spek_kategori_bangunan', + 'spek-bangunan' => 'spek_bangunan', + 'lantai-unit' => 'lantai', + 'view-unit' => 'view_unit', + ]; /** * Determine if the user is authorized to make this request. */ - public function authorize() - : bool + public function authorize(): bool { return true; } - protected function prepareForValidation() + /** + * Get the validation rules that apply to the request. + */ + public function rules(): array + { + return array_merge( + $this->getBaseRules(), + $this->getActionSpecificRules(), + $this->getCodeValidationRules() + ); + } + + /** + * Get base validation rules + */ + private function getBaseRules(): array + { + return [ + 'name' => 'required|max:255', + ]; + } + + /** + * Get action specific validation rules + */ + private function getActionSpecificRules(): array + { + $action = $this->input('action'); + + return match ($action) { + 'spek-bangunan' => [ + 'spek_kategori_bangunan_id' => [ + 'required', + + ], + ], + // Add more action specific rules here + default => [], + }; + } + + /** + * Get code validation rules + */ + private function getCodeValidationRules(): array + { + $action = $this->input('action'); + $table = self::TABLE_MAPPING[$action] ?? null; + + if (!$table) { + return []; + } + + $rules = ['required', 'max:50']; + + if ($this->isMethod('PUT') || $this->isMethod('PATCH')) { + $rules[] = Rule::unique($table, 'code')->ignore($this->route('id')); + } else { + $rules[] = Rule::unique($table, 'code'); + } + + return ['code' => $rules]; + } + + /** + * Prepare the data for validation. + */ + protected function prepareForValidation(): void { $this->merge([ 'status' => true, ]); } + + /** + * Get custom messages for validator errors. + */ + public function messages(): array + { + return [ + 'name.required' => 'Nama harus diisi', + 'name.max' => 'Nama tidak boleh lebih dari 255 karakter', + 'code.required' => 'Kode harus diisi', + 'code.max' => 'Kode tidak boleh lebih dari 50 karakter', + 'code.unique' => 'Kode sudah digunakan', + 'spek_kategori_bangunan_id.required' => 'Kategori bangunan harus dipilih', + ]; + } + + /** + * Get custom attributes for validator errors. + */ + public function attributes(): array + { + return [ + 'name' => 'Nama', + 'code' => 'Kode', + 'spek_kategori_bangunan_id' => 'Kategori Bangunan', + ]; + } } diff --git a/app/Http/Requests/TenderPenawaranRequest.php b/app/Http/Requests/TenderPenawaranRequest.php index 6472638..85e66a5 100644 --- a/app/Http/Requests/TenderPenawaranRequest.php +++ b/app/Http/Requests/TenderPenawaranRequest.php @@ -63,13 +63,17 @@ class TenderPenawaranRequest extends FormRequest $endDate = strtotime($this->input('end_date')); $today = strtotime(date('Y-m-d')); + // Jika dalam keadaan tambah penawaran maka munculkan pesan ini + if ($this->method() !== 'PUT') { + if ($startDate < $today) { + $validator->errors()->add('start_date', 'Tanggal Awal tidak boleh sebelum hari ini.'); + } + } + if ($endDate < $startDate) { $validator->errors()->add('end_date', 'Tanggal Akhir tidak boleh lebih awal dari Tanggal Awal.'); } - if ($startDate < $today) { - $validator->errors()->add('start_date', 'Tanggal Awal tidak boleh sebelum hari ini.'); - } // Validasi minimal 3 pilihan pada nama_kjpp $namaKjpp = $this->input('kjpp', []); diff --git a/app/Models/DetailDokumenJaminan.php b/app/Models/DetailDokumenJaminan.php index e164ea5..ad76f13 100644 --- a/app/Models/DetailDokumenJaminan.php +++ b/app/Models/DetailDokumenJaminan.php @@ -16,8 +16,9 @@ 'jenis_legalitas_jaminan_id', 'name', 'dokumen_jaminan', + 'dokumen_nomor', 'keterangan', - + 'details', 'status', 'authorized_at', 'authorized_status', diff --git a/app/Models/GolonganMasySekitar.php b/app/Models/GolonganMasySekitar.php index 5140710..a4d1f9a 100644 --- a/app/Models/GolonganMasySekitar.php +++ b/app/Models/GolonganMasySekitar.php @@ -10,10 +10,12 @@ class GolonganMasySekitar extends Model { use HasFactory; + protected $table = 'gol_mas_sekitar'; /** * The attributes that are mass assignable. */ - protected $fillable = []; + protected $fillable = ['code', 'name', 'status']; + protected static function newFactory(): GolonganMasySekitarFactory { diff --git a/app/Models/JenisLaporan.php b/app/Models/JenisLaporan.php index 13e248e..75d268c 100644 --- a/app/Models/JenisLaporan.php +++ b/app/Models/JenisLaporan.php @@ -19,4 +19,9 @@ class JenisLaporan extends Model protected $fillable = ['code', 'name']; + + public function penawaran() + { + return $this->hasMany(PenawaranTender::class, 'jenis_laporan_id', 'id'); + } } diff --git a/app/Models/JenisLegalitasJaminan.php b/app/Models/JenisLegalitasJaminan.php index 2d7567c..dd8f840 100644 --- a/app/Models/JenisLegalitasJaminan.php +++ b/app/Models/JenisLegalitasJaminan.php @@ -7,5 +7,5 @@ class JenisLegalitasJaminan extends Base { protected $table = 'jenis_legalitas_jaminan'; - protected $fillable = ['code', 'name','slug']; + protected $fillable = ['code', 'name','slug','custom_field','custom_field_type']; } 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/KondisiBangunan.php b/app/Models/KondisiBangunan.php index 131c0fa..0fa0f86 100644 --- a/app/Models/KondisiBangunan.php +++ b/app/Models/KondisiBangunan.php @@ -14,7 +14,7 @@ class KondisiBangunan extends Model /** * The attributes that are mass assignable. */ - protected $fillable = []; + protected $fillable = ['code','name']; protected static function newFactory(): KondisiBangunanFactory { diff --git a/app/Models/Lantai.php b/app/Models/Lantai.php new file mode 100644 index 0000000..3330df1 --- /dev/null +++ b/app/Models/Lantai.php @@ -0,0 +1,23 @@ +hasMany(TujuanPenilaianKJPP::class, 'id', 'tujuan_penilaian_kjpp_id'); + return $this->belongsTo(TujuanPenilaianKJPP::class, 'tujuan_penilaian_kjpp_id','id'); } + + public function permohonan() + { + return $this->belongsTo(Permohonan::class, 'nomor_registrasi', 'nomor_registrasi'); + } + + public function jenisLaporan() + { + return $this->belongsTo(JenisLaporan::class, 'jenis_laporan_id', 'id'); + } + + } diff --git a/app/Models/Penilaian.php b/app/Models/Penilaian.php index cb2f44c..1de2dc5 100644 --- a/app/Models/Penilaian.php +++ b/app/Models/Penilaian.php @@ -17,7 +17,7 @@ class Penilaian extends Model */ protected $table = 'penilaian'; protected $fillable = [ - 'jenis_penilaian_id', 'teams_id', 'tanggal_kunjungan', 'keterangan','nomor_registrasi','penilaian_id','surveyor_id','penilai_surveyor_id', + 'jenis_penilaian_id', 'penilaian_id', 'tanggal_kunjungan', 'keterangan','nomor_registrasi', 'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_at', 'created_by', 'updated_at', 'updated_by', 'deleted_at', 'deleted_by' ]; @@ -39,23 +39,12 @@ class Penilaian extends Model public function userPenilai() { - return $this->belongsTo(User::class, 'penilaian_id', 'id'); + return $this->hasMany(PenilaianTeam::class, 'penilaian_id', 'id'); } - public function userSurveyor() - { - return $this->belongsTo(User::class, 'surveyor_id', 'id'); - } - - public function userPenilaiSurveyor() - { - return $this->belongsTo(User::class, 'penilai_surveyor_id', 'id'); - } public function permohonan() { return $this->belongsTo(Permohonan::class, 'nomor_registrasi', 'nomor_registrasi'); } - - } diff --git a/app/Models/PenilaianTeam.php b/app/Models/PenilaianTeam.php new file mode 100644 index 0000000..808d0de --- /dev/null +++ b/app/Models/PenilaianTeam.php @@ -0,0 +1,39 @@ +belongsTo(User::class, 'user_id', 'id'); + } + + public function team(){ + + return $this->belongsTo(Team::class, 'team_id', 'id'); + } + + public function penilaian(){ + + return $this->hasMany(Penilaian::class, 'penilaian_id', 'id'); + } + + protected static function newFactory(): PenilaianTeamFactory + { + //return PenilaianTeamFactory::new(); + } +} diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index a9750b2..1dd7bdd 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -1,82 +1,96 @@ belongsTo(User::class); - } - - public function branch() - { - return $this->belongsTo(Branch::class); - } - - public function tujuanPenilaian() - { - return $this->belongsTo(TujuanPenilaian::class); - } - - public function debiture() - { - return $this->belongsTo(Debiture::class); - } - - public function documents() - { - return $this->hasMany(DokumenJaminan::class); - } - - public function nilaiPlafond() - { - return $this->belongsTo(NilaiPlafond::class); - } - - public function jenisFasilitasKredit() - { - return $this->belongsTo(JenisFasilitasKredit::class); - } - - public function penilaian() - { - return $this->belongsTo(Penilaian::class, 'nomor_registrasi', 'nomor_registrasi'); - } + return $this->belongsTo(User::class); } + + public function branch() + { + return $this->belongsTo(Branch::class); + } + + public function tujuanPenilaian() + { + return $this->belongsTo(TujuanPenilaian::class); + } + + public function debiture() + { + return $this->belongsTo(Debiture::class); + } + + public function documents() + { + return $this->hasMany(DokumenJaminan::class); + } + + public function nilaiPlafond() + { + return $this->belongsTo(NilaiPlafond::class); + } + + public function jenisFasilitasKredit() + { + return $this->belongsTo(JenisFasilitasKredit::class); + } + + public function penilaian() + { + return $this->belongsTo(Penilaian::class, 'nomor_registrasi', 'nomor_registrasi'); + } + + public function penawaranTender() + { + return $this->hasMany(PenawaranTender::class, 'nomor_registrasi'); + } + + public function region() + { + return $this->belongsTo(Regions::class, 'region_id'); + } + + public function penawaran(){ + return $this->belongsTo(PenawaranTender::class, 'nomor_registrasi', 'nomor_registrasi'); + } +} diff --git a/app/Models/SLA.php b/app/Models/SLA.php new file mode 100644 index 0000000..3646abf --- /dev/null +++ b/app/Models/SLA.php @@ -0,0 +1,18 @@ +hasMany(TeamsUsers::class, 'teams_id', 'id'); } - public function penilaian(){ - return $this->hasMany(Penilaian::class, 'teams_id', 'id'); + public function penilaianTeam(){ + return $this->hasMany(PenilaianTeam::class, 'team_id', 'id'); } diff --git a/app/Models/TingkatKeramaian.php b/app/Models/TingkatKeramaian.php index 19e6221..2c82169 100644 --- a/app/Models/TingkatKeramaian.php +++ b/app/Models/TingkatKeramaian.php @@ -10,6 +10,7 @@ class TingkatKeramaian extends Model { use HasFactory; + protected $table = 'tingkat_keramaian'; /** * The attributes that are mass assignable. */ diff --git a/app/Models/ViewUnit.php b/app/Models/ViewUnit.php new file mode 100644 index 0000000..f72e3e8 --- /dev/null +++ b/app/Models/ViewUnit.php @@ -0,0 +1,23 @@ +id = $id; - } + protected $id; - public function validate($attribute, $value, $fail): void - { - if (Debiture::where($attribute, $value) - ->where('id', '!=', $this->id) - ->where($attribute, '!=', '0000000000') - ->exists()) { - $fail('The :attribute field must be uniquse.'.$this->id); + public function __construct($id = null) + { + $this->id = $id; + } + + /** + * Run the validation rule. + */ + public function validate(string $attribute, mixed $value, Closure $fail) + : void { + if ($value !== '0000000000' && $value !== null && Debiture::query()->where($attribute, $value)->when( + $this->id, + function ($query) { + $query->where('id', '!=', $this->id); + }, + )->exists()) { + $fail('The :attribute field must be unique.'); + } } } -} 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_10_16_153543_create_analisa_table.php b/database/migrations/2024_10_16_153543_create_analisa_table.php index b251740..2a86af2 100644 --- a/database/migrations/2024_10_16_153543_create_analisa_table.php +++ b/database/migrations/2024_10_16_153543_create_analisa_table.php @@ -17,6 +17,7 @@ return new class extends Migration $table->unsignedBigInteger('permohonan_id'); $table->foreign('permohonan_id')->references('id')->on('permohonan'); $table->string('luas'); + $table->unsignedBigInteger('jenis_jaminan_id'); $table->char('authorized_status', 1)->nullable(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); diff --git a/database/migrations/2024_10_16_153558_create_analisa_tanah_bangunan_table.php b/database/migrations/2024_10_16_153558_create_analisa_tanah_bangunan_table.php index 585dbf4..2c0cf23 100644 --- a/database/migrations/2024_10_16_153558_create_analisa_tanah_bangunan_table.php +++ b/database/migrations/2024_10_16_153558_create_analisa_tanah_bangunan_table.php @@ -20,7 +20,7 @@ return new class extends Migration $table->string('kontur_tanah'); $table->string('ketinggian_jalan'); $table->string('kontur_jalan'); - $table->string('posis_kavling'); + $table->string('posisi_kavling'); $table->enum('tusuk_sate', ['yes', 'no']); $table->enum('lockland', ['yes', 'no']); $table->string('kondisi_fisik_tanah'); diff --git a/database/migrations/2024_10_16_153841_create_denah_table.php b/database/migrations/2024_10_16_153841_create_denah_table.php index 308a7ad..71475ff 100644 --- a/database/migrations/2024_10_16_153841_create_denah_table.php +++ b/database/migrations/2024_10_16_153841_create_denah_table.php @@ -18,7 +18,7 @@ return new class () extends Migration { $table->string('foto_denah'); $table->string('luas'); - + $table->unsignedBigInteger('jenis_jaminan_id'); $table->char('authorized_status', 1)->nullable(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); diff --git a/database/migrations/2024_10_16_153902_create_foto_jaminan_table.php b/database/migrations/2024_10_16_153902_create_foto_jaminan_table.php index f0e1000..3c7f514 100644 --- a/database/migrations/2024_10_16_153902_create_foto_jaminan_table.php +++ b/database/migrations/2024_10_16_153902_create_foto_jaminan_table.php @@ -16,7 +16,7 @@ return new class () extends Migration { $table->foreign('permohonan_id')->references('id')->on('permohonan'); $table->string('pendamping'); - + $table->unsignedBigInteger('jenis_jaminan_id'); $table->char('authorized_status', 1)->nullable(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); diff --git a/database/migrations/2024_10_16_153918_create_objek_jaminan_table.php b/database/migrations/2024_10_16_153918_create_objek_jaminan_table.php index b55f7eb..3d02a38 100644 --- a/database/migrations/2024_10_16_153918_create_objek_jaminan_table.php +++ b/database/migrations/2024_10_16_153918_create_objek_jaminan_table.php @@ -19,6 +19,7 @@ return new class () extends Migration { $table->string('name'); $table->string('foto_objek'); + $table->unsignedBigInteger('jenis_jaminan_id'); $table->char('authorized_status', 1)->nullable(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); diff --git a/database/migrations/2024_10_25_014340_create_lokasi_unit_table.php b/database/migrations/2024_10_25_014340_create_lokasi_unit_table.php new file mode 100644 index 0000000..cc51e6d --- /dev/null +++ b/database/migrations/2024_10_25_014340_create_lokasi_unit_table.php @@ -0,0 +1,37 @@ +id(); + $table->string('code')->unique()->index(); + $table->string('name'); + $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('lokasi_unit'); + } +}; diff --git a/database/migrations/2024_10_25_014428_create_view_unit_table.php b/database/migrations/2024_10_25_014428_create_view_unit_table.php new file mode 100644 index 0000000..5a99cfe --- /dev/null +++ b/database/migrations/2024_10_25_014428_create_view_unit_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('code')->unique()->index(); + $table->string('name'); + $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('view_unit'); + } +}; diff --git a/database/migrations/2024_10_28_095337_create_s_l_as_table.php b/database/migrations/2024_10_28_095337_create_s_l_as_table.php new file mode 100644 index 0000000..bf5549c --- /dev/null +++ b/database/migrations/2024_10_28_095337_create_s_l_as_table.php @@ -0,0 +1,27 @@ +id(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('sla'); + } +}; diff --git a/database/migrations/2024_10_31_024227_create_kategori_jenis_aset_table.php b/database/migrations/2024_10_31_024227_create_kategori_jenis_aset_table.php new file mode 100644 index 0000000..50b5cb3 --- /dev/null +++ b/database/migrations/2024_10_31_024227_create_kategori_jenis_aset_table.php @@ -0,0 +1,37 @@ +id(); + $table->string('name'); + $table->string('code'); + $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('kategori_jenis_aset'); + } +}; diff --git a/database/migrations/2024_10_31_032505_update_penilaian_table.php b/database/migrations/2024_10_31_032505_update_penilaian_table.php new file mode 100644 index 0000000..53d1715 --- /dev/null +++ b/database/migrations/2024_10_31_032505_update_penilaian_table.php @@ -0,0 +1,38 @@ +dropColumn('teams_id'); + + + $table->dropColumn('surveyor_id'); + $table->dropColumn('penilaian_id'); + + $table->dropColumn('penilai_surveyor_id'); + + }); + } + + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('penilaian', function (Blueprint $table) { + $table->foreignIdFor(Teams::class); + $table->foreignIdFor(User::class); + }); + } +}; diff --git a/database/migrations/2024_10_31_032940_create_penilai_team_table.php b/database/migrations/2024_10_31_032940_create_penilai_team_table.php new file mode 100644 index 0000000..db287b2 --- /dev/null +++ b/database/migrations/2024_10_31_032940_create_penilai_team_table.php @@ -0,0 +1,38 @@ +id(); + $table->unsignedBigInteger('penilaian_id'); + $table->unsignedBigInteger('team_id'); + $table->unsignedBigInteger('user_id'); + $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('penilai_team'); + } +}; diff --git a/database/migrations/2024_11_01_023117_update_debitures_table.php b/database/migrations/2024_11_01_023117_update_debitures_table.php new file mode 100644 index 0000000..cadf6b0 --- /dev/null +++ b/database/migrations/2024_11_01_023117_update_debitures_table.php @@ -0,0 +1,28 @@ +dropUnique(['cif']); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('debitures', function (Blueprint $table) { + $table->string('cif')->unique()->change(); + }); + } +}; 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 new file mode 100644 index 0000000..87c765e --- /dev/null +++ b/database/migrations/2024_11_01_081201_create_kategori_form_analisa_inspeksi_table.php @@ -0,0 +1,39 @@ +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(); + $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('kategori_form_analisa_inspeksi'); + } +}; diff --git a/database/migrations/2024_11_01_081225_create_label_name_inspeksi_table.php b/database/migrations/2024_11_01_081225_create_label_name_inspeksi_table.php new file mode 100644 index 0000000..814024d --- /dev/null +++ b/database/migrations/2024_11_01_081225_create_label_name_inspeksi_table.php @@ -0,0 +1,28 @@ +id(); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('label_name_inspeksi'); + } +}; diff --git a/database/migrations/2024_11_01_083625_update_pemilik_jaminan_table.php b/database/migrations/2024_11_01_083625_update_pemilik_jaminan_table.php new file mode 100644 index 0000000..ec38fd5 --- /dev/null +++ b/database/migrations/2024_11_01_083625_update_pemilik_jaminan_table.php @@ -0,0 +1,28 @@ +string('detail_sertifikat')->nullable()->after('name'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('pemilik_jaminan', function (Blueprint $table) { + $table->dropColumn('detail_sertifikat'); + }); + } +}; diff --git a/database/migrations/2024_11_04_080443_update_jenis_legalitas_jaminan_table.php b/database/migrations/2024_11_04_080443_update_jenis_legalitas_jaminan_table.php new file mode 100644 index 0000000..e8e93e6 --- /dev/null +++ b/database/migrations/2024_11_04_080443_update_jenis_legalitas_jaminan_table.php @@ -0,0 +1,30 @@ +string('custom_field')->nullable()->after('slug'); + $table->string('custom_field_type')->nullable()->after('custom_field'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('jenis_legalitas_jaminan', function (Blueprint $table) { + $table->dropColumn('custom_field'); + $table->dropColumn('custom_field_type'); + }); + } +}; diff --git a/database/migrations/2024_11_04_083227_update_detail_dokumen_jaminan_table.php b/database/migrations/2024_11_04_083227_update_detail_dokumen_jaminan_table.php new file mode 100644 index 0000000..ad58fbf --- /dev/null +++ b/database/migrations/2024_11_04_083227_update_detail_dokumen_jaminan_table.php @@ -0,0 +1,28 @@ +string('details')->nullable()->after('dokumen_jaminan_id'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('detail_dokumen_jaminan', function (Blueprint $table) { + $table->dropColumn('details'); + }); + } +}; 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/seeders/ArahMataAnginSeeder.php b/database/seeders/ArahMataAnginSeeder.php new file mode 100644 index 0000000..1e012ea --- /dev/null +++ b/database/seeders/ArahMataAnginSeeder.php @@ -0,0 +1,42 @@ + 'Utara', + ], + [ + 'name' => 'Timur Laut', + ], + [ + 'name' => 'Timur', + ], + [ + 'name' => 'Tenggara', + ], + [ + 'name' => 'Selatan', + ], + [ + 'name' => 'Barat Daya', + ], + [ + 'name' => 'Barat', + ], + [ + 'name' => 'Barat Laut', + ], + ]); + } +} diff --git a/database/seeders/BranchSeeder.php b/database/seeders/BranchSeeder.php new file mode 100644 index 0000000..65a64a1 --- /dev/null +++ b/database/seeders/BranchSeeder.php @@ -0,0 +1,27 @@ + 'C01', + 'name' => 'KPNO', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ] + ]); + } +} diff --git a/database/seeders/CurrencySeeder.php b/database/seeders/CurrencySeeder.php new file mode 100644 index 0000000..c2cd553 --- /dev/null +++ b/database/seeders/CurrencySeeder.php @@ -0,0 +1,48 @@ + 'IDR', + 'name' => 'Rupiah', + 'decimal_places' => 2, + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'code' => 'MYR', + 'name' => 'Ringgit', + 'decimal_places' => 2, + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'code' => 'SAR', + 'name' => 'Riyadh', + 'decimal_places' => 2, + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ] + ]); + } +} diff --git a/database/seeders/DebitureSeeder.php b/database/seeders/DebitureSeeder.php new file mode 100644 index 0000000..d8f57c1 --- /dev/null +++ b/database/seeders/DebitureSeeder.php @@ -0,0 +1,158 @@ + 1, + 'cif' => '1234567890', + 'name' => 'Willy', + 'npwp' => '123455432109876', + 'email' => 'w@gmail.com', + 'phone' => '08113242341', + 'nomor_rekening' => '1081666666', + 'province_code' => '31', + 'city_code' => '31.74', + 'district_code' => '31.74.09', + 'village_code' => '31.74.09.1003', + 'postal_code' => '12630', + 'address' => null, + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'branch_id' => 1, + 'cif' => '0987654321', + 'name' => 'Antonius Ginting', + 'npwp' => '234567890123456', + 'email' => 'x@gmail.com', + 'phone' => '081234567891', + 'nomor_rekening' => '987654310', + 'province_code' => '31', + 'city_code' => '31.71', + 'district_code' => '31.71.06', + 'village_code' => '31.71.06.1001', + 'postal_code' => '10310', + 'address' => 'Jl. Menteng Tengah No.66', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'branch_id' => 1, + 'cif' => '1518467', + 'name' => 'PT ABCD SEJATI', + 'npwp' => '001852600023342', + 'email' => 'abcd@ag.co.id', + 'phone' => '081111555', + 'nomor_rekening' => '0082346', + 'province_code' => '31', + 'city_code' => '31.74', + 'district_code' => '31.74.04', + 'village_code' => '31.74.04.1005', + 'postal_code' => '10420', + 'address' => 'Jl. Raya Kwitang No. 105, Senen, Kwitang, Jakarta Pusat', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'branch_id' => 1, + 'cif' => '12345', + 'name' => 'Testing', + 'npwp' => '102928018391211', + 'email' => 'testing@email.com', + 'phone' => '098172386', + 'nomor_rekening' => '12345', + 'province_code' => '11', + 'city_code' => '11.01', + 'district_code' => '11.01.01', + 'village_code' => '11.01.01.2001', + 'postal_code' => '23773', + 'address' => 'alamat', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'branch_id' => 1, + 'cif' => '0000000000', + 'name' => 'Gartika Pertiwi', + 'npwp' => '123456789101112', + 'email' => 'Gartika_Pertiwi@gmail.com', + 'phone' => '1234567', + 'nomor_rekening' => '1234567', + 'province_code' => '31', + 'city_code' => '31.71', + 'district_code' => '31.71.04', + 'village_code' => '31.71.04.1005', + 'postal_code' => '10420', + 'address' => null, + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'branch_id' => 1, + 'cif' => '1235464575', + 'name' => 'Fleming', + 'npwp' => '123455432109876', + 'email' => 'x@gmail.com', + 'phone' => '08113242341', + 'nomor_rekening' => '1081666666', + 'province_code' => '31', + 'city_code' => '31.74', + 'district_code' => '31.74.09', + 'village_code' => '31.74.09.1001', + 'postal_code' => '12620', + 'address' => 'testt', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'branch_id' => 1, + 'cif' => '1234689743', + 'name' => 'Testing 2', + 'npwp' => '1234689743418451', + 'email' => 'testing@mail.com', + 'phone' => '081385777611', + 'nomor_rekening' => '3575467279562', + 'province_code' => '31', + 'city_code' => '31.71', + 'district_code' => '31.71.06', + 'village_code' => '31.71.06.1001', + 'postal_code' => '10310', + 'address' => 'Jl. Menteng Raya no. 13', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + ]); + } +} diff --git a/database/seeders/DetailDokumenJaminanSeeder.php b/database/seeders/DetailDokumenJaminanSeeder.php new file mode 100644 index 0000000..0fb3f84 --- /dev/null +++ b/database/seeders/DetailDokumenJaminanSeeder.php @@ -0,0 +1,73 @@ + 'Tanah Bangunan', + 'dokumen_jaminan_id' => 1, + 'jenis_legalitas_jaminan_id' => 1, + 'dokumen_jaminan' => 'jaminan/1/1/Test.pdf', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'name' => 'Tanah Bangunan', + 'dokumen_jaminan_id' => 1, + 'jenis_legalitas_jaminan_id' => 3, + 'dokumen_jaminan' => 'jaminan/1/1/Test.pdf', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'name' => 'Tanah Bangunan', + 'dokumen_jaminan_id' => 1, + 'jenis_legalitas_jaminan_id' => 4, + 'dokumen_jaminan' => 'jaminan/1/1/Test.pdf', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'name' => 'Tanah Bangunan', + 'dokumen_jaminan_id' => 1, + 'jenis_legalitas_jaminan_id' => 5, + 'dokumen_jaminan' => 'jaminan/1/1/Test.pdf', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'name' => 'Tanah Bangunan', + 'dokumen_jaminan_id' => 1, + 'jenis_legalitas_jaminan_id' => 6, + 'dokumen_jaminan' => 'jaminan/1/1/Test.pdf', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ] + ]); + } +} diff --git a/database/seeders/DetailPenawaranSeeder.php b/database/seeders/DetailPenawaranSeeder.php new file mode 100644 index 0000000..de38595 --- /dev/null +++ b/database/seeders/DetailPenawaranSeeder.php @@ -0,0 +1,54 @@ + 1, + 'penawaran_id' => 1, + 'biaya_penawaran' => 15000000, + 'attachment' => 'Test.pdf', + 'dokumen_persetujuan' => 'uploads/penawaran/1_1_Test_2_1729826174.pdf', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'kjpp_rekanan_id' => 2, + 'penawaran_id' => 1, + 'biaya_penawaran' => 30000000, + 'attachment' => 'Test.pdf', + 'dokumen_persetujuan' => 'uploads/penawaran/2_2_Test_2_1729826198.pdf', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'kjpp_rekanan_id' => 3, + 'penawaran_id' => 1, + 'biaya_penawaran' => 20000000, + 'attachment' => 'Test.pdf', + 'dokumen_persetujuan' => 'uploads/penawaran/3_3_Test_2_1729826215.pdf', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ] + ]); + } +} diff --git a/database/seeders/DokumenJaminanSeeder.php b/database/seeders/DokumenJaminanSeeder.php new file mode 100644 index 0000000..17f53c6 --- /dev/null +++ b/database/seeders/DokumenJaminanSeeder.php @@ -0,0 +1,34 @@ + 1, + 'jenis_jaminan_id' => 1, + 'pemilik_jaminan_id' => 3, + 'province_code' => '32', + 'city_code' => '32.75', + 'district_code' => '32.75.03', + 'village_code' => '32.75.03.1001', + 'postal_code' => '17125', + 'address' => 'Jl. Apel No. 9', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ] + ]); + } +} diff --git a/database/seeders/HubunganPemilikJaminanSeeder.php b/database/seeders/HubunganPemilikJaminanSeeder.php new file mode 100644 index 0000000..662d7ee --- /dev/null +++ b/database/seeders/HubunganPemilikJaminanSeeder.php @@ -0,0 +1,36 @@ + 'Milik Pribadi' + ], + [ + 'name' => 'Suami/Istri' + ], + [ + 'name' => 'Anak' + ], + [ + 'name' => 'Saudara Kandung' + ], + [ + 'name' => 'Ayah' + ], + [ + 'name' => 'Ibu' + ] + ]); + } +} diff --git a/database/seeders/HubunganPenghuniJaminanSeeder.php b/database/seeders/HubunganPenghuniJaminanSeeder.php new file mode 100644 index 0000000..74abbc8 --- /dev/null +++ b/database/seeders/HubunganPenghuniJaminanSeeder.php @@ -0,0 +1,33 @@ + 'Suami/Istri', + ], + [ + 'name' => 'Anak', + ], + [ + 'name' => 'Saudara Kandung', + ], + [ + 'name' => 'Orang Tua', + ], + [ + 'name' => 'Kontrak/Kost' + ] + ]); + } +} diff --git a/database/seeders/IjinUsahaSeeder.php b/database/seeders/IjinUsahaSeeder.php new file mode 100644 index 0000000..10ccc2a --- /dev/null +++ b/database/seeders/IjinUsahaSeeder.php @@ -0,0 +1,39 @@ + 'IU001', + 'name' => 'Bisnis', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now() + ], + [ + 'code' => 'IU002', + 'name' => 'Properti', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now() + ], + [ + 'code' => 'IU003', + 'name' => 'Personal Properti', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now() + ] + ]); + } +} diff --git a/database/seeders/JenisDokumenSeeder.php b/database/seeders/JenisDokumenSeeder.php new file mode 100644 index 0000000..6535c47 --- /dev/null +++ b/database/seeders/JenisDokumenSeeder.php @@ -0,0 +1,68 @@ + 'Sertifikat', + 'max_size' => 15, + 'description' => 'Foto copy Sertifikat sesuai dengan asli', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'name' => 'PBB/NJOP', + 'max_size' => 15, + 'description' => 'Foto Copy PBB/NJOP Tahun Terakhir', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'name' => 'NPWP Perorangan/Perusahaan', + 'max_size' => 10, + 'description' => 'Copy NPWP Perorangan/Perusahaan', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'name' => 'Siteplan', + 'max_size' => 10, + 'description' => 'Siteplan', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'name' => 'Surat Pernyataan Kebenaran Data', + 'max_size' => 5, + 'description' => 'Surat Pernyataan Kebenaran Data (Surat Representasi)', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ] + ]); + } +} diff --git a/database/seeders/JenisFasilitasKreditSeeder.php b/database/seeders/JenisFasilitasKreditSeeder.php new file mode 100644 index 0000000..27512b4 --- /dev/null +++ b/database/seeders/JenisFasilitasKreditSeeder.php @@ -0,0 +1,90 @@ + 'JFK001', + 'name' => 'KPR FLPP', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'code' => 'JFK002', + 'name' => 'KPR KERJASAMA', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'code' => 'JFK003', + 'name' => 'KPR ≤ 500 JT', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'code' => 'JFK004', + 'name' => 'KPR > 500 JT', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'code' => 'JFK005', + 'name' => 'KKB', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'code' => 'JFK006', + 'name' => 'KPA', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'code' => 'JFK007', + 'name' => 'MODAL KERJA', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'code' => 'JFK008', + 'name' => 'INVESTASI', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + ]); + } +} diff --git a/database/seeders/JenisJaminanSeeder.php b/database/seeders/JenisJaminanSeeder.php new file mode 100644 index 0000000..1f79185 --- /dev/null +++ b/database/seeders/JenisJaminanSeeder.php @@ -0,0 +1,73 @@ + 'JJ001', + 'name' => 'Tanah', + 'slug' => 'tanah', + 'jenis_legalitas_jaminan_id' => '["JLJ001","JLJ003","JLJ004","JLJ005","JLJ006"]', + 'created_at' => now(), + 'updated_at' => now(), + 'authorized_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'code' => 'JJ002', + 'name' => 'Rumah Tinggal / Ruko (Unit) / Apartemen (Unit) / Gudang', + 'slug' => 'rumah-tinggal-ruko-unit-apartemen-unit-gudang', + 'jenis_legalitas_jaminan_id' => null, + 'created_at' => now(), + 'updated_at' => now(), + 'authorized_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'code' => 'JJ003', + 'name' => 'Kawasan Industrial / Komersil / Residensial - Perumahan', + 'slug' => 'kawasan-industrial-komersil-residensial-perumahan', + 'jenis_legalitas_jaminan_id' => null, + 'created_at' => now(), + 'updated_at' => now(), + 'authorized_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'code' => 'JJ004', + 'name' => 'Gedung Apartement / Kantor / Condotel (Strata Tittle)', + 'slug' => 'gedung-apartement-kantor-condotel-strata-tittle', + 'jenis_legalitas_jaminan_id' => '["JLJ001","JLJ002"]', + 'created_at' => now(), + 'updated_at' => now(), + 'authorized_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'code' => 'JJ005', + 'name' => 'Mall', + 'slug' => 'mall', + 'jenis_legalitas_jaminan_id' => '["JLJ001","JLJ006"]', + 'created_at' => now(), + 'updated_at' => now(), + 'authorized_at' => null, + 'created_by' => 1, + 'updated_by' => 1 + ] + ]); + } +} diff --git a/database/seeders/JenisLaporanSeeder.php b/database/seeders/JenisLaporanSeeder.php new file mode 100644 index 0000000..b979f74 --- /dev/null +++ b/database/seeders/JenisLaporanSeeder.php @@ -0,0 +1,32 @@ + 'JL001', + 'name' => 'Short Report', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now() + ], + [ + 'code' => 'JL002', + 'name' => 'Full Report', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now() + ] + ]); + } +} diff --git a/database/seeders/JenisLegalitasJaminanSeeder.php b/database/seeders/JenisLegalitasJaminanSeeder.php new file mode 100644 index 0000000..516614c --- /dev/null +++ b/database/seeders/JenisLegalitasJaminanSeeder.php @@ -0,0 +1,116 @@ + 'JLJ001', + 'name' => 'Sertifikat', + 'slug' => 'sertifikat', + 'custom_field' => 'Luas Tanah', + 'custom_field_type' => 'number', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'deleted_at' => null, + 'created_by' => 1, + 'updated_by' => 1, + 'deleted_by' => null + ], + [ + 'code' => 'JLJ002', + 'name' => 'SHGB', + 'slug' => 'shgb', + 'custom_field' => null, + 'custom_field_type' => null, + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'deleted_at' => now(), + 'created_by' => 1, + 'updated_by' => 1, + 'deleted_by' => 1 + ], + [ + '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(), + 'deleted_at' => null, + 'created_by' => 1, + 'updated_by' => 1, + 'deleted_by' => null + ], + [ + '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(), + 'deleted_at' => null, + 'created_by' => 1, + 'updated_by' => 1, + 'deleted_by' => null + ], + [ + 'code' => 'JLJ005', + 'name' => 'Siteplan', + 'slug' => 'siteplan', + 'custom_field' => null, + 'custom_field_type' => null, + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'deleted_at' => null, + 'created_by' => 1, + 'updated_by' => 1, + 'deleted_by' => null + ], + [ + '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(), + 'deleted_at' => null, + 'created_by' => 1, + '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/JenisPenilaianSeeder.php b/database/seeders/JenisPenilaianSeeder.php new file mode 100644 index 0000000..2534811 --- /dev/null +++ b/database/seeders/JenisPenilaianSeeder.php @@ -0,0 +1,30 @@ + 'JP1', + 'name' => 'Internal', + 'created_at' => now(), + 'updated_at' => now() + ], + [ + 'code' => 'JP2', + 'name' => 'External', + 'created_at' => now(), + 'updated_at' => now() + ], + ]); + } +} diff --git a/database/seeders/KJPPSeeder.php b/database/seeders/KJPPSeeder.php new file mode 100644 index 0000000..97a583f --- /dev/null +++ b/database/seeders/KJPPSeeder.php @@ -0,0 +1,102 @@ + 'K000101', + 'name' => 'Bank Anda', + 'jenis_kantor' => 'Kantor Pusat', + 'nomor_ijin_usaha' => 'IU001', + 'province_code' => '32', + 'city_code' => '32.75', + 'district_code' => '32.75.03', + 'village_code' => '32.75.03.1001', + 'address' => 'Jl. Apel no. 1', + 'postal_code' => '17125', + 'nomor_telepon_kantor' => '0219976896', + 'email_kantor' => 'bankanda@bankanda.id', + 'nama_pimpinan' => 'Ida Royani', + 'nomor_hp_pimpinan' => '081800908070', + 'nama_pic_reviewer' => 'Beno', + 'nomor_hp_pic_reviewer' => '081765489070', + 'nama_pic_admin' => 'Dani', + 'nomor_hp_pic_admin' => '081278786666', + 'nama_pic_marketing' => 'Feni', + 'nomor_hp_pic_marketing' => '087867590801', + 'ijin_usaha_id' => '["IU001","IU002"]', + 'jenis_aset_id' => '["JJ001","JJ002","JJ003"]', + 'attachment' => 'default.pdf', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now() + ], + [ + 'code' => 'K000201', + 'name' => 'Bank Juri', + 'jenis_kantor' => 'Kantor Pusat', + 'nomor_ijin_usaha' => 'IU001', + 'province_code' => '12', + 'city_code' => '12.04', + 'district_code' => '12.04.11', + 'village_code' => '12.04.11.2005', + 'address' => 'Jl. Mangga no. 1', + 'postal_code' => '22876', + 'nomor_telepon_kantor' => '0219976890', + 'email_kantor' => 'bankjuri@bankjuri.id', + 'nama_pimpinan' => 'Arif Simbolo bolo', + 'nomor_hp_pimpinan' => '089643475023', + 'nama_pic_reviewer' => 'Beno Harefa', + 'nomor_hp_pic_reviewer' => '081765489080', + 'nama_pic_admin' => 'Dani Harefa', + 'nomor_hp_pic_admin' => '081278786667', + 'nama_pic_marketing' => 'Feni Harefa', + 'nomor_hp_pic_marketing' => '081765489075', + 'ijin_usaha_id' => '["IU001","IU002","IU003"]', + 'jenis_aset_id' => '["JJ001","JJ004","JJ003"]', + 'attachment' => 'default.pdf', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now() + ], + [ + 'code' => 'K000301', + 'name' => 'Bank Gantra', + 'jenis_kantor' => 'Kantor Pusat', + 'nomor_ijin_usaha' => 'IU001', + 'province_code' => '12', + 'city_code' => '12.21', + 'district_code' => '12.21.05', + 'village_code' => '12.21.05.2005', + 'address' => 'Jl. Apel no. 1', + 'postal_code' => '22776', + 'nomor_telepon_kantor' => '0219976889', + 'email_kantor' => 'bankgantra@bankgantra.id', + 'nama_pimpinan' => 'Arif Simantra', + 'nomor_hp_pimpinan' => '089643475020', + 'nama_pic_reviewer' => 'Beno Aditya', + 'nomor_hp_pic_reviewer' => '081765489079', + 'nama_pic_admin' => 'Dani Maulana', + 'nomor_hp_pic_admin' => '081278786680', + 'nama_pic_marketing' => 'Feni Rose', + 'nomor_hp_pic_marketing' => '081890901234', + 'ijin_usaha_id' => '["IU001","IU002","IU003"]', + 'jenis_aset_id' => '["JJ001","JJ002","JJ005"]', + 'attachment' => 'default.pdf', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now() + ] + ]); + } +} diff --git a/database/seeders/LpjDatabaseSeeder.php b/database/seeders/LpjDatabaseSeeder.php index 242ef68..0377451 100644 --- a/database/seeders/LpjDatabaseSeeder.php +++ b/database/seeders/LpjDatabaseSeeder.php @@ -1,17 +1,45 @@ call([]); - } + $this->call([ + BranchSeeder::class, + CurrencySeeder::class, + JenisFasilitasKreditSeeder::class, + JenisLegalitasJaminanSeeder::class, + JenisJaminanSeeder::class, + JenisDokumenSeeder::class, + TujuanPenilaianSeeder::class, + NilaiPlatformSeeder::class, + HubunganPemilikJaminanSeeder::class, + HubunganPenghuniJaminanSeeder::class, + ArahMataAnginSeeder::class, + StatusPermohonanSeeder::class, + RegionSeeder::class, + TeamsSeeder::class, + TeamUsersSeeder::class, + JenisPenilaianSeeder::class, + TujuanPenilaianKJPPSeeder::class, + IjinUsahaSeeder::class, + JenisLaporanSeeder::class, + DebitureSeeder::class, + PermohonanSeeder::class, + PemilikJaminanSeeder::class, + DokumenJaminanSeeder::class, + DetailDokumenJaminanSeeder::class, + KJPPSeeder::class, + PenawaranSeeder::class, + DetailPenawaranSeeder::class, + PenilaianSeeder::class, + ]); } +} diff --git a/database/seeders/NilaiPlatformSeeder.php b/database/seeders/NilaiPlatformSeeder.php new file mode 100644 index 0000000..5631324 --- /dev/null +++ b/database/seeders/NilaiPlatformSeeder.php @@ -0,0 +1,45 @@ + 'NP001', + 'name' => '5 M - 10 M', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'code' => 'NP002', + 'name' => '2 M - 5 M', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'code' => 'NP003', + 'name' => '< 2M', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ] + ]); + } +} diff --git a/database/seeders/PemilikJaminanSeeder.php b/database/seeders/PemilikJaminanSeeder.php new file mode 100644 index 0000000..57e1c09 --- /dev/null +++ b/database/seeders/PemilikJaminanSeeder.php @@ -0,0 +1,118 @@ + 2, + 'hubungan_pemilik_jaminan_id' => 1, + 'name' => 'Antonius Ginting', + 'npwp' => '234567890123456', + 'nomor_id' => '13144213123', + 'email' => 'x@gmail.com', + 'phone' => '081234567891', + 'province_code' => '31', + 'city_code' => '31.71', + 'district_code' => '31.71.06', + 'village_code' => '31.71.06.1001', + 'postal_code' => '10310', + 'address' => 'Jl. Menteng Tengah No.66', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'debiture_id' => 7, + 'hubungan_pemilik_jaminan_id' => 1, + 'name' => 'Rahmat Rafli', + 'npwp' => '1234689743418451', + 'nomor_id' => '32754590325823', + 'email' => 'testing@mail.com', + 'phone' => '081385777611', + 'province_code' => '32', + 'city_code' => '32.75', + 'district_code' => '32.75.03', + 'village_code' => '32.75.03.1001', + 'postal_code' => '10310', + 'address' => 'Jl. Apel 1 no. 9', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'debiture_id' => 1, + 'hubungan_pemilik_jaminan_id' => 1, + 'name' => 'Willy', + 'npwp' => '123455432109876', + 'nomor_id' => null, + 'email' => 'w@gmail.com', + 'phone' => '08113242341', + 'province_code' => '31', + 'city_code' => '31.74', + 'district_code' => '31.74.09', + 'village_code' => '31.74.09.1003', + 'postal_code' => '12630', + 'address' => null, + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'debiture_id' => 4, + 'hubungan_pemilik_jaminan_id' => 1, + 'name' => 'Testing', + 'npwp' => '1029280183912111', + 'nomor_id' => null, + 'email' => 'testing@email.com', + 'phone' => '098172386', + 'province_code' => '11', + 'city_code' => '11.01', + 'district_code' => '11.01.01', + 'village_code' => '11.01.01.2001', + 'postal_code' => '23773', + 'address' => 'alamat', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'debiture_id' => 7, + 'hubungan_pemilik_jaminan_id' => 1, + 'name' => 'Testing 2', + 'npwp' => '1234689743418451', + 'nomor_id' => null, + 'email' => 'testing@mail.com', + 'phone' => '081385777611', + 'province_code' => '31', + 'city_code' => '31.71', + 'district_code' => '31.71.06', + 'village_code' => '31.71.06.1001', + 'postal_code' => '10310', + 'address' => 'Jl. Menteng Raya no. 13', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ] + ]); + } +} diff --git a/database/seeders/PenawaranSeeder.php b/database/seeders/PenawaranSeeder.php new file mode 100644 index 0000000..3c20c12 --- /dev/null +++ b/database/seeders/PenawaranSeeder.php @@ -0,0 +1,46 @@ + 'NP001', + 'nomor_registrasi' => 'REG0000002', + 'tujuan_penilaian_kjpp_id' => 3, + 'jenis_laporan_id' => 2, + 'start_date' => '2024-10-21', + 'end_date' => '2024-10-28', + 'catatan' => 'Hai', + 'status' => 'tender', + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'code' => 'NP002', + 'nomor_registrasi' => 'REG0000003', + 'tujuan_penilaian_kjpp_id' => 1, + 'jenis_laporan_id' => 1, + 'start_date' => '2024-10-28', + 'end_date' => '2024-10-31', + 'catatan' => null, + 'status' => 'tender', + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ] + ]); + } +} diff --git a/database/seeders/PenilaianSeeder.php b/database/seeders/PenilaianSeeder.php new file mode 100644 index 0000000..efed9ea --- /dev/null +++ b/database/seeders/PenilaianSeeder.php @@ -0,0 +1,51 @@ + 2, + 'teams_id' => 2, + 'tanggal_kunjungan' => now(), + 'keterangan' => 'Hai', + 'status' => 'done', + 'nomor_registrasi' => 'REG0000010', + 'penilaian_id' => 2, + 'surveyor_id' => 1, + 'penilai_surveyor_id' => 1 + ], + [ + 'jenis_penilaian_id' => 2, + 'teams_id' => 1, + 'tanggal_kunjungan' => now(), + 'keterangan' => 'Hello', + 'status' => 'done', + 'nomor_registrasi' => 'REG0000008', + 'penilaian_id' => 2, + 'surveyor_id' => 1, + 'penilai_surveyor_id' => 1 + ], + [ + 'jenis_penilaian_id' => 2, + 'teams_id' => 2, + 'tanggal_kunjungan' => now(), + 'keterangan' => 'Hello', + 'status' => 'done', + 'nomor_registrasi' => 'REG0000007', + 'penilaian_id' => 1, + 'surveyor_id' => 1, + 'penilai_surveyor_id' => 1 + ] + ]); + } +} diff --git a/database/seeders/PermohonanSeeder.php b/database/seeders/PermohonanSeeder.php new file mode 100644 index 0000000..a8b82d7 --- /dev/null +++ b/database/seeders/PermohonanSeeder.php @@ -0,0 +1,126 @@ + 'REG0000002', + 'tanggal_permohonan' => '2024-09-11', + 'user_id' => 1, + 'branch_id' => 1, + 'tujuan_penilaian_id' => 1, + 'debiture_id' => 1, + 'status' => 'registered', + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1, + 'jenis_fasilitas_kredit_id' => 1, + 'nilai_plafond_id' => 1, + 'status_bayar' => 'sudah_bayar', + 'nilai_njop' => 'KJM3413259230951024', + 'jenis_penilaian_id' => 2 + ], + [ + 'nomor_registrasi' => 'REG0000003', + 'tanggal_permohonan' => '2024-09-13', + 'user_id' => 1, + 'branch_id' => 1, + 'tujuan_penilaian_id' => 1, + 'debiture_id' => 1, + 'status' => 'registered', + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1, + 'jenis_fasilitas_kredit_id' => 1, + 'nilai_plafond_id' => 1, + 'status_bayar' => 'sudah_bayar', + 'nilai_njop' => 'KJM3413259230951025', + 'jenis_penilaian_id' => 2 + ], + [ + 'nomor_registrasi' => 'REG0000006', + 'tanggal_permohonan' => '2024-10-18', + 'user_id' => 1, + 'branch_id' => 1, + 'tujuan_penilaian_id' => 1, + 'debiture_id' => 2, + 'status' => 'registered', + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1, + 'jenis_fasilitas_kredit_id' => 4, + 'nilai_plafond_id' => 1, + 'status_bayar' => 'sudah_bayar', + 'nilai_njop' => '23425654765868', + 'jenis_penilaian_id' => 2 + ], + [ + 'nomor_registrasi' => 'REG0000007', + 'tanggal_permohonan' => '2024-10-28', + 'user_id' => 1, + 'branch_id' => 1, + 'tujuan_penilaian_id' => 7, + 'debiture_id' => 4, + 'status' => 'done', + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1, + 'jenis_fasilitas_kredit_id' => 7, + 'nilai_plafond_id' => 1, + 'status_bayar' => 'sudah_bayar', + 'nilai_njop' => '421354365747658', + 'jenis_penilaian_id' => 2 + ], + [ + 'nomor_registrasi' => 'REG0000008', + 'tanggal_permohonan' => '2024-10-28', + 'user_id' => 1, + 'branch_id' => 1, + 'tujuan_penilaian_id' => 1, + 'debiture_id' => 7, + 'status' => 'done', + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1, + 'jenis_fasilitas_kredit_id' => 7, + 'nilai_plafond_id' => 2, + 'status_bayar' => 'sudah_bayar', + 'nilai_njop' => '421354365747659', + 'jenis_penilaian_id' => 2 + ], + [ + 'nomor_registrasi' => 'REG0000010', + 'tanggal_permohonan' => '2024-10-28', + 'user_id' => 1, + 'branch_id' => 1, + 'tujuan_penilaian_id' => 5, + 'debiture_id' => 7, + 'status' => 'done', + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1, + 'jenis_fasilitas_kredit_id' => 4, + 'nilai_plafond_id' => 1, + 'status_bayar' => 'sudah_bayar', + 'nilai_njop' => '421354365747660', + 'jenis_penilaian_id' => 2 + ] + ]); + } +} diff --git a/database/seeders/RegionSeeder.php b/database/seeders/RegionSeeder.php new file mode 100644 index 0000000..9b118a3 --- /dev/null +++ b/database/seeders/RegionSeeder.php @@ -0,0 +1,30 @@ + 'R01', + 'name' => 'Region 1', + 'created_at' => now(), + 'updated_at' => now() + ], + [ + 'code' => 'R02', + 'name' => 'Region 2', + 'created_at' => now(), + 'updated_at' => now() + ] + ]); + } +} diff --git a/database/seeders/StatusPermohonanSeeder.php b/database/seeders/StatusPermohonanSeeder.php new file mode 100644 index 0000000..1cd6526 --- /dev/null +++ b/database/seeders/StatusPermohonanSeeder.php @@ -0,0 +1,128 @@ + 'Order', + 'slug' => 'order', + 'description' => 'Status pengisian pengajuan dari AO sampai dengan approval dari BD atau EO Pemohon', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'name' => 'Revisi', + 'slug' => 'revisi', + 'description' => 'Back to pemohon dari admin', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'name' => 'Register', + 'slug' => 'register', + 'description' => 'pengajuan pemohon yang sudah diperiksa admin dan diproses ke SO', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'name' => 'Assign', + 'slug' => 'assign', + 'description' => 'posisi dari SO ke penilai setelah penunjukkan penilai', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'name' => 'Survey', + 'slug' => 'survey', + 'description' => 'tanggal kunjungan yang sudah ditentukan', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'name' => 'Proses Laporan', + 'slug' => 'proses-laporan', + 'description' => 'posisi penginputan yang dilakukan oleh penilai, dengan indikator tanggal kunjungan sampai laporan selesai (sesuai SLA)', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'name' => 'Approved', + 'slug' => 'approved', + 'description' => 'Laporan atau resume selesai', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'name' => 'Delivered', + 'slug' => 'delivered', + 'description' => 'Sudah isi nilai likuidasi', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'name' => 'Registered', + 'slug' => 'registered', + 'description' => 'abc', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'name' => 'Tender', + 'slug' => 'tender', + 'description' => 'abc', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ], + [ + 'name' => 'Done', + 'slug' => 'done', + 'description' => 'abc', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'created_by' => 1, + 'updated_by' => 1 + ] + ]); + } +} diff --git a/database/seeders/TeamUsersSeeder.php b/database/seeders/TeamUsersSeeder.php new file mode 100644 index 0000000..959c1e4 --- /dev/null +++ b/database/seeders/TeamUsersSeeder.php @@ -0,0 +1,32 @@ + 1, + 'user_id' => 3, + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now() + ], + [ + 'teams_id' => 2, + 'user_id' => 4, + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now() + ] + ]); + } +} diff --git a/database/seeders/TeamsSeeder.php b/database/seeders/TeamsSeeder.php new file mode 100644 index 0000000..a3f2595 --- /dev/null +++ b/database/seeders/TeamsSeeder.php @@ -0,0 +1,32 @@ + 1, + 'code' => 'T01', + 'name' => 'Penilai 1', + 'created_at' => now(), + 'updated_at' => now() + ], + [ + 'regions_id' => 2, + 'code' => 'T02', + 'name' => 'Penilai 2', + 'created_at' => now(), + 'updated_at' => now() + ] + ]); + } +} diff --git a/database/seeders/TujuanPenilaianKJPPSeeder.php b/database/seeders/TujuanPenilaianKJPPSeeder.php new file mode 100644 index 0000000..4e36cf6 --- /dev/null +++ b/database/seeders/TujuanPenilaianKJPPSeeder.php @@ -0,0 +1,46 @@ + 'TPK01', + 'name' => 'Transaksi Jual Beli Aset', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now() + ], + [ + 'code' => 'TPK02', + 'name' => 'Penjaminan Utang atau Pembiayaan', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now() + ], + [ + 'code' => 'TPK03', + 'name' => 'Pelaporan Keuangan', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now() + ], + [ + 'code' => 'TPK04', + 'name' => 'Pengambilalihan atau Merger dan Akuisisi (M&A)', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now() + ] + ]); + } +} diff --git a/database/seeders/TujuanPenilaianSeeder.php b/database/seeders/TujuanPenilaianSeeder.php new file mode 100644 index 0000000..75f3a76 --- /dev/null +++ b/database/seeders/TujuanPenilaianSeeder.php @@ -0,0 +1,95 @@ + 'TP0001', + 'name' => 'Penilaian Baru', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'deleted_at' => null, + 'created_by' => 1, + 'updated_by' => 1, + 'deleted_by' => null + ], + [ + 'code' => 'TP0002', + 'name' => 'Penilaian Ulang', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'deleted_at' => null, + 'created_by' => 1, + 'updated_by' => 1, + 'deleted_by' => null + ], + [ + 'code' => 'TP0003', + 'name' => 'Review', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'deleted_at' => now(), + 'created_by' => 1, + 'updated_by' => 1, + 'deleted_by' => 1 + ], + [ + 'code' => 'TP0004', + 'name' => 'Lelang', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'deleted_at' => null, + 'created_by' => 1, + 'updated_by' => 1, + 'deleted_by' => null + ], + [ + 'code' => 'TP0005', + 'name' => 'RAP', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'deleted_at' => null, + 'created_by' => 1, + 'updated_by' => 1, + 'deleted_by' => null + ], + [ + 'code' => 'TP0006', + 'name' => 'Revaluasi Aset', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'deleted_at' => null, + 'created_by' => 1, + 'updated_by' => 1, + 'deleted_by' => null + ], + [ + 'code' => 'TP0007', + 'name' => 'Asuransi', + 'status' => 1, + 'created_at' => now(), + 'updated_at' => now(), + 'deleted_at' => null, + 'created_by' => 1, + 'updated_by' => 1, + 'deleted_by' => null + ] + ]); + } +} diff --git a/module.json b/module.json index bdde66d..572fe59 100644 --- a/module.json +++ b/module.json @@ -1,464 +1,578 @@ { - "name": "Lpj", - "alias": "lpj", - "database": "", - "description": "", - "keywords": [], - "priority": 0, - "providers": ["Modules\\Lpj\\Providers\\LpjServiceProvider"], - "files": [ - "app/Helpers/Lpj.php" - ], - "menu": { - "main": [{ - "title": "Permohonan", - "path": "permohonan", - "icon": "ki-filled ki-questionnaire-tablet text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Registrasi", - "path": "registrasi", - "icon": "ki-filled ki-file-added text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Tender", - "path": "tender", - "icon": "ki-filled ki-category text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"], - "sub": [{ - "title": "Data Penawaran", - "path": "tender.penawaran", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Data Proses Penawaran", - "path": "tender.prosespenawaran", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Data Penawaran Ulang", - "path": "tender.penawaran.ulang", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Data Proses Penawaran Ulang", - "path": "tender.prosespenawaranulang", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - } - ] - }, - { - "title": "Otorisasi Tender", - "path": "otorisasitender", - "icon": "ki-filled ki-category text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"], - "sub": [{ - "title": "Otorisasi Penawaran", - "path": "otorisasitender.penawaran", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }] - }, - { - "title": "Registrasi Final", - "path": "registrasifinal", - "icon": "ki-filled ki-file-added text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Pembatalan", - "path": "", - "icon": "ki-filled ki-file-deleted text-lg text-danger", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Data Debitur", - "path": "debitur", - "icon": "ki-filled ki-people text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Authorization", - "path": "authorization", - "icon": "ki-filled ki-security-user text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-eo"] - }, - { - "title": "Assignment", - "path": "penilaian", - "icon": "ki-filled ki-badge text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "senior-officer"] - }, - { - "title": "Team Activity", - "path": "activity.progres", - "icon": "ki-filled ki-questionnaire-tablet text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["senior-officer"] - }, - { - "title": "Otorisator", - "path": "otorisator", - "icon": "ki-filled ki-security-user text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["senior-officer"], - "sub": [{ - "title": "Pelaporan", - "path": "otorisator.pelaporan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["senior-officer"] - }, - { - "title": "Pembayaran", - "path": "otorisator.pembayaran", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["senior-officer"] - }, - { - "title": "Pembatalan", - "path": "otorisator.pembatalan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["senior-officer"] - }, - { - "title": "SLA", - "path": "otorisator.sla", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["ssenior-officero"] - } - ] - }, - { - "title": "Surveyor", - "path": "surveyor", - "icon": "ki-filled ki-questionnaire-tablet text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["surveyor"] - }, - - { - "title": "Activity", - "path": "activity", - "icon": "ki-filled ki-calendar-edit text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo", "admin", "surveyor"] - }, - { - "title": "Laporan", - "path": "laporan", - "icon": "ki-filled ki-filter-tablet text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo", "admin", "senior-officer"], - "sub": [{ - "title": "Sederhana", - "path": "laporan.sederhana", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Standard", - "path": "laporan.standard", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo", "admin", "senior-officer"] - } - ] - }, - { - "title": "Resume", - "path": "resume", - "icon": "ki-filled ki-questionnaire-tablet text-lg", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - } - ], - "master": [{ - "title": "Basic Data", - "path": "basicdata", - "icon": "ki-filled ki-category text-lg", + "name": "Lpj", + "alias": "lpj", + "database": "", + "description": "", + "keywords": [], + "priority": 0, + "providers": ["Modules\\Lpj\\Providers\\LpjServiceProvider"], + "files": ["app/Helpers/Lpj.php"], + "menu": { + "main": [ + { + "title": "Permohonan", + "path": "permohonan", + "icon": "ki-filled ki-questionnaire-tablet text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "pemohon-ao", "pemohon-eo"] + }, + { + "title": "Registrasi", + "path": "registrasi", + "icon": "ki-filled ki-file-added text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "admin"] + }, + { + "title": "Tender", + "path": "tender", + "icon": "ki-filled ki-category text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "admin"], + "sub": [ + { + "title": "Data Penawaran", + "path": "tender.penawaran", "classes": "", "attributes": [], "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo", "admin", "surveyor"], - "sub": [ - { - "title": "Jenis Fasilitas Kredit", - "path": "basicdata.jenis-fasilitas-kredit", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Jenis Legalitas Jaminan", - "path": "basicdata.jenis-legalitas-jaminan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Jenis Aset", - "path": "basicdata.jenis-jaminan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Jenis Dokumen", - "path": "basicdata.jenis-dokumen", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Tujuan Penilaian", - "path": "basicdata.tujuan-penilaian", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Nilai Plafond", - "path": "basicdata.nilai-plafond", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Hubungan Pemilik Jaminan", - "path": "basicdata.hubungan-pemilik-jaminan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Hubungan Penghuni Jaminan", - "path": "basicdata.hubungan-penghuni-jaminan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "pemohon-ao", "pemohon-eo"] - }, - { - "title": "Arah Mata Angin", - "path": "basicdata.arah-mata-angin", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator"] - }, - { - "title": "Status Permohonan", - "path": "basicdata.status-permohonan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator"] - }, - { - "title": "Region", - "path": "basicdata.region", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin", "senior-officer"] - }, - { - "title": "Staff Appraisal", - "path": "basicdata.teams", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "senior-officer"] - }, - { - "title": "Jenis Penilaian", - "path": "basicdata.jenis-penilaian", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin", "senior-officer"] - }, - { - "title": "KJPP", - "path": "basicdata.kjpp", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Jenis Laporan", - "path": "basicdata.jenis_laporan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Tujuan Penilaian KJPP", - "path": "basicdata.tujuan_penilaian_kjpp", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Ijin Usaha", - "path": "basicdata.ijin_usaha", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["administrator", "admin"] - }, - { - "title": "Bentuk Tanah", - "path": "basicdata.bentuk-tanah", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["surveyor"] - }, - { - "title": "Kontur Tanah", - "path": "basicdata.kontur-tanah", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["surveyor"] - }, - { - "title": "Posisi Kavling", - "path": "basicdata.posisi-kavling", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["surveyor"] - }, - { - "title": "Ketinggian Tanah", - "path": "basicdata.ketinggian-tanah", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["surveyor"] - }, - { - "title": "Kondisi Fisik Tanah", - "path": "basicdata.kondisi-fisik-tanah", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["surveyor"] - }, - { - "title": "Jenis Bangunan", - "path": "basicdata.jenis-bangunan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["surveyor"] - }, - { - "title": "Kondisi Bangunan", - "path": "basicdata.kondisi-bangunan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["surveyor"] - }, - { - "title": "Sifat Bangunan", - "path": "basicdata.sifat-bangunan", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["surveyor"] - }, - - { - "title": "Sarana Pelengkap", - "path": "basicdata.sarana-pelengkap", - "classes": "", - "attributes": [], - "permission": "", - "roles": ["surveyor"] - } + "roles": ["administrator", "admin"] + }, + { + "title": "Data Proses Penawaran", + "path": "tender.prosespenawaran", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "admin"] + }, + { + "title": "Data Penawaran Ulang", + "path": "tender.penawaran.ulang", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "admin"] + }, + { + "title": "Data Proses Penawaran Ulang", + "path": "tender.prosespenawaranulang", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "admin"] + } + ] + }, + { + "title": "Otorisasi Tender", + "path": "otorisasitender", + "icon": "ki-filled ki-category text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "admin"], + "sub": [ + { + "title": "Otorisasi Penawaran", + "path": "otorisasitender.penawaran", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "admin"] + } + ] + }, + { + "title": "SPK", + "path": "spk", + "icon": "ki-filled ki-file-added text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "admin"] + }, + { + "title": "Registrasi Final", + "path": "registrasifinal", + "icon": "ki-filled ki-file-added text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "admin"] + }, + { + "title": "Pembatalan", + "path": "", + "icon": "ki-filled ki-file-deleted text-lg text-danger", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "pemohon-ao", "pemohon-eo"] + }, + { + "title": "Data Debitur", + "path": "debitur", + "icon": "ki-filled ki-people text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "pemohon-ao", "pemohon-eo"] + }, + { + "title": "Authorization", + "path": "authorization", + "icon": "ki-filled ki-security-user text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "pemohon-eo"] + }, + { + "title": "Assignment", + "path": "penilaian", + "icon": "ki-filled ki-badge text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "senior-officer"] + }, + { + "title": "Team Activity", + "path": "activity.progres", + "icon": "ki-filled ki-questionnaire-tablet text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","senior-officer"] + }, + { + "title": "Otorisator", + "path": "otorisator", + "icon": "ki-filled ki-security-user text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","senior-officer"], + "sub": [ + { + "title": "Pelaporan", + "path": "otorisator.pelaporan", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","senior-officer"] + }, + { + "title": "Pembayaran", + "path": "otorisator.pembayaran", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","senior-officer"] + }, + { + "title": "Pembatalan", + "path": "otorisator.pembatalan", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","senior-officer"] + }, + { + "title": "SLA", + "path": "otorisator.sla", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","senior-officer"] + } + ] + }, + { + "title": "Surveyor", + "path": "surveyor", + "icon": "ki-filled ki-questionnaire-tablet text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + { + "title": "Activity", + "path": "activity", + "icon": "ki-filled ki-calendar-edit text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo", + "admin", + "surveyor" + ] + }, + { + "title": "Penilai", + "path": "penilai", + "icon": "ki-filled ki-brush text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + { + "title": "Laporan", + "path": "laporan", + "icon": "ki-filled ki-filter-tablet text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo", + "admin", + "senior-officer" + ], + "sub": [ + { + "title": "Sederhana", + "path": "laporan.sederhana", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "admin"] + }, + { + "title": "Standard", + "path": "laporan.standard", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo", + "admin", + "senior-officer" ] - }], - "system": [] - } + } + ] + }, + { + "title": "Resume", + "path": "resume", + "icon": "ki-filled ki-questionnaire-tablet text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "pemohon-ao", "pemohon-eo"] + } + ], + "master": [ + { + "title": "Basic Data", + "path": "basicdata", + "icon": "ki-filled ki-category text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-ao", + "pemohon-eo", + "admin", + "surveyor" + ], + "sub": [ + { + "title": "Jenis Fasilitas Kredit", + "path": "basicdata.jenis-fasilitas-kredit", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "pemohon-ao", "pemohon-eo"] + }, + { + "title": "Jenis Legalitas Jaminan", + "path": "basicdata.jenis-legalitas-jaminan", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "pemohon-ao", "pemohon-eo"] + }, + { + "title": "Jenis Aset", + "path": "basicdata.jenis-jaminan", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "pemohon-ao", "pemohon-eo"] + }, + { + "title": "Jenis Dokumen", + "path": "basicdata.jenis-dokumen", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "pemohon-ao", "pemohon-eo"] + }, + { + "title": "Tujuan Penilaian", + "path": "basicdata.tujuan-penilaian", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "pemohon-ao", "pemohon-eo"] + }, + { + "title": "Nilai Plafond", + "path": "basicdata.nilai-plafond", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "pemohon-ao", "pemohon-eo"] + }, + { + "title": "Hubungan Pemilik Jaminan", + "path": "basicdata.hubungan-pemilik-jaminan", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "pemohon-ao", "pemohon-eo"] + }, + { + "title": "Hubungan Penghuni Jaminan", + "path": "basicdata.hubungan-penghuni-jaminan", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "pemohon-ao", "pemohon-eo"] + }, + { + "title": "Arah Mata Angin", + "path": "basicdata.arah-mata-angin", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator"] + }, + { + "title": "Status Permohonan", + "path": "basicdata.status-permohonan", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator"] + }, + { + "title": "Region", + "path": "basicdata.region", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "admin", "senior-officer"] + }, + { + "title": "Staff Appraisal", + "path": "basicdata.teams", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "senior-officer"] + }, + { + "title": "Jenis Penilaian", + "path": "basicdata.jenis-penilaian", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "admin", "senior-officer"] + }, + { + "title": "KJPP", + "path": "basicdata.kjpp", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "admin"] + }, + { + "title": "Jenis Laporan", + "path": "basicdata.jenis_laporan", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "admin"] + }, + { + "title": "Tujuan Penilaian KJPP", + "path": "basicdata.tujuan_penilaian_kjpp", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "admin"] + }, + { + "title": "Ijin Usaha", + "path": "basicdata.ijin_usaha", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "admin"] + }, + { + "title": "SLA", + "path": "basicdata.sla", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator", "admin"] + }, + { + "title": "Bentuk", + "path": "basicdata.bentuk-tanah", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + { + "title": "Kontur Tanah", + "path": "basicdata.kontur-tanah", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + { + "title": "Posisi Kavling", + "path": "basicdata.posisi-kavling", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + { + "title": "Ketinggian Tanah", + "path": "basicdata.ketinggian-tanah", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + { + "title": "Kondisi Fisik Tanah", + "path": "basicdata.kondisi-fisik-tanah", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + { + "title": "Jenis Bangunan", + "path": "basicdata.jenis-bangunan", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + { + "title": "Kondisi Bangunan", + "path": "basicdata.kondisi-bangunan", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + { + "title": "Sifat Bangunan", + "path": "basicdata.sifat-bangunan", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + + { + "title": "Sarana Pelengkap", + "path": "basicdata.sarana-pelengkap", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + + { + "title": "Lalu Lintas Sekitar", + "path": "basicdata.lalu-lintas-lokasi", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + { + "title": "Tingkat Keramaian", + "path": "basicdata.tingkat-keramaian", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + { + "title": "Masyarakat Sekitar", + "path": "basicdata.gol-mas-sekitar", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + { + "title": "Lantai Unit", + "path": "basicdata.lantai-unit", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + { + "title": "View unit", + "path": "basicdata.view-unit", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + { + "title": "Spesifikasi Bangunan", + "path": "basicdata.spek-bangunan", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + { + "title": "Kategori Speksikasi Bangunan", + "path": "basicdata.spek-kategori-bangunan", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + } + + + ] + } + ], + "system": [] + } } diff --git a/resources/views/SLA/index.blade.php b/resources/views/SLA/index.blade.php new file mode 100644 index 0000000..8fc628d --- /dev/null +++ b/resources/views/SLA/index.blade.php @@ -0,0 +1,8 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('sla') }} +@endsection + +@section('content') +@endsection diff --git a/resources/views/activity/progres_activity/index.blade.php b/resources/views/activity/progres_activity/index.blade.php index 7f824da..6bf9a2b 100644 --- a/resources/views/activity/progres_activity/index.blade.php +++ b/resources/views/activity/progres_activity/index.blade.php @@ -46,14 +46,14 @@ @php $sortedTeamsActivity = $teamsActivity->sortBy(function ($item) { - return $item->team->penilaian - ->filter(function ($penilaian) use ($item) { - return $penilaian->penilaian_id == $item->user->id || - $penilaian->surveyor_id == $item->user->id || - $penilaian->penilai_surveyor_id == $item->user->id; + + return $item->team->penilaianTeam + ->filter(function ($penilaianTeam) use ($item) { + return $penilaianTeam->user_id == $item->user->id; }) ->count(); }); + @endphp @foreach ($sortedTeamsActivity as $index => $item) @@ -70,11 +70,9 @@ @php - $totalTasks = $item->team->penilaian - ->filter(function ($penilaian) use ($item) { - return $penilaian->penilaian_id == $item->user->id || - $penilaian->surveyor_id == $item->user->id || - $penilaian->penilai_surveyor_id == $item->user->id; + $totalTasks = $item->team->penilaianTeam + ->filter(function ($penilaianTeam) use ($item) { + return $penilaianTeam->user_id == $item->user->id; }) ->count(); @endphp @@ -156,8 +154,6 @@ const apiUrl = accordion.querySelector('.card-grid').getAttribute( 'data-api-url'); - console.log("This is the API URL: " + apiUrl); - const dataTableOptions = { apiEndpoint: apiUrl, pageSize: 5, @@ -180,7 +176,7 @@ }, jenis_asset: { title: 'Jenis Asset', - render: (item, data) => `${data.jenis_asset || ''}`, + render: (item, data) => `${data.permohonan.debiture.documents.map(d => d.jenis_jaminan.name) || ''}`, }, jenis_report: { title: 'Jenis Report', diff --git a/resources/views/component/detail-jaminan.blade.php b/resources/views/component/detail-jaminan.blade.php index b710872..3435775 100644 --- a/resources/views/component/detail-jaminan.blade.php +++ b/resources/views/component/detail-jaminan.blade.php @@ -69,14 +69,34 @@ - + Dokumen Jaminan + @if(isset($detail->dokumen_jaminan)) - {{ basename($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'])) + @if(!empty($dokumen_nomor)) + Nomor Dokumen : {{ $dokumen_nomor[$index] }} + @endif + + {{ basename($dokumen) }} + + + @endif + Preview +
+
+ @endforeach @endif + @@ -95,3 +115,5 @@ @endforeach + +@include('lpj::component.pdfviewer') diff --git a/resources/views/component/pdfviewer.blade.php b/resources/views/component/pdfviewer.blade.php new file mode 100644 index 0000000..177ecf5 --- /dev/null +++ b/resources/views/component/pdfviewer.blade.php @@ -0,0 +1,25 @@ + + + +@push('scripts') + + +@endpush diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index 1e5eed3..e1a358b 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -22,9 +22,10 @@
- + @if(isset($pemilikJaminan)) @foreach($pemilikJaminan as $pemilik) @if(isset($document)) @@ -39,19 +40,71 @@ @endforeach @endif - @if(isset($document->id)) - - Tambah Pemilik Jaminan - - @else - - Tambah Pemilik Jaminan - - @endif
@error('pemilik_jaminan_id') {{ $message }} @enderror +
@@ -79,53 +132,175 @@ @enderror
- - @if(isset($document->id)) - @foreach($document->detail as $detail) - -
- - -
- -
- -
- +
+ @if(isset($document->id)) + @php $n = 0; @endphp + @foreach($document->detail as $detail) + +
+ +
-
-
- -
- - @if(isset($detail->dokumen_jaminan)) - {{ basename($detail->dokumen_jaminan) }} - +
+ +
+ +
+
+ +
+ +
+
+
+ + + +
+
+
+ + @if(isset($detail->dokumen_jaminan)) + @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(!empty($dokumen_nomor)) + Nomor Dokumen : {{ $dokumen_nomor[$index] }} + @endif + + {{ basename($dokumen) }} + + +
+ @endforeach +
+ @endif + @endif +
+
+ + @if($detail->details) + @php $custom_field = json_decode($detail->details,true) @endphp +
+ +
+ +
+
+ @else + @if($detail->jenisLegalitasJaminan->custom_field) +
+ +
+ @if($detail->jenisLegalitasJaminan->custom_field_type === "text") + + @elseif($detail->jenisLegalitasJaminan->custom_field_type === "number") + + @elseif($detail->jenisLegalitasJaminan->custom_field_type === "date") + + @elseif($detail->jenisLegalitasJaminan->custom_field_type === "textarea") + + @else + + @endif +
+
@endif -
-
+ @endif -
- -
- +
+ +
+ +
+
+ @php $n++; @endphp + @endforeach + @foreach($legalitas as $item) +
+ +
-
- @endforeach - @else -
-
- @endif +
+ +
+ +
+
+ +
+ +
+
+
+ + + +
+
+
+
+
+ + @if($item->custom_field) +
+ +
+ @if($item->custom_field_type === "text") + + @elseif($item->custom_field_type === "number") + + @elseif($item->custom_field_type === "date") + + @elseif($item->custom_field_type === "textarea") + + @else + + @endif +
+
+ @endif + +
+ +
+ +
+
+ @php $n++; @endphp + @endforeach + @endif +
+@include('lpj::component.pdfviewer') @push('scripts') +@endpush diff --git a/resources/views/kjpp/show.blade.php b/resources/views/kjpp/show.blade.php index 0e5def9..f0d2cea 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
@@ -106,12 +125,26 @@

{{ $kjpp->nama_pic_reviewer }}

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

+ {{ $detail_nama_pic_reviewer->nama_pic_reviewer }} +

+ @endforeach + @endif

{{ $kjpp->nomor_hp_pic_reviewer }}

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

+ {{ $detail_nomor_hp_pic_reviewer->nomor_hp_pic_reviewer }} +

+ @endforeach + @endif
@@ -120,12 +153,26 @@

{{ $kjpp->nama_pic_admin }}

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

+ {{ $detail_nama_pic_admin->nama_pic_admin }} +

+ @endforeach + @endif

{{ $kjpp->nomor_hp_pic_admin }}

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

+ {{ $detail_nomor_hp_pic_admin->nomor_hp_pic_admin }} +

+ @endforeach + @endif
@@ -134,12 +181,26 @@

{{ $kjpp->nama_pic_marketing }}

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

+ {{ $detail_nama_pic_marketing->nama_pic_marketing }} +

+ @endforeach + @endif

{{ $kjpp->nomor_hp_pic_marketing }}

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

+ {{ $detail_nomor_hp_pic_marketing->nomor_hp_pic_marketing }} +

+ @endforeach + @endif
@@ -209,3 +270,19 @@
@endsection + +@push('styles') + +@endpush diff --git a/resources/views/pemilik_jaminan/form.blade.php b/resources/views/pemilik_jaminan/form.blade.php index 03c4a11..27af2b1 100644 --- a/resources/views/pemilik_jaminan/form.blade.php +++ b/resources/views/pemilik_jaminan/form.blade.php @@ -79,7 +79,7 @@ @enderror
- + @error('nomor_id') {{ $message }} @enderror @@ -88,7 +88,28 @@
+ @if(isset($detailSertifikat)) + @foreach(json_decode($detailSertifikat) as $sertifikat) +
+ +
+
+
+ +
+
+ + +
+ +
+
+
+ @endforeach + @endif
@endsection - @push('scripts') diff --git a/resources/views/penawaran/create.blade.php b/resources/views/penawaran/create.blade.php index 45d0930..d8b2b5c 100644 --- a/resources/views/penawaran/create.blade.php +++ b/resources/views/penawaran/create.blade.php @@ -189,7 +189,12 @@ @enderror -
+
+ @if (isset($penawaran->nomor_registrasi)) + + Surat Tender + + @endif diff --git a/resources/views/penawaran/edit.blade.php b/resources/views/penawaran/edit.blade.php index 364ac76..d49a6bd 100644 --- a/resources/views/penawaran/edit.blade.php +++ b/resources/views/penawaran/edit.blade.php @@ -195,7 +195,12 @@
-
+
+ @if (isset($penawaran->nomor_registrasi)) + + Surat Tender + + @endif diff --git a/resources/views/penawaran/surat_tender.blade.php b/resources/views/penawaran/surat_tender.blade.php new file mode 100644 index 0000000..ee65e8c --- /dev/null +++ b/resources/views/penawaran/surat_tender.blade.php @@ -0,0 +1,56 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName(), request()->route('noreg')) }} +@endsection + +@section('content') +
+
+
+

+ Surat Tender +

+
+ @if (isset($penawaran->nomor_registrasi)) + Back + @else + Back + @endif +
+
+
+

Dear + {{ ucwords(auth()->user()->name) ?? 'Tidak Ada' }} +

+

Mohon untuk dibuatkan proposal jasa appraisal atas nama {{ ucwords($penawaran->permohonan->user->name) }}, tujuan penilaian + untuk + @foreach ($penawaran->tujuanPenilaianKJPP as $tujuanPenilaianKJPP) + {{ $tujuanPenilaianKJPP->name }} + @endforeach + , laporan dalam bentuk {{ $penawaran->jenisLaporan->name }}, + dengan data-data sebagai berikut :

+
    +
  • Aset Jaminan: [otomasi dari tabel permohonan]
  • +
  • Lokasi Jaminan: [otomasi dari tabel permohonan]
  • +
  • LT / LB: [otomasi dari tabel permohonan]
  • +
+

Harap proposal dibuat dengan harga yang minimal sehingga tidak perlu tawar menawar lagi.

+

Mohon proposal dapat saya terima segera, sebelum + {{ formatTanggalIndonesia($penawaran->end_date) }} pukul 17.00 WIB +

+

Best Regards, + [otomasi dari nama dan tanda tangan user penginput] + Sub Direktorat Appraisal +

+

PT. Bank Artha Graha Internasional, Tbk.
+ Gedung Bank Artha Graha, Lantai 3
+ Jl. Kwiitang Raya No 24-26, Jakarta Pusat - 10420.
+ Telp. 021 - 3903040 (H)

+
+
+
+@endsection diff --git a/resources/views/penilai/index.blade.php b/resources/views/penilai/index.blade.php new file mode 100644 index 0000000..196b6c3 --- /dev/null +++ b/resources/views/penilai/index.blade.php @@ -0,0 +1,200 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('penilai') }} +@endsection + +@section('content') +
+
+
+
+

+ Penilai +

+
+
+ +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + +
+ + + Nomor Registrasi + + + Debitur + + + Pemohon(Cabang/Direktorat) + + + AO + + + Tujuan Penilaian + + + Fasilitas Kredit + + + Tanggal Survei + + + Due Date SLA + + Action
+
+ +
+
+
+
+@endsection + + +@push('scripts') + + +@endpush diff --git a/resources/views/penilai/show.blade.php b/resources/views/penilai/show.blade.php new file mode 100644 index 0000000..107256e --- /dev/null +++ b/resources/views/penilai/show.blade.php @@ -0,0 +1,160 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@section('content') +
+
+
+

+ Detail Penilai +

+
+ + Back +
+
+
+
+ +
+

{{ $permohonan->nomor_registrasi }}

+
+ +
+

{{ $permohonan->debiture->name }}

+
+
+
+ +
+

{{ $permohonan->branch->name }}

+
+ +
+

{{ $permohonan->debiture->address }}, Kel. + {{ $permohonan->debiture->village->name }}, Kec. {{ $permohonan->debiture->district->name }}, + {{ ucwords(strtolower($permohonan->debiture->city->name)) }}, Kode Pos. + {{ $permohonan->debiture->postal_code }}

+
+
+
+ +
+

{{ $permohonan->user->name }}

+
+ +
+

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

+
+
+
+ +
+

+ {{ formatTanggalIndonesia($permohonan->created_at) }}

+
+ +
+

+ {{ $permohonan->debiture->cif }}

+
+
+
+ +
+

+ {{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }}

+
+
+
+ +
+

+ {{ $permohonan->penilaian->userSurveyor->name }}

+

+ Region 1

+
+ +
+

+ @foreach ($permohonan->penilaian->teams->teamsUsers as $index => $penilaian) + {{ $penilaian->user->name }}{{ $index + 1 < count($permohonan->penilaian->teams->teamsUsers) ? ', ' : '' }} + @endforeach +

+

+ {{ $permohonan->penilaian->teams->regions->name }} +

+
+
+
+ +

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

+ +

+ @foreach ($permohonan->debiture->documents as $document) + {{ $document->jenisjaminan->name }} + @endforeach +

+
+
+ +
+

+ {{ formatTanggalIndonesia($permohonan->created_at) }}

+
+
+
+ +
+

+ {{ formatTanggalIndonesia($permohonan->created_at) }}

+
+
+
+ +
+

+ PJ/001/001

+
+
+
+
+
+@endsection diff --git a/resources/views/penilaian/form.blade.php b/resources/views/penilaian/form.blade.php index 8d39097..9782132 100644 --- a/resources/views/penilaian/form.blade.php +++ b/resources/views/penilaian/form.blade.php @@ -183,15 +183,14 @@ +
- + + type="text" value="{{ $jenisPenilaian->name }}" readonly> @error('jenis_penilaian_id') {{ $message }} @enderror @@ -203,9 +202,7 @@ Tim Penilai yang di tunjuk
- + @error('teams_id') @@ -214,62 +211,217 @@
-
+ {{-- @php + var_dump($penilaianTeam); + @endphp --}} + +
- +
+ +
- @error('surveyor_id') + @error('surveyor_selection') {{ $message }} @enderror
-
- -
- - @error('penilaian_id') - {{ $message }} - @enderror + -
- -
- - @error('penilai_surveyor_id') - {{ $message }} - @enderror + +
+
+ + @if ( + $penilaianTeam->isNotEmpty() && + $penilaianTeam->contains(fn($item) => $item->role == 'surveyor' && is_null($item->user_id)) + ) +
+ +
+
+ +
+ @error('surveyor_id') + {{ $message }} + @enderror +
+
+ @elseif($penilaianTeam->isEmpty()) +
+ +
+
+ +
+ @error('surveyor_id') + {{ $message }} + @enderror +
+
+ @endif + + + + + + @if ( + $penilaianTeam->isNotEmpty() && + $penilaianTeam->contains(fn($item) => $item->role == 'penilai' && is_null($item->user_id)) +) + +
+ +
+
+ +
+ @error('penilai_id') + {{ $message }} + @enderror +
+
+ @elseif($penilaianTeam->isEmpty()) +
+ +
+
+ +
+ @error('penilai_id') + {{ $message }} + @enderror +
+
+ @endif +
-
- -
- -
- - -
@@ -376,8 +521,57 @@
@endsection @push('scripts') - + + + + +@endpush diff --git a/resources/views/permohonan/authorization/show.blade.php b/resources/views/permohonan/authorization/show.blade.php index 41b247c..e8564e1 100644 --- a/resources/views/permohonan/authorization/show.blade.php +++ b/resources/views/permohonan/authorization/show.blade.php @@ -148,7 +148,7 @@ Catatan
- +
diff --git a/resources/views/permohonan/form.blade.php b/resources/views/permohonan/form.blade.php index 7c82edd..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,44 +135,25 @@ Nilai NJOP
- + @error('nilai_njop') {{ $message }} @enderror
-
- -
- - @error('status') - {{ $message }} - @enderror + @if($permohonan->status=='revisi') +
+ Catatan :
+ {{ $permohonan->keterangan }}
-
- - + @endif
@@ -234,19 +201,14 @@ Tujuan Penilaian
- @if(isset($tujuanPenilaian)) @foreach($tujuanPenilaian as $row) - @if(isset($permohonan)) - - @else - - @endif + @endforeach @endif @@ -265,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
@@ -289,22 +246,17 @@
- @error('status') + @error('nilai_plafond_id') {{ $message }} @enderror
@@ -317,10 +269,10 @@
- @error('status') + @error('status_bayar') {{ $message }} @enderror
@@ -331,41 +283,16 @@ Nilai NJOP
- + @error('nilai_njop') {{ $message }} @enderror
-
- -
- - @error('status') - {{ $message }} - @enderror -
-
- -
+
+ + + +@endsection diff --git a/resources/views/prosespenawaran/index.blade.php b/resources/views/prosespenawaran/index.blade.php index 67e4ccb..c4aa34e 100644 --- a/resources/views/prosespenawaran/index.blade.php +++ b/resources/views/prosespenawaran/index.blade.php @@ -38,8 +38,8 @@ Nomor Registrasi - - Kode Penawaran + + Nama Debitur @@ -132,8 +132,16 @@ 'nomor_registrasi': { title: 'Nomor Registrasi', }, - code: { - title: 'Kode Penawaran', + debiture: { + title: 'Nama Debitur', + render: (item, data) => { + if(data.permohonan) { + return `${data.permohonan.debiture.name}`; + } + return "-"; + } + + }, start_date: { title: 'Tanggal Penawaran', @@ -141,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: { diff --git a/resources/views/prosespenawaran/js/editjs.blade.php b/resources/views/prosespenawaran/js/editjs.blade.php index 58dd528..34a98c6 100644 --- a/resources/views/prosespenawaran/js/editjs.blade.php +++ b/resources/views/prosespenawaran/js/editjs.blade.php @@ -1,19 +1,19 @@ @push('scripts') @include('lpj::assetsku.includenya') - @include('lpj::prosespenawaran.js.editextjs') - -@endpush \ No newline at end of file +@endpush diff --git a/resources/views/prosespenawaranulang/js/editjs.blade.php b/resources/views/prosespenawaranulang/js/editjs.blade.php index 7d8d9da..0bde8e5 100644 --- a/resources/views/prosespenawaranulang/js/editjs.blade.php +++ b/resources/views/prosespenawaranulang/js/editjs.blade.php @@ -1,19 +1,19 @@ @push('scripts') @include('lpj::assetsku.includenya') - @include('lpj::prosespenawaranulang.js.editextjs') - -@endpush \ No newline at end of file +@endpush 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 new file mode 100644 index 0000000..0f9f78a --- /dev/null +++ b/resources/views/spk/documentSPK.blade.php @@ -0,0 +1,192 @@ +@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 + +
+
+ +
+
diff --git a/resources/views/spk/dokumennya.blade.php b/resources/views/spk/dokumennya.blade.php new file mode 100644 index 0000000..3bfbd22 --- /dev/null +++ b/resources/views/spk/dokumennya.blade.php @@ -0,0 +1,185 @@ +@php + use Nwidart\Modules\Module; +@endphp +@vite(Module::getAssets()) + @stack('styles') +
+
+ +
+
\ No newline at end of file diff --git a/resources/views/spk/edit.blade.php b/resources/views/spk/edit.blade.php new file mode 100644 index 0000000..171d57a --- /dev/null +++ b/resources/views/spk/edit.blade.php @@ -0,0 +1,211 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection +@php + // $route = Route::currentRouteName(); + // dd($route); + $route = explode('.', Route::currentRouteName()); +@endphp + +@section('content') +
+
+
+

Buat SPK

+
+ +
+ +
+
+
+ +
+
+
+
+@endsection +@include('lpj::spk.js.editjs') diff --git a/resources/views/spk/index.blade.php b/resources/views/spk/index.blade.php index fb973a3..1f6bb0c 100644 --- a/resources/views/spk/index.blade.php +++ b/resources/views/spk/index.blade.php @@ -1,27 +1,26 @@ @extends('layouts.main') @section('breadcrumbs') - {{ Breadcrumbs::render('basicdata.tujuan-penilaian') }} + {{ Breadcrumbs::render('spk') }} @endsection @section('content')
-
+

- SPK Menu + Daftar SPK

@@ -32,12 +31,28 @@ - - No SPK + + Nomor Registrasi - - Perihal + + Kode Penawaran + + + + Tanggal Penawaran + + + + Tujuan Penilaian + + + + KJPP Data + + + + Status Action @@ -62,87 +77,125 @@ @endsection @push('scripts') - - - + + return '-'; + }, + }, + nama_kjpp_sebelumnya: { + title: 'Nama KJPP Terpilih', + render: (item, data) => { + return `${data.penawaran.nama_kjpp_sebelumnya}`+'
' + +`${data.penawaran.biaya_kjpp_sebelumnya}`+'
' + +`${data.penawaran.tanggal_penilaian_sebelumnya}`; + }, + }, + status: { + title: 'Status', + render: (item, data) => { + return `${data.penawaran.status}`.toUpperCase(); + }, + }, + actions: { + title: 'Status', + render: (item, data) => { + var spkShow =''; + var spkCreate=''; + if(!data.dokumen) + { + spkCreate=` + + `; + } + else + { + spkShow =`
+ + + `; + spkCreate=` + + `; + } + + return `
` + +spkShow+spkCreate+ + `
`; + }, + } + }, + }; + + let dataTable = new KTDataTable(element, dataTableOptions); + // Custom search functionality + searchInput.addEventListener('input', function () { + const searchValue = this.value.trim(); + dataTable.search(searchValue, true); + + }); + + @endpush diff --git a/resources/views/spk/js/editjs.blade.php b/resources/views/spk/js/editjs.blade.php new file mode 100644 index 0000000..813e378 --- /dev/null +++ b/resources/views/spk/js/editjs.blade.php @@ -0,0 +1,39 @@ +@push('scripts') + @include('lpj::assetsku.includenya') + +@endpush \ No newline at end of file diff --git a/resources/views/surveyor/components/alat-berat.blade.php b/resources/views/surveyor/components/alat-berat.blade.php new file mode 100644 index 0000000..c010e38 --- /dev/null +++ b/resources/views/surveyor/components/alat-berat.blade.php @@ -0,0 +1,192 @@ + + +
+ + +
+

Identitas Debitur

+
+
+ +
+ + + @error('bentuk_tanah') + {{ $message }} + @enderror +
+
+ +
+

Lokasi Jaminan

+
+
+ @php + $inputDataLoaksi = []; + + $inputDataLoaksi = [ + ['label' => 'Nama Jalan', 'index' => 0], + ['label' => 'Perumahan/Gang', 'index' => 1], + ['label' => 'Blok/Nomor', 'index' => 2], + ['label' => 'Desa/Kelurahan', 'index' => 3], + ['label' => 'Kecamatan', 'index' => 4], + ['label' => 'Kota/Kotamadya', 'index' => 5], + ['label' => 'Provinsi', 'index' => 6] + ]; + + @endphp + + @if (count($inputDataLoaksi) > 0) + @foreach ($inputDataLoaksi as $item) + +
+ +
+ + + @error('bentuk_tanah') + {{ $message }} + @enderror +
+
+ @endforeach + @endif +
+
+ + +
+
+

Data Data Jaminan

+
+
+
+ +
+ + + @error('hadapMataAngin') + {{ $message }} + @enderror +
+
+ + @php + $inputDataJaminan = []; + + $inputDataJaminan = [ + ['label' => 'Nomor Lambung', 'index' => 0], + ['label' => 'Model Unit', 'index' => 1], + ['label' => 'Tahun Pembuatan', 'index' => 2], + ['label' => 'Merk', 'index' => 3], + ['label' => 'Negara Pembuat', 'index' => 4], + ['label' => 'Tahun Pembelian', 'index' => 5], + ['label' => 'Nomor Faktur/Invoice', 'index' => 6], + ['label' => 'Nomor Kontrak Pembelian', 'index' => 7], + ['label' => 'Nama Pemilik', 'index' => 8], + ['label' => 'Alamaat Pemilik', 'index' => 9], + ['label' => 'Nomor Asuransi', 'index' => 10], + ['label' => 'Nomor Rangka', 'index' => 11], + ['label' => 'Nomor Mesin', 'index' => 12], + ['label' => 'Hour Mesin', 'index' => 13], + ['label' => 'Overhaul Mesin', 'index' => 14], + ]; + + @endphp + + @if (count($inputDataJaminan) > 0) + @foreach ($inputDataJaminan as $item) + +
+ +
+ + + @error('bentuk_tanah') + {{ $message }} + @enderror +
+
+ @endforeach + @endif +
+
+ + + +
+
+

Kondisi Objek Jaminan

+
+
+
+ +
+ + + @error('hadapMataAngin') + {{ $message }} + @enderror +
+
+ + @php + $kondisiObjeck = []; + + $kondisiObjeck = [ + ['label' => 'Mesin dan Panel Instrument', 'index' => 0], + ['label' => 'Fungsi mesin dan panel instrument', 'index' => 1], + ['label' => 'Interior (jok, dll)', 'index' => 2], + ['label' => 'Rangka dan Karoseri', 'index' => 3], + ['label' => 'Ban', 'index' => 4], + ['label' => 'Velg', 'index' => 5], + ['label' => 'Air Conditioner', 'index' => 6], + ['label' => 'Aksesoris Tambahan lainnya', 'index' => 7], + ['label' => 'LCD', 'index' => 8], + ['label' => 'Perlengkapan Keamanan', 'index' => 9], + ['label' => 'Asuransi', 'index' => 10], + ]; + + @endphp + + @if (count($kondisiObjeck) > 0) + @foreach ($kondisiObjeck as $item) + +
+ +
+ + + @error('bentuk_tanah') + {{ $message }} + @enderror +
+
+ @endforeach + @endif +
+
diff --git a/resources/views/surveyor/components/apartemen-kantor.blade.php b/resources/views/surveyor/components/apartemen-kantor.blade.php index 05e0adb..28cb7e8 100644 --- a/resources/views/surveyor/components/apartemen-kantor.blade.php +++ b/resources/views/surveyor/components/apartemen-kantor.blade.php @@ -1,5 +1,5 @@
-
+

Analisa Unit

@@ -104,8 +104,8 @@ class="input tomselect w-full @error('lantai') border-danger bg-danger-light @enderror" name="lantai"> - @if (isset($posisiKavling)) - @foreach ($posisiKavling as $item) + @if (isset($lantai)) + @foreach ($lantai as $item) @endforeach @endif @@ -126,8 +126,8 @@ class="input tomselect w-full @error('view') border-danger bg-danger-light @enderror" name="view"> - @if (isset($kondisiFisikTanah)) - @foreach ($kondisiFisikTanah as $item) + @if (isset($viewUnit)) + @foreach ($viewUnit as $item) @endforeach @endif @@ -146,8 +146,8 @@ class="input tomselect w-full @error('bentuk_unit') border-danger bg-danger-light @enderror" name="bentuk_unit"> - @if (isset($kondisiFisikTanah)) - @foreach ($kondisiFisikTanah as $item) + @if (isset($bentukTanah)) + @foreach ($bentukTanah as $item) @endforeach @endif diff --git a/resources/views/surveyor/components/bangunan.blade.php b/resources/views/surveyor/components/bangunan.blade.php new file mode 100644 index 0000000..524aace --- /dev/null +++ b/resources/views/surveyor/components/bangunan.blade.php @@ -0,0 +1,232 @@ + +{{-- @if ($analisaType == 'tanah_bangunan') --}} +
+
+

Analisa Bangunan

+
+
+
+ +
+
+ + +
+ + @error('luas_tanah_bagunan') + {{ $message }} + @enderror +
+
+ + + +
+ +
+ + + @error('jenis_bangunan') + {{ $message }} + @enderror +
+
+ + +
+ +
+ + + @error('kondisi_bangunan') + {{ $message }} + @enderror +
+
+ + +
+ +
+ + + @error('sifat_bangunan') + {{ $message }} + @enderror +
+
+ + +
+
+ + +
+
+ +
+ @if (@isset($spekKategoriBagunan)) + @foreach ($spekKategoriBagunan as $item) +
+ +
+ + + @error('name') + {{ $message }} + @enderror +
+
+ @endforeach + @endif +
+ +
+
+
+ +
+ +
+
+ + + + +
+ +
+ + + @error('sarana_pelengkap') + {{ $message }} + @enderror +
+
+
+
+{{-- @endif --}} + +@push('scripts') + +@endpush diff --git a/resources/views/surveyor/components/foto.blade.php b/resources/views/surveyor/components/foto.blade.php index 62bf070..0293a06 100644 --- a/resources/views/surveyor/components/foto.blade.php +++ b/resources/views/surveyor/components/foto.blade.php @@ -5,6 +5,7 @@ @endsection --}} @section('content') +
@@ -120,7 +121,6 @@
-
+ +

Rute Menuju Lokasi

@@ -177,25 +179,33 @@ @if (isset($fotoJaminan)) @foreach ($fotoJaminan->ruteJaminan as $item) - + @if (isset($item->foto_rute)) + Gambar Pendamping + @endif
- @if (isset($item->foto_rute)) - Gambar Pendamping - @endif - - - -
+ +
+ + + +
+ + +
@error('foto_rute.*') {{ $message }} @@ -211,9 +221,17 @@ - - + +
+ + + +
+
+
@@ -289,7 +314,7 @@
-
+
@@ -336,10 +361,16 @@ - - +
+ + + +
+
+
+ +
+
+ + + + + @endsection @push('scripts') + @include('lpj::surveyor.js.camera-editor') + + -@endpush diff --git a/resources/views/surveyor/data/form.blade.php b/resources/views/surveyor/data/form.blade.php index 26c6d14..46050df 100644 --- a/resources/views/surveyor/data/form.blade.php +++ b/resources/views/surveyor/data/form.blade.php @@ -1,8 +1,8 @@ @extends('layouts.main') -{{-- @section('breadcrumbs') +@section('breadcrumbs') {{ Breadcrumbs::render(request()->route()->getName()) }} -@endsection --}} +@endsection @section('content')
@@ -33,7 +33,7 @@
+ name="code" value="{{ $model->code ?? '' }}"> @error('code') {{ $message }} @enderror @@ -51,6 +51,41 @@ @enderror
+ + @if (isset($header[1]) && $header[1] == 'spek-bangunan') +
+ +
+ + @error('spek_kategori_bangunan_id') + {{ $message }} + @enderror +
+
+ @endif + +