diff --git a/app/Helpers/Lpj.php b/app/Helpers/Lpj.php index ec2aaf3..ed09be5 100644 --- a/app/Helpers/Lpj.php +++ b/app/Helpers/Lpj.php @@ -107,24 +107,141 @@ function onLastnumberCodePenawaran() : string { - // chek data penawaran terakhir --> mengurutkan data berdasarkan kolom `created_at` secara DESC + // ambil code terakhir $maxCode = PenawaranTender::max('code'); + // chek data penawaran terakhir --> mengurutkan data berdasarkan kolom `created_at` secara DESC // $penawaran = PenawaranTender::latest()->first(); - $penawaran = PenawaranTender::where('code', '=', $maxCode)->first(); - $code_penawaran_last = ''; - $noUrutAkhirString = sprintf("%04s", 1); - if ($penawaran) { - $code_penawaran_last = substr($maxCode, -4); + $penawaran = PenawaranTender::where('code','=',$maxCode)->first(); + $code_penawaran_last=''; + + // nomor di set 0001 + $noUrutAkhirString = sprintf("%04s", 1); + if($penawaran) + { + $code_penawaran_last = substr ($maxCode, -4); $year_penawaran_last = Carbon::parse($penawaran->created_at)->year; $year_now = Carbon::now()->year; if ($year_now == $year_penawaran_last) { $noUrutAkhirString = sprintf("%04s", abs($code_penawaran_last + 1)); } + // jika ternyata tahun tdk sama (kurang dari tahun sekarang), maka nomor di set 0001 } return 'NP' . Carbon::now()->format('y') . $noUrutAkhirString; } + // generate last penawaran.no_spk + function onLastnumberCodePenawaranSPK($jenis_laporan_code): string + { + + // 20241124_001 ==> spk_no_core + // XXX / PJ / JKT / MONTH-ROM / FR|SR / 2024 + // 001 / PJ / JKT / XI / FR / 2024 + $maxCode = PenawaranTender::max('spk_no_core'); + $penawaran = PenawaranTender::where('spk_no_core','=',$maxCode)->first(); + $no_spk_penawaran_last=''; + $year_penawaran_last=''; + $year_now = Carbon::now()->year; + // nomor di set 001 + $noUrutAkhirString = sprintf("%03s", 1); + if($penawaran) + { + $no_spk_penawaran_last = substr ($maxCode, -3); + $year_penawaran_last = substr ($maxCode, 0, 4); + + if($year_now == $year_penawaran_last) + { + $noUrutAkhirString = sprintf("%03s", abs($no_spk_penawaran_last + 1)); + } + // jika ternyata tahun tdk sama (kurang dari tahun sekarang), maka nomor di set 001 + } + + $month = onRomawi(Carbon::now()->month); + + $lastSPK = $noUrutAkhirString.' / PJ / JKT / '. $month .' / ' .$jenis_laporan_code.' / '.$year_now; + return $lastSPK; + } + + function onRomawi(int $bln): string + { + switch ($bln){ + case 1: + return "I"; + break; + case 2: + return "II"; + break; + case 3: + return "III"; + break; + case 4: + return "IV"; + break; + case 5: + return "V"; + break; + case 6: + return "VI"; + break; + case 7: + return "VII"; + break; + case 8: + return "VIII"; + break; + case 9: + return "IX"; + break; + case 10: + return "X"; + break; + case 11: + return "XI"; + break; + case 12: + return "XII"; + break; + + } + + } + + function penyebut($nilai) { + $nilai = abs($nilai); + $huruf = array("", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan", "sepuluh", "sebelas"); + $temp = ""; + if ($nilai < 12) { + $temp = " ". $huruf[$nilai]; + } else if ($nilai <20) { + $temp = penyebut($nilai - 10). " belas"; + } else if ($nilai < 100) { + $temp = penyebut($nilai/10)." puluh". penyebut($nilai % 10); + } else if ($nilai < 200) { + $temp = " seratus" . penyebut($nilai - 100); + } else if ($nilai < 1000) { + $temp = penyebut($nilai/100) . " ratus" . penyebut($nilai % 100); + } else if ($nilai < 2000) { + $temp = " seribu" . penyebut($nilai - 1000); + } else if ($nilai < 1000000) { + $temp = penyebut($nilai/1000) . " ribu" . penyebut($nilai % 1000); + } else if ($nilai < 1000000000) { + $temp = penyebut($nilai/1000000) . " juta" . penyebut($nilai % 1000000); + } else if ($nilai < 1000000000000) { + $temp = penyebut($nilai/1000000000) . " milyar" . penyebut(fmod($nilai,1000000000)); + } else if ($nilai < 1000000000000000) { + $temp = penyebut($nilai/1000000000000) . " trilyun" . penyebut(fmod($nilai,1000000000000)); + } + return $temp; + } + + function terbilang($nilai) { + if($nilai<0) { + $hasil = "minus ". trim(penyebut($nilai)); + } else { + $hasil = trim(penyebut($nilai)); + } + return $hasil; + } // andy add diff --git a/app/Http/Controllers/ActivityController.php b/app/Http/Controllers/ActivityController.php index 1008d7d..bfb447f 100644 --- a/app/Http/Controllers/ActivityController.php +++ b/app/Http/Controllers/ActivityController.php @@ -9,6 +9,7 @@ use Illuminate\Http\Request; use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\Penilaian; use Modules\Lpj\Models\TeamsUsers; +use Modules\Lpj\Models\PenilaianTeam; use Modules\Lpj\Models\StatusPermohonan; use Modules\Lpj\Exports\PermohonanExport; use Maatwebsite\Excel\Facades\Excel; @@ -65,10 +66,33 @@ class ActivityController extends Controller }) ->get(); + + + return view('lpj::activity.progres_activity.index', compact('teamsActivity')); } + function updateTeamAssingment(Request $request) { + + try { + $id = $request->input('id'); + $user = PenilaianTeam::where('penilaian_id', $id)->get(); + if ($user) { + foreach ($user as $item) { + if($item->role == 'surveyor') { + $item->update(['user_id' => $request->surveyor_id]); + } + } + return redirect()->route('activity.progres.index')->with('success', 'Surveyor berhasil diganti'); + } + + } catch (\Throwable $th) { + return redirect()->route('activity.progres.index')->with('success', $th->getMessage()); + } + } + + public function senior() { diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index ab47dd1..357d984 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -4,6 +4,7 @@ namespace Modules\Lpj\Http\Controllers; use Illuminate\Http\Request; use Modules\Lpj\Models\Permohonan; +use Modules\Lpj\Models\Inspeksi; use App\Http\Controllers\Controller; class PenilaiController extends Controller @@ -21,6 +22,22 @@ class PenilaiController extends Controller /** * Show the form for creating a new resource. */ + public function lampiran($id){ + $permohonan = Permohonan::with('debiture.documents')->find($id); + + $jaminanId = $permohonan->debiture->documents->first()->jenis_jaminan_id; + + $inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); + + $formFoto = null; + if ($inpeksi) { + $formFoto = json_decode($inpeksi->foto_form, true); + } + + + return view('lpj::penilai.lampiran', compact('permohonan', 'formFoto')); + } + public function create() { return view('lpj::create'); diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index 8daef81..e0ebfa8 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -116,7 +116,7 @@ class PenilaianController extends Controller } if ($validatedData['surveyor_id'] === 'pilih_dari_region' || $validatedData['penilai_id'] === 'pilih_dari_region') { - $status = 'registered'; + $status = $permohonan->status; } else { $status = 'assign'; } diff --git a/app/Http/Controllers/RegistrasiController.php b/app/Http/Controllers/RegistrasiController.php index 6b69cd0..c6e80b2 100644 --- a/app/Http/Controllers/RegistrasiController.php +++ b/app/Http/Controllers/RegistrasiController.php @@ -120,7 +120,7 @@ } } else { $data['status'] = 'error'; - $data['message'] ['message_ajax'] = ["no ajax request"]; + $data['message']['message_ajax'] = ["no ajax request"]; } return response()->json($data); @@ -149,6 +149,7 @@ if ($tindakan == 0) { $dataku['jenis_penilaian_id'] = $request->jenis_penilaian; $dataku['region_id'] = $request->region; + $dataku['sla'] = $request->sla; $dataku['status'] = 'registered'; if ($request->catatan2) { $dataku['registrasi_catatan'] = $request->catatan2; @@ -205,6 +206,12 @@ $validateIt['region'] = ['required']; $messageIt ['region.required'] = 'Silahkan pilih Region'; } + else + { + $validateIt['sla'] = ['required']; + $messageIt ['sla.required'] = 'Silahkan isi SLA'; + } + } elseif ($tindakan == 1) { $validateIt['catatan'] = ['required']; $messageIt ['catatan.required'] = 'Silahkan isi Catatan'; diff --git a/app/Http/Controllers/SpkController.php b/app/Http/Controllers/SpkController.php index d5ce566..35faa19 100644 --- a/app/Http/Controllers/SpkController.php +++ b/app/Http/Controllers/SpkController.php @@ -104,12 +104,11 @@ use Illuminate\Support\Facades\Auth; } - // data dokumen_spk - if($obj->dokumen) + // data spk_dokumen_path + if($obj->penawaran->spk_dokumen_path) { - $spkpenawaran_path = Storage::url($obj->dokumen); - // dd($spkpenawaran_path); - $data[$i]->dokumen = $spkpenawaran_path; + $spk_dokumen_path = Storage::url($obj->penawaran->spk_dokumen_path); + $data[$i]->penawaran->spk_dokumen_path = $spk_dokumen_path; } $i++; @@ -147,10 +146,14 @@ use Illuminate\Support\Facades\Auth; } public function edit($id) - { + { + // dd(Carbon::now()->addDays(1)->format('d F Y')); + // dd(Carbon::now()->subDays(1)->format('d F Y')); jenis_laporan_name $penawaran = PenawaranTender::leftJoin('detail_penawaran', 'detail_penawaran.penawaran_id','=','penawaran.id') ->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id') ->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id') + ->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id','=','penawaran.tujuan_penilaian_kjpp_id') + ->leftJoin('penilaian', 'penilaian.nomor_registrasi','=','penawaran.nomor_registrasi') ->where('detail_penawaran.status','=',1) ->where('penawaran.id','=', $id) ->select('penawaran.*', 'detail_penawaran.attachment as attachmentku', @@ -159,7 +162,10 @@ use Illuminate\Support\Facades\Auth; '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' + 'jenis_laporan.name as jenis_laporan_name', + 'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name', + 'jenis_laporan.code as jenis_laporan_code', + 'penilaian.waktu_penilaian as penilaian_waktu_penilain' )->first(); $permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi) @@ -168,24 +174,77 @@ use Illuminate\Support\Facades\Auth; ->select('permohonan.*', 'jenis_jaminan.name as jenis_jaminan_name', 'dokumen_jaminan.address as dokumen_jaminan_address'); - $data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->first(); + $data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian','dokumenjaminan'])->first(); if($penawaran->detail_penawaran_tgl_proposal) $penawaran->detail_penawaran_tgl_proposal = Carbon::parse($penawaran->detail_penawaran_tgl_proposal)->format('d F Y'); + + // generate no spk + $spk_no_last=$penawaran->spk_no; + if(!$spk_no_last) + { + $spk_no_last = onLastnumberCodePenawaranSPK($penawaran->jenis_laporan_code); + $penawaran->spk_no = $spk_no_last; + } - return view('lpj::spk.edit', compact('data', 'penawaran')); + // pengecekan perubahan jenis report + $array_no_last = explode("/",$spk_no_last); + $jenis_report_old=trim($array_no_last[4]); + if($jenis_report_old!=$penawaran->jenis_laporan_code) + { + $penawaran->spk_no=str_replace($jenis_report_old,$penawaran->jenis_laporan_code,$spk_no_last); + } + // pengecekan perubahan jenis report + // generate no spk + + // Jangka Waktu + // date_start (penilaian.waktu_penilain + 1 day) - date_end (persetujuan_penawaran.sla_final) + $jangka_waktu=''; + // Jangka Waktu + $persetujuan_no_proposal = $penawaran->detail_penawaran_no_proposal; + $persetujuan_tgl_proposal = $penawaran->detail_penawaran_tgl_proposal; + $persetujuan_sla_resume = '...'; + $persetujuan_sla_final = '...'; + if(null !==$penawaran->persetujuan) + { + $sla_resume_text = hitungHariKerja($penawaran->persetujuan->created_at,$penawaran->persetujuan->sla_resume); + $sla_final_text = hitungHariKerja($penawaran->persetujuan->created_at,$penawaran->persetujuan->sla_final); + + $sla_resume_text_terbilang = ucfirst(terbilang($sla_resume_text)); + $sla_final_text_terbilang = ucfirst(terbilang($sla_final_text)); + + $persetujuan_no_proposal = $penawaran->persetujuan->nomor_proposal_penawaran; + $persetujuan_tgl_proposal = Carbon::parse($penawaran->persetujuan->tanggal_proposal_penawaran)->format('d F Y'); + $persetujuan_sla_resume = $sla_resume_text.' ('.$sla_resume_text_terbilang.')'; + $persetujuan_sla_final = $sla_final_text.' ('.$sla_final_text_terbilang.')'; + + if($penawaran->penilaian_waktu_penilain) + { + $jangka_waktu_date_start=Carbon::parse($penawaran->penilaian_waktu_penilain)->addDays(1)->format('d F Y'); + $jangka_waktu_date_end=Carbon::parse($penawaran->persetujuan->sla_final)->format('d F Y'); + // Jangka Waktu + // date_start (penilaian.waktu_penilain + 1 day) - date_end (persetujuan_penawaran.sla_final) + $jangka_waktu=$jangka_waktu_date_start.' - '.$jangka_waktu_date_end; + // Jangka Waktu + + } + } + + return view('lpj::spk.edit', compact('data', 'penawaran', 'persetujuan_no_proposal', 'persetujuan_tgl_proposal', 'persetujuan_sla_resume', 'persetujuan_sla_final', 'jangka_waktu')); } public function update(Request $request, $id): JsonResponse { // init - $data1 = array(); - $dataPermohonan = array(); + $data1 = []; + // $dataPermohonan = array(); + $dataPenawaran = []; // data $penawaran = PenawaranTender::leftJoin('detail_penawaran', 'detail_penawaran.penawaran_id','=','penawaran.id') ->leftJoin('jenis_laporan', 'jenis_laporan.id','=','penawaran.jenis_laporan_id') ->leftJoin('kjpp', 'kjpp.id','=','detail_penawaran.kjpp_rekanan_id') + ->leftJoin('penilaian', 'penilaian.nomor_registrasi','=','penawaran.nomor_registrasi') ->where('detail_penawaran.status','=',1) ->where('penawaran.id','=', $id) ->select('penawaran.*', 'detail_penawaran.attachment as attachmentku', @@ -194,7 +253,9 @@ use Illuminate\Support\Facades\Auth; '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' + 'jenis_laporan.name as jenis_laporan_name', + 'jenis_laporan.code as jenis_laporan_code', + 'penilaian.waktu_penilaian as penilaian_waktu_penilain' )->first(); $permohonan = Permohonan::where('nomor_registrasi','=',$penawaran->nomor_registrasi) @@ -202,8 +263,13 @@ use Illuminate\Support\Facades\Auth; ->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(); + $data = $permohonan->with(['user', 'debiture', 'branch', 'tujuanPenilaian','dokumenjaminan'])->first(); + // Jangka Waktu + // date_start (penilaian.waktu_penilain + 1 day) - date_end (persetujuan_penawaran.sla_final) + $jangka_waktu=''; + // Jangka Waktu + if($penawaran->detail_penawaran_tgl_proposal) $penawaran->detail_penawaran_tgl_proposal = Carbon::parse($penawaran->detail_penawaran_tgl_proposal)->format('d F Y'); @@ -213,15 +279,78 @@ use Illuminate\Support\Facades\Auth; $newFileNameWithPath = $folderPath . $newFileName; // update table permohonan - $dataPermohonan=['dokumen' => $newFileNameWithPath]; - $data->update($dataPermohonan); + // $dataPermohonan=['dokumen' => $newFileNameWithPath]; + // $data->update($dataPermohonan); // update table permohonan + + // update table penawaran + $dataPenawaran['spk_dokumen_path'] = $newFileNameWithPath; + // $spk_no_last=$penawaran->spk_no; + if(!$penawaran->spk_no) + { + $spk_no_last = onLastnumberCodePenawaranSPK($penawaran->jenis_laporan_code); + // $penawaran->no_spk = $no_spk_last; + $date_now = Carbon::now()->format('Ymd');// 20240124 + $spk_number = substr ($spk_no_last, 0, 3); + $dataPenawaran['spk_no'] = $spk_no_last; + $dataPenawaran['spk_no_core'] = $date_now.'_'.$spk_number; + $penawaran->spk_no = $spk_no_last; + + } + + // pengecekan perubahan jenis report + $spk_no_old=$penawaran->spk_no; + $array_no_last = explode("/",$spk_no_old); + $jenis_report_old=trim($array_no_last[4]); + if($jenis_report_old!=$penawaran->jenis_laporan_code) + { + $penawaran_spk_no_new=str_replace($jenis_report_old,$penawaran->jenis_laporan_code,$spk_no_old); + $penawaran->spk_no=$penawaran_spk_no_new; + $dataPenawaran['spk_no'] = $penawaran_spk_no_new; + } + // pengecekan perubahan jenis report + + $penawaranM = PenawaranTender::find($penawaran->id); + $penawaranM->update($dataPenawaran); + // update table penawaran + // pdf path $spkpenawaran_path = Storage::url($newFileNameWithPath); - $pdf =Pdf::loadView('lpj::spk.documentSPK', compact('data', 'penawaran')); + $persetujuan_no_proposal = $penawaran->detail_penawaran_no_proposal; + $persetujuan_tgl_proposal = $penawaran->detail_penawaran_tgl_proposal; + $persetujuan_sla_resume = '...'; + $persetujuan_sla_final = '...'; + if(null !==$penawaran->persetujuan) + { + $sla_resume_text = hitungHariKerja($penawaran->persetujuan->created_at,$penawaran->persetujuan->sla_resume); + $sla_final_text = hitungHariKerja($penawaran->persetujuan->created_at,$penawaran->persetujuan->sla_final); + $sla_resume_text_terbilang = ucfirst(terbilang($sla_resume_text)); + $sla_final_text_terbilang = ucfirst(terbilang($sla_final_text)); + + $persetujuan_no_proposal = $penawaran->persetujuan->nomor_proposal_penawaran; + $persetujuan_tgl_proposal = Carbon::parse($penawaran->persetujuan->tanggal_proposal_penawaran)->format('d F Y'); + $persetujuan_sla_resume = $sla_resume_text.' ('.$sla_resume_text_terbilang.')'; + $persetujuan_sla_final = $sla_final_text.' ('.$sla_final_text_terbilang.')'; + + if($penawaran->penilaian_waktu_penilain) + { + $jangka_waktu_date_start=Carbon::parse($penawaran->penilaian_waktu_penilain)->addDays(1)->format('d F Y'); + $jangka_waktu_date_end=Carbon::parse($penawaran->persetujuan->sla_final)->format('d F Y'); + // Jangka Waktu + // date_start (penilaian.waktu_penilain + 1 day) - date_end (persetujuan_penawaran.sla_final) + $jangka_waktu=$jangka_waktu_date_start.' - '.$jangka_waktu_date_end; + // Jangka Waktu + + } + + + } + + $pdf =Pdf::loadView('lpj::spk.documentSPK', compact('data', 'penawaran', 'persetujuan_no_proposal', 'persetujuan_tgl_proposal', 'persetujuan_sla_resume', 'persetujuan_sla_final', 'jangka_waktu')); + $pdf->setPaper('A4', 'portrait'); $content = $pdf->download()->getOriginalContent(); Storage::put('public/'.$newFileNameWithPath,$content); @@ -260,8 +389,10 @@ use Illuminate\Support\Facades\Auth; } public function download($id) { - $document = Permohonan::find($id); - - return response()->download(storage_path('app/public/' .$document->dokumen)); + // dokumen pdf diambil dari penawaran.spk_dokumen_path + $permohonan = Permohonan::find($id); + $document = PenawaranTender::where('nomor_registrasi','=',$permohonan->nomor_registrasi)->first(); + + return response()->download(storage_path('app/public/' .$document->spk_dokumen_path)); } } diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index 681dbe1..6b48f91 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -39,12 +39,23 @@ use Modules\Lpj\Models\Teams; use Modules\Lpj\Models\Lantai; use Modules\Lpj\Models\Inspeksi; use Modules\Lpj\Models\ViewUnit; +use Modules\Lpj\Models\JenisUnit; +use Modules\Lpj\Models\BentukUnit; +use Modules\Lpj\Models\PosisiUnit; +use Modules\Lpj\Models\TerletakArea; +use Modules\Lpj\Models\FasilitasObjek; +use Modules\Lpj\Models\MerupakanDaerah; use Modules\Lpj\Models\ObjekJaminan; use Modules\Lpj\Models\ModelAlatBerat; use Modules\Lpj\Models\JenisPesawat; +use Modules\Lpj\Models\DokumenJaminan; +use Modules\Lpj\Models\DetailDokumenJaminan; use Modules\Lpj\Models\JenisKapal; use Modules\Lpj\Models\JenisKendaraan; use Modules\Lpj\Models\RuteJaminan; +use Modules\Lpj\Models\JenisJaminan; +use Modules\Lpj\Models\HubunganPemilikJaminan; +use Modules\Lpj\Models\HubunganPenghuniJaminan; use Modules\Lpj\Models\AnalisaUnit; use Modules\Lpj\Models\GolonganMasySekitar; use Modules\Lpj\Models\TingkatKeramaian; @@ -105,8 +116,6 @@ class SurveyorController extends Controller $modelAlatBerat = ModelAlatBerat::all(); - - $denah = Denah::where('permohonan_id', $id)->get(); $fotojaminan = FotoJaminan::where('permohonan_id', $id)->get(); $analisa = Analisa::with('analisaUnit', 'analisaTanahBangunan', 'analisaLingkungan', 'analisaFakta', 'jenisJaminan') @@ -170,6 +179,8 @@ class SurveyorController extends Controller { $data = $request->validated(); + + if (!$data) { return response()->json(['success' => false, 'message' => 'Invalid data'], 400); } @@ -181,20 +192,21 @@ class SurveyorController extends Controller $rules = $this->getActionSpecificRules($data, $action, $request); $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first(); - if ($inspeksi) { - $inspeksi->update(['data_form' => json_encode($rules)]); - } else { + + if (!$inspeksi) { Inspeksi::create([ - 'permohonan_id' => $request->permohonan_id, + 'permohonan_id' => $request->input('permohonan_id'), 'data_form' => json_encode($rules), - 'name' => $request->type, - 'jenis_jaminan_id' => $request->input('jenis_jaminan_id'), + 'name' => $request->input('type'), + 'jenis_jaminan_id' => $request->input('jenis_jaminan_id'), ]); + } else { + $inspeksi->update(['data_form' => json_encode($rules)]); } DB::commit(); - return response()->json(['success' => true, 'message' => 'Data saved successfully', 'data' => $rules], 200); + return response()->json(['success' => true, 'message' => 'Data saved successfully', 'data' => $data], 200); } catch (Exception $e) { DB::rollBack(); return response()->json(['success' => false, 'message' => 'Failed to save data: ' . $e->getMessage()], 500); @@ -415,11 +427,11 @@ class SurveyorController extends Controller try { // $cekButton = $this->checkButtonStatus($id); // if (!$cekButton->buttonDisable) { - $permohonan = Permohonan::find($id); - $permohonan->update([ - 'status' => 'done', - ]); - return response()->json(['success' => true, 'message' => 'Form surveyor submitted successfully'], 200); + $permohonan = Permohonan::find($id); + $permohonan->update([ + 'status' => 'done', + ]); + return response()->json(['success' => true, 'message' => 'Form surveyor submitted successfully'], 200); // } else { // return response()->json(['error' => 'Something went wrong'], 400); // } @@ -522,6 +534,43 @@ class SurveyorController extends Controller ->with('error', 'Gagal membuat jadwal: ' . $e->getMessage()); } } + + + public function storeDataPembanding(Request $request) + { + $data = $request->all(); + if (!$data) { + return response()->json(['success' => false, 'message' => 'Invalid data'], 400); + } + + try { + DB::beginTransaction(); + + // $action = $request->input('type'); + // $rules = $this->getActionSpecificRules($data, $action, $request); + + $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first(); + + if (!$inspeksi) { + Inspeksi::create([ + 'permohonan_id' => $request->input('permohonan_id'), + 'data_pembanding' => json_encode($data), + 'name' => $request->input('type'), + 'jenis_jaminan_id' => $request->input('jenis_jaminan_id'), + ]); + } else { + $inspeksi->update(['data_pembanding' => json_encode($data)]); + } + + DB::commit(); + + return response()->json(['success' => true, 'message' => 'Data saved successfully', 'data' => json_encode($data)], 200); + } catch (Exception $e) { + DB::rollBack(); + return response()->json(['success' => false, 'message' => 'Failed to save data: ' . $e->getMessage()], 500); + } + } + /** * Form inspeksi. */ @@ -566,11 +615,14 @@ class SurveyorController extends Controller $jenisKapal = JenisKapal::all(); $jenisPesawat = JenisPesawat::all(); $modelAlatBerat = ModelAlatBerat::all(); - - // return response()->json([ - // 'per'=> - // $permohonan]); - + $hubCadeb = HubunganPemilikJaminan::all(); + $hubPenghuni = HubunganPenghuniJaminan::all(); + $jenisJaminan = JenisJaminan::all(); + $fasilitasObjek = FasilitasObjek::all(); + $merupakanDaerah = MerupakanDaerah::all(); + $terletakDiArea = TerletakArea::all(); + $posisiUnit = PosisiUnit::all(); + $bentukUnit = BentukUnit::all(); $inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); @@ -606,7 +658,15 @@ class SurveyorController extends Controller 'jenisKendaraan', 'jenisKapal', 'jenisPesawat', - 'modelAlatBerat' + 'modelAlatBerat', + 'hubCadeb', + 'jenisJaminan', + 'fasilitasObjek', + 'merupakanDaerah', + 'terletakDiArea', + 'posisiUnit', + 'bentukUnit', + 'hubPenghuni' )); } @@ -681,6 +741,7 @@ class SurveyorController extends Controller $branches = Branch::all(); $provinces = Province::all(); + $data = $this->getCommonData(); $inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); $forminspeksi = null; @@ -690,7 +751,7 @@ class SurveyorController extends Controller } // return response()->json($forminspeksi); - return view('lpj::surveyor.components.data-pembanding', compact('permohonan', 'surveyor', 'branches', 'provinces','forminspeksi')); + return view('lpj::surveyor.components.data-pembanding', compact('permohonan', 'surveyor', 'branches', 'provinces', 'forminspeksi', 'data')); } @@ -779,6 +840,12 @@ class SurveyorController extends Controller 'model-alat-berat' => ['Model Alat Berat', 'model-alat-berat', ModelAlatBerat::class], 'jenis-kapal' => ['Jenis Kapal', 'jenis-kapal', JenisKapal::class], 'jenis-kendaraan' => ['Jenis Kendaraan', 'jenis-kendaraan', JenisKendaraan::class], + 'jenis-unit' => ['Jenis unit', 'jenis-unit', JenisUnit::class], + 'terletak-area' => ['Terletak di Area', 'terletak-area', TerletakArea::class], + 'merupakan-daerah' => ['Merupakan Daerah', 'merupakan-daerah', MerupakanDaerah::class], + 'posisi-unit' => ['Posisi unit', 'posisi-unit', PosisiUnit::class], + 'bentuk-unit' => ['Bentuk unit', 'bentuk-unit', BentukUnit::class], + 'fasilitas-objek' => ['Fasilitas Umum Dekat Objek', 'fasilitas-objek', FasilitasObjek::class], ]; @@ -830,8 +897,92 @@ class SurveyorController extends Controller ->route('basicdata.' . $type . '.index') ->with('success', 'Updated successfully'); } + } + public function update_analisa($id, Request $request) + { + try { + $permohonan = Permohonan::with([ + 'user', + 'debiture.province', + 'debiture.city', + 'debiture.district', + 'debiture.village', + 'branch', + 'tujuanPenilaian', + 'penilaian', + 'documents', + ])->findOrFail($id); + + $jenisAssetUpdated = false; + if ($request->input('types') == 'jenis_asset') { + $this->updateJenisAsset($permohonan, $request); + $jenisAssetUpdated = true; + } + + if (in_array($request->input('types'), ['analisa_tanah', 'analisa_bangunan', 'analisa_unit'])) { + $key = match ($request->input('types')) { + 'analisa_tanah' => 'luas_tanah', + 'analisa_bangunan' => 'luas_bangunan', + 'analisa_unit' => 'luas_unit', + }; + + $this->updateDetails($permohonan, $key, $request->input($key)); + } + + return response()->json([ + 'success' => true, + 'message' => 'Data berhasil disimpan', + 'jenis_asset' => $jenisAssetUpdated, + ], 200); + } catch (\Exception $e) { + return response()->json(['error' => 'Something went wrong', 'message' => $e->getMessage()], 500); + } + } + + + private function updateJenisAsset($permohonan, $request) + { + $jenis_jaminan_id = $permohonan->debiture->documents->first()->jenis_jaminan_id; + DokumenJaminan::where('permohonan_id', $permohonan->id) + ->where('jenis_jaminan_id', $jenis_jaminan_id) + ->update([ + 'jenis_jaminan_id' => $request->input('jenis_asset'), + ]); + } + + private function updateDetails($permohonan, $key, $newValue) + { + $document = $permohonan->debiture->documents->first(); + + if (!$document) { + throw new \Exception("Document not found"); + } + + $detailsUpdate = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->first(); + + if (!$detailsUpdate) { + throw new \Exception("DetailDokumenJaminan not found"); + } + + $datas = json_decode($detailsUpdate->details, true) ?? []; + + if (is_numeric($newValue)) { + $newValue = [$key => $newValue]; + } + + if (!is_array($newValue)) { + throw new \InvalidArgumentException("'{$key}' must be an array or valid JSON string"); + } + + foreach ($newValue as $subKey => $value) { + $datas[$subKey] = $value; // Update atau tambahkan key baru + } + + $detailsUpdate->update([ + 'details' => json_encode($datas), + ]); } @@ -931,6 +1082,12 @@ class SurveyorController extends Controller 'Model alat berat' => ModelAlatBerat::class, 'Jenis kapal' => JenisKapal::class, 'Jenis kendaraan' => JenisKendaraan::class, + 'Terletak di Area' => TerletakArea::class, + 'Posisi unit' => PosisiUnit::class, + 'Bentuk unit' => BentukUnit::class, + 'Fasilitas Umum Dekat Objek' => FasilitasObjek::class, + 'Merupakan Daerah' => MerupakanDaerah::class, + 'Jenis unit' => JenisUnit::class, ]; @@ -1067,6 +1224,12 @@ class SurveyorController extends Controller 'model-alat-berat' => ModelAlatBerat::class, 'jenis-kapal' => JenisKapal::class, 'jenis-kendaraan' => JenisKendaraan::class, + 'terletak-area' => TerletakArea::class, + 'posisi-unit' => PosisiUnit::class, + 'bentuk-unit' => BentukUnit::class, + 'fasilitas-objek' => FasilitasObjek::class, + 'merupakan-daerah' => MerupakanDaerah::class, + 'jenis-unit' => JenisUnit::class, ]; @@ -1098,6 +1261,13 @@ class SurveyorController extends Controller 'modelAlatBerat' => ModelAlatBerat::all(), 'jenisKapal' => JenisKapal::all(), 'jenisKendaraan' => JenisKendaraan::all(), + 'terletakArea' => TerletakArea::all(), + 'posisiUnit' => PosisiUnit::all(), + 'bentukUnit' => BentukUnit::all(), + 'fasilitasObjek' => FasilitasObjek::all(), + 'merupakanDaerah' => MerupakanDaerah::all(), + 'jenisUnit' => JenisUnit::all(), + ]; } @@ -1125,11 +1295,18 @@ class SurveyorController extends Controller 'model-alat-berat' => ['Model alat berat', 'model-alat-berat'], 'jenis-kapal' => ['Jenis kapal', 'jenis-kapal'], 'jenis-kendaraan' => ['Jenis kendaraan', 'jenis-kendaraan'], + 'jenis-unit' => ['Jenis unit', 'jenis-unit'], + 'terletak-area' => ['Terletak di Area', 'terletak-area'], + 'merupakan-daerah' => ['Merupakan Daerah', 'merupakan-daerah'], + 'posisi-unit' => ['Posisi unit', 'posisi-unit'], + 'bentuk-unit' => ['Bentuk unit', 'bentuk-unit'], + 'fasilitas-objek' => ['Fasilitas Umum Dekat Objek', 'fasilitas-objek'], ]; private function getAssetData($data) { return [ + 'asset' =>[ 'debitur_perwakilan' => $data['debitur_perwakilan'] ?? [], 'jenis_asset' => $data['jenis_asset'] ?? null, 'jenis_asset_tidak_sesuai' => $data['jenis_asset_tidak_sesuai'] ?? null, @@ -1142,13 +1319,15 @@ class SurveyorController extends Controller 'provinsi' => $data['provinsi'] ?? null, 'kordinat_lng' => $data['kordinat_lng'] ?? null, 'kordinat_lat' => $data['kordinat_lat'] ?? null, - ]; + ]]; } private function getTanahData($data, $request): array { return [ + 'tanah' => [ + 'luas_tanah' => $data['luas_tanah'] ?? null, 'luas_tanah_tidak_sesuai' => $data['luas_tanah_tidak_sesuai'] ?? null, 'hadap_mata_angin' => $data['hadap_mata_angin'] ?? null, @@ -1166,38 +1345,52 @@ class SurveyorController extends Controller 'lockland' => $data['lockland'] ?? null, 'kondisi_fisik_tanah' => $data['kondisi_fisik_tanah'] ?? [], 'kondisi_fisik_tanah_lainnya' => $data['kondisi_fisik_tanah_lainnya'] ?? null, + ], ]; } private function getBangunanData($data, $request): array { - // $kategori_bangunan = []; - // if ($request->has('spek_kategori_bagunan')) { - // foreach ($request->input('spek_kategori_bagunan', []) as $value) { - // $kategori_bangunan[] = [ - // 'value' => [ - // 'data' => $data['spek_bangunan'] ?? [], - // ], - // ]; - // } - // } + $data = $request->all(); + $result = []; + + // foreach ($data['nama_bagunan'] as $index => $bangunan) { + // $bangunanData = [ + // 'bangunan' => $bangunan, + // 'kategori' => [] + // ]; + + // foreach ($data['spek_kategori_bangunan'] as $kategoriIndex => $kategori) { + // if (isset($data['spek_bangunan'][$kategori])) { + // $bangunanData['kategori'][] = [ + // 'kategori' => $kategori, + // 'spesifikasi' => $data['spek_bangunan'][$kategori] + // ]; + // } + // } + + // $result[] = $bangunanData; + // } return [ + 'bangunan' => [ 'luas_tanah_bagunan' => $data['luas_tanah_bagunan'] ?? null, 'jenis_bangunan' => $data['jenis_bangunan'] ?? null, 'kondisi_bangunan' => $data['kondisi_bangunan'] ?? null, 'sifat_bangunan' => $data['sifat_bangunan'] ?? null, 'sifat_bangunan_input' => $data['sifat_bangunan_input'] ?? null, - 'spek_kategori_bagunan' => $data['spek_kategori_bagunan'] ?? null, - 'spek_bangunan' => $data['spek_bangunan'] ?? [], + 'spesifikasi_bangunan' => $result ?? null, + // 'spek_bangunan' => $data['spek_bangunan'] ?? [], 'sarana_pelengkap' => $data['sarana_pelengkap'] ?? [], 'sarana_pelengkap_input' => $data['sarana_pelengkap_input'] ?? null, + ], ]; } private function getLingkunganData($data, $request): array { return [ + 'lingkungan' => [ 'jarak_jalan_utama' => $data['jarak_jalan_utama'] ?? null, 'jalan_linkungan' => $data['jalan_linkungan'] ?? null, 'jarak_cbd_point' => $data['jarak_cbd_point'] ?? null, @@ -1219,12 +1412,14 @@ class SurveyorController extends Controller 'nama_tps' => $data['nama_tps'] ?? null, 'merupakan_daerah' => $data['merupakan_daerah'] ?? null, 'fasilitas_dekat_object' => $data['fasilitas_dekat_object'] ?? null, + ] ]; } private function getFactData($data, $request): array { $factData = [ + 'fakta' => [ 'fakta_positif' => $data['fakta_positif'] ?? null, 'fakta_negatif' => $data['fakta_negatif'] ?? null, 'rute_menuju' => $data['rute_menuju'] ?? null, @@ -1242,16 +1437,36 @@ class SurveyorController extends Controller 'gss' => $data['gss'] ?? null, 'pelebaran_jalan' => $data['pelebaran_jalan'] ?? null, 'nama_petugas' => $data['nama_petugas'] ?? null, - 'lat' => $data['lat'] ?? null, - 'lng' => $data['lng'] ?? null, 'keterangan' => $data['keterangan'] ?? null, + ] ]; - $factData['foto_gistaru'] = $this->updateOrDeleteFile($data, $request, 'foto_gistaru'); - $factData['foto_bhumi'] = $this->updateOrDeleteFile($data, $request, 'foto_bhumi'); - $factData['foto_argis_region'] = $this->updateOrDeleteFile($data, $request, 'foto_argis_region'); - $factData['foto_tempat'] = $this->updateOrDeleteFile($data, $request, 'foto_tempat'); + $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first(); + + + $fotoTypes = [ + 'foto_gistaru', + 'foto_bhumi', + 'foto_argis_region', + 'foto_tempat' + ]; + + if ($inspeksi) { + $dataForm = json_decode($inspeksi->data_form, true); + foreach ($fotoTypes as $fotoType) { + // Jika ada file baru diupload + if ($request->hasFile($fotoType)) { + $factData[$fotoType] = $this->updateOrDeleteFile($dataForm, $request, $fotoType); + } else { + $factData[$fotoType] = $dataForm[$fotoType] ?? null; + } + } + }else{ + foreach ($fotoTypes as $fotoType) { + $factData[$fotoType] = $this->updateOrDeleteFile($data, $request, $fotoType); + } + } return $factData; } @@ -1262,6 +1477,7 @@ class SurveyorController extends Controller if ($file->isValid()) { $fileName = time() . '_' . $file->getClientOriginalName(); $path = $file->storeAs("public/surveyor/{$request->type}", $fileName); + if ($path === false) { throw new Exception("Failed to store file for {$fileKey}"); } @@ -1291,6 +1507,7 @@ class SurveyorController extends Controller private function getKapalData($data, $request): array { return [ + 'action' => $data['action'] ?? null, 'nama_wakil_debitur' => $data['nama_wakil_debitur'] ?? null, 'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null, @@ -1324,6 +1541,7 @@ class SurveyorController extends Controller 'depth' => $data['depth'] ?? null, 'draft' => $data['draft'] ?? null, + 'lambung_kapal' => $data['lambung_kapal'] ?? null, 'dek' => $data['dek'] ?? null, 'struktur_rangka' => $data['struktur_rangka'] ?? null, @@ -1377,6 +1595,7 @@ class SurveyorController extends Controller 'analisa_makro' => $data['analisa_makro'] ?? null, 'kesimpulan' => $data['kesimpulan'] ?? null, 'catatan' => $data['catatan'] ?? null, + ]; } public function getKendaraanData($data, $request): array @@ -1666,3 +1885,4 @@ class SurveyorController extends Controller } } + diff --git a/app/Http/Requests/FormSurveyorRequest.php b/app/Http/Requests/FormSurveyorRequest.php index 719b695..0a3245b 100644 --- a/app/Http/Requests/FormSurveyorRequest.php +++ b/app/Http/Requests/FormSurveyorRequest.php @@ -100,9 +100,9 @@ class FormSurveyorRequest extends FormRequest 'kondisi_bangunan' => 'nullable', 'sifat_bangunan' => 'required|array', 'sifat_bangunan_input' => 'nullable|array', - 'nama_bagunan' => 'required|array', - 'spek_kategori_bangunan' => 'required|array', - 'spek_kategori_bangunan.*' => 'required|string', + 'nama_bagunan' => 'required', + 'spek_kategori_bangunan.*' => 'required', + 'spek_bangunan.*' => 'required', 'sarana_pelengkap' => 'required', 'sarana_pelengkap_input' => 'nullable|array', ]; diff --git a/app/Http/Requests/SurveyorRequest.php b/app/Http/Requests/SurveyorRequest.php index b6b1791..379d24b 100644 --- a/app/Http/Requests/SurveyorRequest.php +++ b/app/Http/Requests/SurveyorRequest.php @@ -3,7 +3,6 @@ namespace Modules\Lpj\Http\Requests; use Illuminate\Foundation\Http\FormRequest; - use Illuminate\Validation\Rule; class SurveyorRequest extends FormRequest @@ -32,6 +31,12 @@ class SurveyorRequest extends FormRequest 'model-alat-berat' => 'model_alat_berat', 'jenis-kapal' => 'jenis_kapal', 'jenis-kendaraan' => 'jenis_kendaraan', + 'jenis-unit' => 'jenis_unit', + 'terletak-area' => 'terletak_area', + 'merupakan-daerah' => 'merupakan_daerah', + 'posisi-unit' => 'posisi_unit', + 'bentuk-unit' => 'bentuk_unit', + 'fasilitas-objek' => 'fasilitas_objek', ]; /** diff --git a/app/Models/BentukUnit.php b/app/Models/BentukUnit.php new file mode 100644 index 0000000..0c93b1d --- /dev/null +++ b/app/Models/BentukUnit.php @@ -0,0 +1,24 @@ +hasMany(PermohonanHistory::class, 'permohonan_id', 'id')->orderBy('created_at', 'desc'); } + + public function dokumenjaminan() + { + return $this->hasMany(DokumenJaminan::class); + } } diff --git a/app/Models/PosisiUnit.php b/app/Models/PosisiUnit.php new file mode 100644 index 0000000..7b5a392 --- /dev/null +++ b/app/Models/PosisiUnit.php @@ -0,0 +1,24 @@ +integer('sla')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('permohonan', function (Blueprint $table) { + $table->dropColumn('sla'); + }); + } +}; diff --git a/database/migrations/2024_11_22_023845_create_terletak_area_table.php b/database/migrations/2024_11_22_023845_create_terletak_area_table.php new file mode 100644 index 0000000..c80f832 --- /dev/null +++ b/database/migrations/2024_11_22_023845_create_terletak_area_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('terletak_area'); + } +}; diff --git a/database/migrations/2024_11_22_023940_create_merupakan_daerah_table.php b/database/migrations/2024_11_22_023940_create_merupakan_daerah_table.php new file mode 100644 index 0000000..cabd257 --- /dev/null +++ b/database/migrations/2024_11_22_023940_create_merupakan_daerah_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('merupakan_daerah'); + } +}; diff --git a/database/migrations/2024_11_22_024041_create_fasilitas_objek_table.php b/database/migrations/2024_11_22_024041_create_fasilitas_objek_table.php new file mode 100644 index 0000000..cbeb96e --- /dev/null +++ b/database/migrations/2024_11_22_024041_create_fasilitas_objek_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('fasilitas_objek'); + } +}; diff --git a/database/migrations/2024_11_22_025919_create_posisi_unit_table.php b/database/migrations/2024_11_22_025919_create_posisi_unit_table.php new file mode 100644 index 0000000..52d550e --- /dev/null +++ b/database/migrations/2024_11_22_025919_create_posisi_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('posisi_unit'); + } +}; diff --git a/database/migrations/2024_11_22_025956_create_jenis_unit_table.php b/database/migrations/2024_11_22_025956_create_jenis_unit_table.php new file mode 100644 index 0000000..a823476 --- /dev/null +++ b/database/migrations/2024_11_22_025956_create_jenis_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('jenis_unit'); + } +}; diff --git a/database/migrations/2024_11_22_030026_create_bentuk_unit_table.php b/database/migrations/2024_11_22_030026_create_bentuk_unit_table.php new file mode 100644 index 0000000..1cadad0 --- /dev/null +++ b/database/migrations/2024_11_22_030026_create_bentuk_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('bentuk_unit'); + } +}; diff --git a/database/migrations/2024_11_24_024345_update_penawaran_table.php b/database/migrations/2024_11_24_024345_update_penawaran_table.php new file mode 100644 index 0000000..90b2809 --- /dev/null +++ b/database/migrations/2024_11_24_024345_update_penawaran_table.php @@ -0,0 +1,32 @@ +string('spk_no')->nullable()->after('status'); + $table->string('spk_no_core')->nullable()->after('spk_no'); + $table->string('spk_dokumen_path')->nullable()->after('spk_no_core'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('penawaran', function (Blueprint $table) { + $table->dropColumn('spk_no'); + $table->dropColumn('spk_no_core'); + $table->dropColumn('spk_dokumen_path'); + }); + } +}; diff --git a/database/migrations/2024_11_27_214423_update_inspeksi_table.php b/database/migrations/2024_11_27_214423_update_inspeksi_table.php new file mode 100644 index 0000000..e954dbc --- /dev/null +++ b/database/migrations/2024_11_27_214423_update_inspeksi_table.php @@ -0,0 +1,28 @@ +json('data_pembanding')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('inspeksi', function (Blueprint $table) { + $table->dropColumn('data_pembanding'); + }); + } +}; diff --git a/module.json b/module.json index db1356b..e6530f2 100644 --- a/module.json +++ b/module.json @@ -675,6 +675,49 @@ "surveyor" ] }, + + { + "title": "Jenis Unit", + "path": "basicdata.jenis-unit", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + { + "title": "Bentuk Unit", + "path": "basicdata.bentuk-unit", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + { + "title": "Merupakan Daerah", + "path": "basicdata.merupakan-daerah", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + + { + "title": "Fasilitas Umum Dekat Objek", + "path": "basicdata.fasilitas-objek", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, + + { + "title": "Posisi Unit", + "path": "basicdata.posisi-unit", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + }, { "title": "Lalu Lintas Sekitar", "path": "basicdata.lalu-lintas-lokasi", @@ -806,7 +849,15 @@ "administrator", "surveyor" ] - } + }, + { + "title": "Terletak Di Area", + "path": "basicdata.terletak-area", + "classes": "", + "attributes": [], + "permission": "", + "roles": ["administrator","surveyor"] + } ] } ], diff --git a/resources/views/activity/progres_activity/index.blade.php b/resources/views/activity/progres_activity/index.blade.php index 3884136..2e4189f 100644 --- a/resources/views/activity/progres_activity/index.blade.php +++ b/resources/views/activity/progres_activity/index.blade.php @@ -118,12 +118,11 @@
{{ $surveyor->userPenilaiTeam->name }}
+{{ $surveyor->userPenilaiTeam->name }} +
-{{ $permohonan->region->name }}
+{{ $permohonan->region->name }}
+{{ $penilai->userPenilaiTeam->name }} +
+ ++ {{ $permohonan->region->name }} +
+{{ $penilai->userPenilaiTeam->name }}
- -- {{ $permohonan->region->name }} +
+ {{ $permohonan->tujuanPenilaian->name }}
+ ++ @foreach ($permohonan->debiture->documents as $document) + {{ $document->jenisjaminan->name }} + @endforeach
- {{ $permohonan->tujuanPenilaian->name }}
- -- @foreach ($permohonan->debiture->documents as $document) - {{ $document->jenisjaminan->name }} - @endforeach -
-- {{ formatTanggalIndonesia($permohonan->created_at) }}
++ {{ formatTanggalIndonesia($permohonan->created_at) }}
+- {{ formatTanggalIndonesia($permohonan->created_at) }}
++ {{ formatTanggalIndonesia($permohonan->created_at) }}
+- PJ/001/001
++ PJ/001/001
+