diff --git a/app/Helpers/Lpj.php b/app/Helpers/Lpj.php index a479209..5262587 100644 --- a/app/Helpers/Lpj.php +++ b/app/Helpers/Lpj.php @@ -432,20 +432,15 @@ function getWilayahName($code, $type) function formatLabel($key) { - $customLabels = [ - 'shgb_no_kel_desa' => 'SHGB', - 'nib' => 'NIB', - 'img_pbg_no' =>'IMB/PBG NO', - 'no_surat_ukur_gs' => 'No Surat Ukur/GS', - ]; - - // Jika ada dalam mapping, gunakan label custom - if (array_key_exists($key, $customLabels)) { - return $customLabels[$key]; + static $labelCache = []; + if (isset($labelCache[$key])) { + return $labelCache[$key]; } - // Default: Ubah underscore menjadi spasi dan kapitalisasi - return ucwords(str_replace('_', ' ', $key)); + $customLabel = CustomField::where('name', $key)->first(); + $labelCache[$key] = $customLabel->label ?? ucwords(str_replace('_', ' ', $key)); + + return $labelCache[$key]; } function calculateSLA($permohonan, $type) diff --git a/app/Http/Controllers/ActivityController.php b/app/Http/Controllers/ActivityController.php index 8670fe3..abc1505 100644 --- a/app/Http/Controllers/ActivityController.php +++ b/app/Http/Controllers/ActivityController.php @@ -326,7 +326,7 @@ class ActivityController extends Controller $filteredRecords = $query->count(); // Get data with necessary relationships - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian', 'dokumenjaminan'])->get(); + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian', 'dokumenjaminan','nilaiPlafond'])->get(); // Calculate total pages $pageCount = ceil($totalRecords / $request->get('size', 10)); @@ -444,26 +444,40 @@ class ActivityController extends Controller $jeniAsset = null; $statusPembayaran = trim(strtolower($item->permohonan->status_bayar ?? '')); $tujuanPenilaian = $item->permohonan->tujuanPenilaian->name ?? null; + $plafond = $item->permohonan->nilaiPlafond->name ?? null; + $now = Carbon::now(); + $type_report = $item->permohonan->penilai->type ?? ""; - // $plafond = $item->permohonan->nilaiPlafond->name ?? null; - // $type_report = $item->permohonan->penilai->type_penilai; + $hari = $hariPaparan = 0; - // $hari = 0; - // if ($plafond == '< 1M') { - // $item->paparan = 'Tidak Ada'; - // }else if($plafond == '2 M - 5 M'){ - // $hari = 2; - // }else if($plafond == '5 M - 10 M'){ - // $hari = 3; - // } + if($type_report == "sederhana"){ + $hari = 2; + $item->paparan = 'Tidak Ada'; + } else{ + if ($plafond == '< 2M') { + $item->paparan = 'Tidak Ada'; + $hari = 3; + }else if($plafond == '2 M - 5 M'){ + $hari = 3; + $hariPaparan = 2; + }else { + $hari = 5; + $hariPaparan = 3; + } + } + + if ($tujuanPenilaian == 'RAP') { + $hari = 2; + $hariPaparan = 2; + } if ($item->permohonan && $item->permohonan->debiture) { $jeniAsset = $item->permohonan->debiture->documents->first() ?? null; } - $hariTambahan = 0; + /*$hariTambahan = 0; if ($tujuanPenilaian == 'RAP') { $hariTambahan = 2; @@ -473,33 +487,50 @@ class ActivityController extends Controller } else { $hariTambahan = 2; // H+2 untuk yang belum bayar } - } + }*/ $tanggalMulai = $item->waktu_penilaian; if ($tanggalMulai) { + if (!$tanggalMulai instanceof Carbon) { + $tanggalMulai = Carbon::parse($tanggalMulai); + } + $hariKerjaBerikutnya = hitungHariKerja($tanggalMulai->toDateString(),$tanggalMulai->copy()->addDays(1)); + $hariKerjaBerikutnya = max($hariKerjaBerikutnya, 1); + $tanggalMulai = $tanggalMulai->copy()->addDays($hariKerjaBerikutnya); + // Konversi string tanggal ke objek Carbon jika belum if (!$tanggalMulai instanceof Carbon) { $tanggalMulai = Carbon::parse($tanggalMulai); } // Hitung tanggal selesai berdasarkan hari tambahan - $tanggalSelesai = $tanggalMulai->copy()->addDays($hariTambahan); + $tanggalSelesai = $tanggalMulai->copy()->addDays($hari); + $tanggalPaparan = $tanggalMulai->copy()->addDays($hariPaparan); // Hitung hari kerja $hariKerja = hitungHariKerja($tanggalMulai->toDateString(), $tanggalSelesai->toDateString()); + $hariKerja = max($hariKerja, $hari); + + $hariKerjaPaparan = hitungHariKerja($tanggalMulai->toDateString(), $tanggalPaparan->toDateString()); + $hariKerjaPaparan = max($hariKerjaPaparan, $hariPaparan); // Set due date SLA $dueDateSla = $tanggalMulai->copy()->addDays($hariKerja); + $dueDateSlaPaparan = $tanggalMulai->copy()->addDays($hariKerjaPaparan); // Cek apakah sudah melewati due date - if ($now->greaterThan($dueDateSla)) { + /*if ($now->greaterThan($dueDateSla)) { $item->due_date_sla = null; } else { $item->due_date_sla = $dueDateSla->toDateString(); - } + }*/ + + $item->due_date_sla = $dueDateSla->toDateString(); + $item->paparan = $dueDateSlaPaparan->toDateString(); } else { $item->due_date_sla = null; + $item->paparan = null; } diff --git a/app/Http/Controllers/LaporanController.php b/app/Http/Controllers/LaporanController.php index 1fdbaa5..b457413 100644 --- a/app/Http/Controllers/LaporanController.php +++ b/app/Http/Controllers/LaporanController.php @@ -123,7 +123,7 @@ class LaporanController extends Controller $filteredRecords = $query->count(); // Get the data for the current page - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian','jenisFasilitasKredit', 'documents.inspeksi','penilai'])->get(); + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian','jenisFasilitasKredit', 'documents.inspeksi','penilai','documents.detail'])->get(); // Calculate the page count $pageCount = ceil($totalRecords / $size); diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index e7c8ef4..218ad3e 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 Barryvdh\DomPDF\Facade\Pdf; // https://github.com/barryvdh/laravel-dompdf +use Illuminate\Support\Facades\Storage; use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\Inspeksi; use Modules\Lpj\Models\Penilai; @@ -756,10 +757,10 @@ class PenilaiController extends Controller if (!$allComplete) { - $message = $rap - ? 'Harap Mengisi laporan terlebih dahulu' + $message = $rap + ? 'Harap Mengisi laporan terlebih dahulu' : 'Harap Mengisi laporan terlebih dahulu atau kertas kerja'; - + return response()->json([ 'success' => false, 'message' => $message, @@ -801,6 +802,18 @@ class PenilaiController extends Controller } } + public function uploadTempPhoto(Request $request) + { + if ($request->hasFile('file')) { + $file = $request->file('file'); + $filename = time() . '_' . $file->getClientOriginalName(); + $path = $file->storeAs('temp_photos', $filename, 'public'); + return response()->json(['success' => true, 'id' => $path]); + } + + return response()->json(['success' => false], 400); + } + public function storeResume(Request $request) { try { @@ -919,6 +932,59 @@ class PenilaiController extends Controller } } + public function storeMemoWithPhotos(Request $request) + { + try { + $validatedData = $request->validate([ + 'permohonan_id' => 'required|integer', + 'document_id' => 'required|integer', + 'inspeksi_id' => 'required|integer', + 'memo' => 'required', + ]); + + $memoData = json_decode($validatedData['memo'], true); + + $memo = Penilai::updateOrCreate( + [ + 'permohonan_id' => $validatedData['permohonan_id'], + 'dokument_id' => $validatedData['document_id'], + 'inspeksi_id' => $validatedData['inspeksi_id'], + ], + [ + 'memo' => json_encode($memoData), + ] + ); + + // Simpan foto-foto + if ($request->hasFile('foto_0')) { + $photoUrls = []; + $index = 0; + while ($request->hasFile("foto_$index")) { + $file = $request->file("foto_$index"); + $fileName = time() . '_' . $file->getClientOriginalName(); + $filePath = $file->storeAs('public/memo_photos', $fileName); + $photoUrls[] = Storage::url($filePath); + $index++; + } + + // Tambahkan URL foto ke data memo + $memoData['foto'] = $photoUrls; + $memo->memo = json_encode($memoData); + $memo->save(); + } + + return response()->json([ + 'success' => true, + 'message' => 'Memo dan foto berhasil disimpan', + ]); + } catch (Exception $e) { + return response()->json([ + 'success' => false, + 'message' => 'Terjadi kesalahan: ' . $e->getMessage(), + ], 500); + } + } + public function storeLpjSederhanadanStandard(Request $request) { DB::beginTransaction(); diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index 616f5b9..4655298 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -891,11 +891,13 @@ class PenilaianController extends Controller public function revisiLaporan(Request $request, $id) { - $permohonan = Permohonan::find($id); - $userRole = Auth::user()->roles[0]->name; - - $authorization = Authorization::where('permohonan_id', $permohonan->id) - ->where('jenis', 'paparan')->first(); + if($request->dataHeader=='Paparan'){ + $authorization = Authorization::find($id); + $permohonan = Permohonan::find($authorization->permohonan_id); + } else { + $permohonan = Permohonan::find($id); + $userRole = Auth::user()->roles[0]->name; + } if ($permohonan->status === 'proses-paparan') { if ($authorization) { diff --git a/resources/views/activity/progres_activity/index.blade.php b/resources/views/activity/progres_activity/index.blade.php index 11c5fac..844fce5 100644 --- a/resources/views/activity/progres_activity/index.blade.php +++ b/resources/views/activity/progres_activity/index.blade.php @@ -120,8 +120,8 @@