diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index 0d4c94a..5515aaa 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -353,39 +353,92 @@ class PenilaianController extends Controller { $type = $request->route('type'); - $header = ''; - - switch ($type) { - case 'pelaporan': - $header = 'Pelaporan'; - break; - case 'pembayaran': - $header = 'Pembayaran'; - break; - case 'pembatalan': - $header = 'Pembatalan'; - break; - case 'sla': - $header = 'SLA'; - break; - default: - $header = 'Pelaporan'; - break; - } + $headers = [ + 'pelaporan' => 'Pelaporan', + 'pembayaran' => 'Pembayaran', + 'pembatalan' => 'Pembatalan', + 'sla' => 'SLA', + ]; + + $header = $headers[$type] ?? 'Pelaporan'; return view('lpj::penilaian.otorisator.index', compact('header')); } - public function show($id) + public function show($id, $type) + { + $headers = [ + 'Pelaporan' => 'Pelaporan', + 'Pembayaran' => 'Pembayaran', + 'Pembatalan' => 'Pembatalan', + 'SLA' => 'SLA', + ]; + + $header = $headers[$type] ?? 'Pelaporan'; + $permohonan = Permohonan::find($id); + + return view('lpj::penilaian.otorisator.show', compact('permohonan', 'header')); + } + + public function otorisatorUpdate($id, $context) { $permohonan = Permohonan::find($id); + if (!$permohonan) { + return response()->json([ + 'message' => 'Data permohonan tidak ditemukan.' + ], 404); + } - return view('lpj::penilaian.otorisator.show', compact('permohonan')); + switch (strtolower($context)) { + case 'pembayaran': + + $newStatus = $permohonan->status_bayar === 'sudah_bayar' ? 'belum_bayar' : 'sudah_bayar'; + + $permohonan->update([ + 'status_bayar' => $newStatus + ]); + break; + + case 'pembatalan': + + $permohonan->update([ + 'authorized_status' => 1, + ]); + break; + + case 'pelaporan': + + $permohonan->update([ + 'status' => 'disetujui', + ]); + break; + + case 'sla': + + $permohonan->update([ + 'status' => 'order', + ]); + break; + + default: + + return response()->json([ + 'message' => 'Konteks otorisasi tidak valid.' + ], 400); + } + + + return response()->json([ + 'message' => 'Otorisasi berhasil dilakukan.', + 'data' => $permohonan + ]); } + + public function dataForAuthorization(Request $request, $otorisator) { @@ -394,22 +447,14 @@ class PenilaianController extends Controller } - $status = ''; - - switch ($otorisator) { - case 'Pelaporan': - $status = 'proses paparan'; - break; - case 'Pembayaran': - $status = 'proses'; - break; - case 'Pembatalan': - $status = 'order'; - break; - default: - $status = ''; - break; - } + // Tentukan status berdasarkan otorisator + $status = match ($otorisator) { + 'Pelaporan' => 'proses laporan', + 'Pembayaran' => 'proses', + 'Pembatalan' => 'proses', + 'SLA' => 'proses', + default => '', + }; $query = Permohonan::query(); @@ -432,11 +477,18 @@ class PenilaianController extends Controller if (!empty($otorisator)) { if ($status == 'proses') { $query->whereIn('status_bayar', ['sudah_bayar', 'belum_bayar']); - } else { - $query->whereRaw('LOWER(status) = ?', [strtolower($status)]); } + // else { + // $query->whereRaw('LOWER(status) = ?', [strtolower($status)]); + // } } + // Filter berdasarkan region user yang login + $query->whereHas('region.teams.teamsUsers', function ($q) { + $q->where('user_id', Auth::id()); + }); + + // Sorting berdasarkan sortField dan sortOrder if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { $order = $request->get('sortOrder'); @@ -464,7 +516,8 @@ class PenilaianController extends Controller $filteredRecords = $query->count(); // Ambil data dengan relasi - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'region.teams.teamsUsers'])->get(); + // Hitung jumlah halaman $pageCount = ceil($totalRecords / $size); diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index b4703e9..1aa6421 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -282,7 +282,7 @@ class SurveyorController extends Controller ? json_decode($inspeksi->foto_form, true) : []; - $formatFotojson = $existingData; // Start with existing data + $formatFotojson = $existingData; // Process each photo category foreach ($photoCategories as $category => $fields) { @@ -558,9 +558,26 @@ class SurveyorController extends Controller $pembandingCount = count($request->input('address_pembanding', [])); $fotoPembanding = $request->file('foto_objek_pembanding') ?? []; + $existingData = null; + if ($request->has('permohonan_id') && $request->has('jenis_jaminan_id')) { + $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id')) + ->where('jenis_jaminan_id', $request->input('jenis_jaminan_id')) + ->first(); + + if ($inspeksi) { + $existingData = $inspeksi->data_pembanding ?? []; + } + } + for ($i = 0; $i < $pembandingCount; $i++) { $pembanding = $this->formatSinglePembanding($request, $i); + + $existingFoto = null; + if ($existingData && isset($existingData[$i]['foto_objek'])) { + $existingFoto = $existingData[$i]['foto_objek']; + } + // Penanganan foto pembanding if (isset($fotoPembanding[$i]) && $fotoPembanding[$i]->isValid()) { $pembanding['foto_objek'] = $this->handleupdateOrDeleteFile( @@ -568,6 +585,8 @@ class SurveyorController extends Controller 'pembanding', "pembanding_{$i}" ); + } else { + $pembanding['foto_objek'] = $existingFoto; } $dataPembanding[] = $pembanding; @@ -575,6 +594,36 @@ class SurveyorController extends Controller return $dataPembanding; } + + + private function formatSinglePembanding($request, $index) + { + $fields = [ + 'address', 'village_code', 'district_code', 'city_code', 'province_code', + 'tahun', 'luas_tanah', 'luas_bangunan', 'tahun_bangunan', + 'status_nara_sumber', 'harga', 'harga_diskon', 'diskon', 'total', 'nama_nara_sumber', + 'peruntukan', 'penawaran_transaksi', 'nomor_tlp', + 'kordinat_lat', 'kordinat_lng', 'jenis_aset','foto_objek' + ]; + + $pembanding = []; + foreach ($fields as $field) { + $inputName = "{$field}_pembanding"; + $inputValue = $request->input($inputName); + + // Pastikan input adalah array dan index valid + if (is_array($inputValue) && isset($inputValue[$index])) { + $pembanding[$field] = $inputValue[$index]; + } else { + $pembanding[$field] = null; + } + } + + + return $pembanding; + } + + private function handleupdateOrDeleteFile($file, $type, $prefix) { @@ -597,45 +646,137 @@ class SurveyorController extends Controller } - private function formatSinglePembanding($request, $index) - { - $fields = [ - 'address', 'village_code', 'district_code', 'city_code', 'province_code', - 'tahun', 'luas_tanah', 'luas_bangunan', 'tahun_bangunan', - 'status_nara_sumber', 'harga', 'harga_diskon', 'diskon','total','nama_nara_sumber', - 'peruntukan', 'penawaran_transaksi', 'nomor_tlp', - 'kordinat_lat', 'kordinat_lng', 'jenis_aset', - ]; - - $pembanding = []; - foreach ($fields as $field) { - $inputName = "{$field}_pembanding"; - $pembanding[$field] = $request->input($inputName)[$index] ?? null; - } - - // Inisialisasi foto_objek sebagai null - $pembanding['foto_objek'] = null; - - return $pembanding; - } - private function formatObjekPenilaian($request) { $fields = [ 'address', 'village_code', 'district_code', 'city_code', 'province_code', - 'tahun', 'luas_tanah', 'luas_bangunan', 'tahun_bangunan', + 'luas_tanah', 'luas_tanah_bagunan', 'total', 'diskon', 'harga_diskon', 'status_nara_sumber', 'harga', 'nama_nara_sumber', - 'peruntukan', 'penawaran_transaksi', 'nomor_tlp', 'kordinat_lat', 'kordinat_lng', 'jenis_aset', ]; + + $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id')) + ->where('jenis_jaminan_id', $request->input('jenis_jaminan_id')) + ->first(); + + if ($inspeksi) { + $needsSave = false; + + // Handle foto_form + $fotoForm = json_decode($inspeksi->foto_form, true) ?: []; + if (!isset($fotoForm['object_jaminan'])) { + $fotoForm['object_jaminan'] = [['foto_objek' => null]]; + $needsSave = true; + } + + // Handle data_form + $dataForm = json_decode($inspeksi->data_form, true) ?: []; + + // Inisialisasi struktur data jika belum ada + if(!isset($dataForm['bangunan'])) { + $dataForm['bangunan'] = []; + $needsSave = true; + } + + if(!isset($dataForm['tanah'])) { + $dataForm['tanah'] = []; + $needsSave = true; + } + + if (!isset($dataForm['asset'])) { + $dataForm['asset'] = []; + $needsSave = true; + } + + // Update data dengan mempertahankan struktur sesuai/tidak sesuai + foreach ($fields as $field) { + if ($request->filled($field)) { + $newValue = $request->input($field); + + // Fields untuk tanah + if (in_array($field, ['luas_tanah'])) { + $cekLuas = $dataForm['tanah']['luas_tanah'] == 'sesuai' ? 'sesuai' : 'tidak sesuai'; + $dataForm['tanah'][$field][$cekLuas] = $newValue; + } + // Fields untuk bangunan + else if (in_array($field, ['luas_tanah_bagunan'])) { - $objekPenilaian = array_reduce($fields, function ($carry, $field) use ($request) { - $carry[$field] = $request->input($field); - return $carry; - }, ['foto_objek' => null]); + $cekBanguan = $dataForm['bangunan']['luas_tanah_bagunan'] == 'sesuai' ? 'sesuai' : 'tidak sesuai'; + $dataForm['bangunan'][$field][$cekBanguan] = $newValue; + } + // Fields untuk alamat dalam asset + else if (in_array($field, ['address', 'village_code', 'district_code', 'city_code', 'province_code'])) { + if (!isset($dataForm['asset']['alamat'])) { + $dataForm['asset']['alamat'] = []; + } + + $alamatStatus = $dataForm['asset']['alamat'] == 'sesuai' ? 'sesuai' : 'tidak sesuai'; + if (!isset($dataForm['asset']['alamat'][$alamatStatus])) { + $dataForm['asset']['alamat'][$alamatStatus] = []; + } + + $dataForm['asset']['alamat'][$alamatStatus][$field] = $newValue; + } + // Jenis asset dalam asset + else if ($field === 'jenis_asset') { + $assetStatus = $request->input('asset_status', 'sesuai'); + $dataForm['asset']['jenis_asset'] = [ + $assetStatus => $newValue + ]; + } + // Fields lainnya dalam asset + else { + $dataForm['asset'][$field] = $newValue; + } + + $needsSave = true; + } + } + + if ($needsSave) { + $inspeksi->foto_form = json_encode($fotoForm); + $inspeksi->data_form = json_encode($dataForm); + $inspeksi->save(); + } + + $existingFoto = $fotoForm['object_jaminan'][0]['foto_objek'] ?? null; + + // Gabungkan data dari tanah, bangunan, dan asset + $objekPenilaian = array_merge( + ['foto_objek' => $existingFoto], + $dataForm['tanah'] ?? [], + $dataForm['bangunan'] ?? [], + array_reduce($fields, function ($carry, $field) use ($request, $dataForm) { + if (isset($dataForm['asset'][$field])) { + if (is_array($dataForm['asset'][$field])) { + if (isset($dataForm['asset'][$field]['sesuai'])) { + $carry[$field] = $dataForm['asset'][$field]['sesuai']; + } elseif (isset($dataForm['asset'][$field]['tidak sesuai'])) { + $carry[$field] = $dataForm['asset'][$field]['tidak sesuai']; + } + } else { + $carry[$field] = $dataForm['asset'][$field]; + } + } else { + $carry[$field] = $request->input($field); + } + return $carry; + }, []) + ); + + } else { + // Inisialisasi data baru + $objekPenilaian = array_reduce($fields, function ($carry, $field) use ($request) { + $carry[$field] = $request->input($field); + return $carry; + }, ['foto_objek' => null]); + } + return $objekPenilaian; } + + private function saveInspeksi($formattedData) { @@ -668,13 +809,36 @@ class SurveyorController extends Controller $objekPenilaian = $this->formatObjekPenilaian($request); if ($request->hasFile('foto_objek')) { - $objekPenilaian['foto_objek'] = $this->handleupdateOrDeleteFile( + $newFoto = $this->handleupdateOrDeleteFile( $request->file('foto_objek'), $request['type'] = 'pembanding', 'objek_penilaian' ); + + // Update foto_form + $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id')) + ->where('jenis_jaminan_id', $request->input('jenis_jaminan_id')) + ->first(); + + if ($inspeksi) { + $fotoForm = json_decode($inspeksi->foto_form, true) ?: []; + if (!isset($fotoForm['object_jaminan'])) { + $fotoForm['object_jaminan'] = []; + } + if (empty($fotoForm['object_jaminan'])) { + $fotoForm['object_jaminan'][] = ['foto_objek' => $newFoto]; + } else { + $fotoForm['object_jaminan'][0]['foto_objek'] = $newFoto; + } + + $inspeksi->foto_form = json_encode($fotoForm); + $inspeksi->save(); + } + + $objekPenilaian['foto_objek'] = $newFoto; } + $formattedData = [ 'permohonan_id' => $request->input('permohonan_id'), 'type' => $request->input('type'), @@ -690,7 +854,7 @@ class SurveyorController extends Controller return response()->json([ 'success' => true, 'message' => 'Data berhasil disimpan', - 'data' => $objekPenilaian + 'data' => $formattedData ], 200); } catch (\Exception $e) { @@ -739,7 +903,7 @@ class SurveyorController extends Controller // Jika alamat tidak sesuai, override dengan kode dari alamat - $cekAlamat = $forminspeksi['asset']['alamat']['tidak sesuai'] ?? null; + $cekAlamat = $forminspeksi['asset']['alamat']['tidak sesuai'] ?? null; if ($cekAlamat) { $provinceCode = $cekAlamat['province_code'] ?? $provinceCode; diff --git a/app/Http/Requests/FormSurveyorRequest.php b/app/Http/Requests/FormSurveyorRequest.php index f56063f..02c3d8a 100644 --- a/app/Http/Requests/FormSurveyorRequest.php +++ b/app/Http/Requests/FormSurveyorRequest.php @@ -524,26 +524,26 @@ class FormSurveyorRequest extends FormRequest 'permohonan_id' => 'required', 'type' => 'required', 'debitur_perwakilan' => 'required|array', - 'jenis_asset_name' => 'nullable', + 'jenis_asset_name' => 'nullable|', 'jenis_asset' => 'required', - 'jenis_asset_tidak_sesuai' => 'nullable', + 'jenis_asset_tidak_sesuai' => 'nullable|string', 'alamat_sesuai' => 'required', - 'alamat_tidak_sesuai' => 'nullable', + 'alamat_tidak_sesuai' => 'nullable|string', 'hub_cadeb' => 'required', - 'hub_cadeb_sesuai' => 'nullable', - 'hub_cadeb_tidak_sesuai' => 'nullable', + 'hub_cadeb_sesuai' => 'nullable|string', + 'hub_cadeb_tidak_sesuai' => 'nullable|string', 'hub_cadeb_penghuni' => 'required', - 'hub_cadeb_penghuni_sesuai' => 'nullable', - 'hub_penghuni_tidak_sesuai' => 'nullable', + 'hub_cadeb_penghuni_sesuai' => 'nullable|string', + 'hub_penghuni_tidak_sesuai' => 'nullable|string', - 'address' => 'nullable', - 'village_code' => 'nullable', - 'district_code' => 'nullable', - 'city_code' => 'nullable', - 'province_code' => 'nullable', - 'kordinat_lng' => 'nullable', - 'kordinat_lat' => 'nullable', + 'address' => 'nullable|string', + 'village_code' => 'nullable|string', + 'district_code' => 'nullable|string', + 'city_code' => 'nullable|string', + 'province_code' => 'nullable|string', + 'kordinat_lng' => 'nullable|string', + 'kordinat_lat' => 'nullable|string', ]; } diff --git a/database/seeders/KJPPSeeder.php b/database/seeders/KJPPSeeder.php index 7a942d2..c2d9207 100644 --- a/database/seeders/KJPPSeeder.php +++ b/database/seeders/KJPPSeeder.php @@ -4,14 +4,271 @@ namespace Modules\Lpj\Database\Seeders; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; +use Maatwebsite\Excel\Facades\Excel; +use Illuminate\Support\Str; +use Modules\Lpj\Models\KJPP; +use Modules\Lpj\Models\JenisJaminan; +use Modules\Lpj\Models\IjinUsaha; +use Modules\Location\Models\City; +use Modules\Location\Models\District; +use Modules\Location\Models\Village; class KJPPSeeder extends Seeder { /** * Run the database seeds. */ + public function run(): void { - DB::unprepared(file_get_contents(__DIR__ . '/kjpp.sql')); + $filePath = __DIR__ . '/LISTsatsa.xlsx'; + // DB::unprepared(file_get_contents(__DIR__ . '/kjpp.sql')); + + if (!file_exists($filePath)) { + $this->command->error('File excel tidak ditemukan di: ' . $filePath); + return; + } + + $this->command->info('Membaca file Excel...'); + + try { + // Baca excel dan tampilkan raw data + $collection = Excel::toCollection(null, $filePath, null, function($reader) { + $reader->setActiveSheetIndex(1); + })->first(); + + // Debug: Tampilkan jumlah baris + $this->command->info('Total baris: ' . $collection->count()); + + // Debug: Tampilkan 3 baris pertama (header) + $this->command->info('Header data:'); + foreach($collection->take(3) as $index => $row) { + $this->command->info("Baris $index: " . print_r($row->toArray(), true)); + } + + // Skip 3 baris header + $data = $collection->skip(3); + + // Debug: Tampilkan jumlah data setelah skip header + $this->command->info('Total data setelah skip header: ' . $data->count()); + + // Proses setiap baris + foreach ($data as $index => $row) { + $this->command->info("Memproses baris ke-$index:"); + + // Debug: Tampilkan data mentah + $this->command->info('Raw data: ' . print_r($row->toArray(), true)); + + // Skip jika baris kosong + if (empty($row[2])) { + $this->command->warn("Baris $index dilewati karena nama KJPP kosong"); + continue; + } + + + $locationData = $this->checkKota($row[5]); + + $jenisUsaha = $this->checkJenisUsaha($row[17]); + $jenisAsset = $this->checkJenisAsset($row[18]); + + try { + $dataToInsert = [ + 'code' => $this->generateKJPPCode(), + 'name' => $row[2], + 'jenis_kantor' => "Kantor " . $row[3], + 'nomor_ijin_usaha' => $row[4], + 'province_code' => $locationData['province'], + 'city_code' => $locationData['city'], + 'district_code' => $locationData['district'], + 'village_code' => $locationData['village'], + 'address' => $row[6], + 'postal_code' => $locationData['postal_code'], + 'nomor_telepon_kantor' => $row[7], + 'email_kantor' => $row[8], + 'detail_email_kantor' => json_encode($row[8]), + 'nama_pimpinan' => $row[9], + 'nomor_hp_pimpinan' => $row[10], + 'nama_pic_reviewer' => json_encode($row[11]), + 'detail_nama_pic_reviewer' => json_encode($row[11]), + 'nomor_hp_pic_reviewer' => json_encode($row[12]), + 'detail_nomor_hp_pic_reviewer' => json_encode($row[12]), + 'nama_pic_admin' => $row[13], + 'detail_nama_pic_admin' => json_encode($row[13]), + 'nomor_hp_pic_admin' => json_encode($row[14]), + 'detail_nomor_hp_pic_admin' => json_encode($row[14]), + 'nama_pic_marketing' => json_encode($row[15]), + 'detail_nama_pic_marketing' => json_encode($row[15]), + 'nomor_hp_pic_marketing' => json_encode($row[16]), + 'detail_nomor_hp_pic_marketing' => json_encode($row[16]), + 'ijin_usaha_id' => json_encode($jenisUsaha), + 'jenis_aset_id' => json_encode($jenisAsset), + 'attachment' => null, + ]; + + + // Debug: Tampilkan data yang akan diinsert + $this->command->info('Data yang akan disimpan: ' . print_r($dataToInsert, true)); + + // Simpan ke database + KJPP::create($dataToInsert); + + $this->command->info("Berhasil menyimpan data baris $index"); + + } catch (\Exception $e) { + $this->command->error("Error pada baris $index: " . $e->getMessage()); + // Lanjut ke baris berikutnya + continue; + } + } + + $this->command->info('Selesai import data KJPP!'); + + } catch (\Exception $e) { + $this->command->error('Error utama: ' . $e->getMessage()); + $this->command->error('Stack trace: ' . $e->getTraceAsString()); + } + } + + private function generateKJPPCode() +{ + do { + $code = 'K' . str_pad(rand(1, 99999), 5, '0', STR_PAD_LEFT); + } while (KJPP::where('code', $code)->exists()); + + return $code; +} + +public function checkKota($data) +{ + try { + $city = null; + if ($data) { + // Bersihkan data dan ubah ke uppercase + $cleanData = trim(strtoupper($data)); + + $possibleNames = [ + 'KAB. ' . $cleanData, + 'KOTA ' . $cleanData, + 'KAB. ADM. ' . $cleanData, + 'KOTA ADM. ' . $cleanData, + $cleanData + ]; + + $city = City::whereIn(DB::raw('UPPER(name)'), $possibleNames)->first(); + + if ($city) { + // Cari district berdasarkan city_code + $district = District::where('city_code', $city->code)->first(); + if (!$district) { + return null; + } + + $village = Village::where('district_code', $district->code)->first(); + if (!$village) { + + return null; + } + return [ + 'province' => $city->province_code, + 'city' => $city->code, + 'district' => $district->code, + 'village' => $village->code, + 'postal_code' => $village->postal_code + ]; + } else{ + return null; + } + } + + return null; + + } catch (\Exception $e) { + $this->command->error(" ❌ Error: " . $e->getMessage()); + return null; } +} + +public function checkJenisAsset($data) +{ + try { + if (!$data) return []; + + // Bersihkan dan ubah ke lowercase + $cleanData = trim(strtolower($data)); + + // Pisahkan berdasarkan koma + $assets = array_map('trim', explode(',', $cleanData)); + + // Daftar asset yang valid di database + $validAssets = JenisJaminan::pluck('code')->toArray(); + $assetIds = []; + + foreach ($assets as $asset) { + // Cari di database dengan lowercase + $jenisAsset = JenisJaminan::whereRaw('LOWER(name) = ?', [$asset])->first(); + + if ($jenisAsset && in_array($jenisAsset->code, $validAssets)) { + $assetIds[] = $jenisAsset->code; + $this->command->info(" ✅ Jenis Asset ditemukan: " . $jenisAsset->name); + } + // Hilangkan warning untuk yang tidak ditemukan + } + + // Menghilangkan duplikat jika ada + $assetIds = array_unique($assetIds); + + // Sort array untuk konsistensi + sort($assetIds); + + return $assetIds; + + } catch (\Exception $e) { + $this->command->error(" ❌ Error pada checkJenisAsset: " . $e->getMessage()); + return []; + } +} + + +public function checkJenisUsaha($data) +{ + try { + if (!$data) return []; + + // Bersihkan dan ubah ke lowercase + $cleanData = trim(strtolower($data)); + + // Pisahkan berdasarkan koma jika ada + $usahas = array_map('trim', explode(',', $cleanData)); + + // Daftar usaha yang valid di database + $validUsaha = IjinUsaha::pluck('code')->toArray(); + $usahaIds = []; + + foreach ($usahas as $usaha) { + // Cari di database dengan lowercase + $jenisUsaha = IjinUsaha::whereRaw('LOWER(name) = ?', [$usaha])->first(); + + if ($jenisUsaha && in_array($jenisUsaha->code, $validUsaha)) { + $usahaIds[] = $jenisUsaha->code; + $this->command->info(" ✅ Jenis Usaha ditemukan: " . $jenisUsaha->name); + } + // Hilangkan warning untuk yang tidak ditemukan + } + + // Menghilangkan duplikat jika ada + $usahaIds = array_unique($usahaIds); + + // Sort array untuk konsistensi + sort($usahaIds); + + return $usahaIds; + + } catch (\Exception $e) { + return []; + } +} + + + + } diff --git a/resources/views/penilaian/otorisator/index.blade.php b/resources/views/penilaian/otorisator/index.blade.php index 1743f8e..56a8c90 100644 --- a/resources/views/penilaian/otorisator/index.blade.php +++ b/resources/views/penilaian/otorisator/index.blade.php @@ -1,16 +1,18 @@ @extends('layouts.main') @section('breadcrumbs') - {{ Breadcrumbs::render('otorisator.'. strtolower($header)) }} + {{ Breadcrumbs::render('otorisator.' . strtolower($header)) }} @endsection @section('content')
-
+

- Daftar {{$header}} + Daftar {{ $header }}

@@ -27,46 +29,56 @@
- +
- - - - - - - - + + + + + + + + - - + @if ($header == 'Pembayaran') + + @endif + + +
- - - Nomor Registrasi - - - Tanggal Permohonan - - - User Pemohon - - - Cabang Pemohon - - - Debitur - - - Tujuan Penilaian - -
+ + + Nomor Registrasi + + + Tanggal Permohonan + + + User Pemohon + + + Cabang Pemohon + + + Debitur + + + Tujuan Penilaian + + Action
+ Status Bayar + + Action
-