diff --git a/app/Helpers/Lpj.php b/app/Helpers/Lpj.php index d9bf2fe..a4bed0b 100644 --- a/app/Helpers/Lpj.php +++ b/app/Helpers/Lpj.php @@ -316,3 +316,16 @@ return User::find($userId); } + function generateLpjUniqueCode($randomLength = 6) + { + + $year = date('y'); + $month = str_pad(date('m'), 2, '0', STR_PAD_LEFT); + $day = str_pad(date('d'), 2, '0', STR_PAD_LEFT); + + // Generate random numbers + $randomNumber = str_pad(mt_rand(0, pow(10, $randomLength) - 1), $randomLength, '0', STR_PAD_LEFT); + + // Concatenate components to create the custom code + return $year . $month . $day . $randomNumber; + } diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index 9e28fb9..c21a125 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -7,6 +7,7 @@ use Barryvdh\DomPDF\Facade\Pdf; // https://github.com/barryvdh/laravel-dompdf use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\Inspeksi; use Modules\Lpj\Models\Penilai; +use Modules\Lpj\Models\Laporan; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Auth; use Maatwebsite\Excel\Facades\Excel; @@ -17,6 +18,7 @@ use Modules\Location\Models\City; use Modules\Location\Models\District; use Modules\Location\Models\Village; use Illuminate\Support\Facades\Log; +use App\Helpers\Lpj; class PenilaiController extends Controller { @@ -247,7 +249,7 @@ class PenilaiController extends Controller } - if(!Auth::user()->hasRole('administrator')) { + if (!Auth::user()->hasRole('administrator')) { $query->whereHas('penilaian.userPenilai', function ($q) { $q ->where('role', 'penilai') @@ -597,6 +599,17 @@ class PenilaiController extends Controller $inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); $lpj = Penilai::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); + $laporan = Laporan::firstOrCreate( + [ + 'permohonan_id' => $permohonanId, + 'dokumen_jaminan_id' => $documentId, + ], + [ + 'nomor_laporan' => generateLpjUniqueCode(6), + ] + ); + $nomorLaporan = $laporan->nomor_laporan; + $forminspeksi = null; $lpjData = null; $formFoto = null; @@ -616,20 +629,20 @@ class PenilaiController extends Controller $inputAddress = $forminspeksi['asset']['alamat']['sesuai'] ?? $forminspeksi['asset']['alamat']['tidak sesuai']; -$alamat = [ - 'address' => $inputAddress['address'] ?? null, - 'village_code' => $this->getWilayahName($inputAddress['village_code'] ?? null, 'village'), - 'district_code' => $this->getWilayahName($inputAddress['district_code'] ?? null, 'district'), - 'city_code' => $this->getWilayahName($inputAddress['city_code'] ?? null, 'city'), - 'province_code' => $this->getWilayahName($inputAddress['province_code'] ?? null, 'province') -]; - + $alamat = [ + 'address' => $inputAddress['address'] ?? null, + 'village_code' => $this->getWilayahName($inputAddress['village_code'] ?? null, 'village'), + 'district_code' => $this->getWilayahName($inputAddress['district_code'] ?? null, 'district'), + 'city_code' => $this->getWilayahName($inputAddress['city_code'] ?? null, 'city'), + 'province_code' => $this->getWilayahName($inputAddress['province_code'] ?? null, 'province') + ]; + $laporan = $lpj->type == 'sederhana' ? true : false; $viewLaporan = null; - if($laporan){ - $viewLaporan = 'penilai.components.print-out-sederhana'; - }else{ + if ($laporan) { + $viewLaporan = 'penilai.components.print-out-sederhana'; + } else { $viewLaporan = 'penilai.components.print-out-standard'; } @@ -646,9 +659,10 @@ $alamat = [ 'lpj', 'statusLpj', 'alamat', - 'dataPembanding' + 'dataPembanding', + 'nomorLaporan' )); - }else{ + } else { $pdf = PDF::loadView('lpj::' . $viewLaporan, compact( 'permohonan', 'forminspeksi', @@ -659,7 +673,8 @@ $alamat = [ 'lpj', 'statusLpj', 'alamat', - 'dataPembanding' + 'dataPembanding', + 'nomorLaporan' )); $pdf->setPaper('A4', 'portrait'); @@ -673,31 +688,32 @@ $alamat = [ } - function getWilayahName($code, $type) { + public function getWilayahName($code, $type) + { try { $wilayah = null; - + if (!$code) { return null; } - - switch($type) { + + switch ($type) { case 'province': $wilayah = Province::where('code', $code)->first(); return $wilayah ? $wilayah->name : null; - + case 'city': $wilayah = City::where('code', $code)->first(); return $wilayah ? $wilayah->name : null; - + case 'district': $wilayah = District::where('code', $code)->first(); return $wilayah ? $wilayah->name : null; - + case 'village': $wilayah = Village::where('code', $code)->first(); return $wilayah ? $wilayah->name : null; - + default: return null; } @@ -705,6 +721,6 @@ $alamat = [ return null; } } - + } diff --git a/app/Models/Laporan.php b/app/Models/Laporan.php new file mode 100644 index 0000000..5065294 --- /dev/null +++ b/app/Models/Laporan.php @@ -0,0 +1,36 @@ +belongsTo(JenisLaporan::class); + } + + public function dokument(){ + return $this->belongsTo(DokumenJaminan::class); + } + + public function permohonan(){ + return $this->belongsTo(Permohonan::class); + } + + // protected static function newFactory(): LaporanFactory + // { + // // return LaporanFactory::new(); + // } +} diff --git a/database/migrations/2024_12_27_021237_create_laporan_table.php b/database/migrations/2024_12_27_021237_create_laporan_table.php new file mode 100644 index 0000000..61d8c13 --- /dev/null +++ b/database/migrations/2024_12_27_021237_create_laporan_table.php @@ -0,0 +1,43 @@ +id(); + $table->foreignIdFor(Permohonan::class)->constrained('permohonan')->onDelete('cascade'); + $table->foreignIdFor(DokumenJaminan::class)->constrained('dokumen_jaminan')->onDelete('cascade'); + $table->string('nomor_laporan'); + $table->foreignIdFor(JenisLaporan::class) + ->nullable() + ->constrained('jenis_laporan') + ->onDelete('cascade'); + + + $table->timestamps(); + $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('laporan'); + } +}; diff --git a/resources/views/penilai/components/print-out-sederhana.blade.php b/resources/views/penilai/components/print-out-sederhana.blade.php index e43c172..f1a2240 100644 --- a/resources/views/penilai/components/print-out-sederhana.blade.php +++ b/resources/views/penilai/components/print-out-sederhana.blade.php @@ -78,7 +78,7 @@ } body { - margin-top: 7cm; + margin-top: 3cm; /* Tambahkan margin top sedikit lebih besar dari tinggi header */ margin-bottom: 120px; position: relative; @@ -106,7 +106,13 @@ - + @php + $data = ''; + foreach ($permohonan->debiture->documents as $dokumen) { + $data .= $dokumen->jenisJaminan->name . ', '; + } + $data = rtrim($data, ', '); +@endphp