diff --git a/app/Helpers/Lpj.php b/app/Helpers/Lpj.php index 387f1b2..a20cd34 100644 --- a/app/Helpers/Lpj.php +++ b/app/Helpers/Lpj.php @@ -15,6 +15,8 @@ use Modules\Lpj\Models\Penilaian; use Modules\Lpj\Models\TeamsUsers; use Modules\Usermanagement\Models\User; + use Illuminate\Support\Facades\File; + use Illuminate\Support\Facades\Storage; function formatTanggalIndonesia($date, $time = false) { @@ -557,3 +559,37 @@ function parsePembandingMigration($keterangan) { return implode("\n", $cleaned); } +/** + * get full path to internal storage file or external storage file + * + * @param string $path + * @return string + */ + + function getFilePath($path) + { + // define base path external storage (use .env) example: 'F:\path\to\storage' in windows + $externalBase = env('EXTERNAL_STORAGE_BASE_PATH', 'F:LPJ/lpj/LPJ Gambar/001/'); + + $segments = explode('/', $path); + + if(strtoupper($segments[0]) === 'SURVEYOR'){ + $year = $segments[1]; + $month = ucfirst(strtolower($segments[2])); + $date = $segments[3]; + $code = $segments[4]; + $file = $segments[5] ?? ''; + + $extenalFullpath = $externalBase . $year . '/' . $month . '/' . $date . '/' . $code . '/' . $file; + + if(File::exists($extenalFullpath)){ + return $extenalFullpath; + } + } + + // if not found in external storage, try to find in internal storage + if (Storage::exists($path)) { + return Storage::url('app/' . $path); + } + return $path; + } diff --git a/app/Http/Controllers/NocController.php b/app/Http/Controllers/NocController.php index 1f24819..8f8e4e0 100644 --- a/app/Http/Controllers/NocController.php +++ b/app/Http/Controllers/NocController.php @@ -20,7 +20,7 @@ */ public function index() { - return redirect()->route('noc.pembayaran'); + return redirect()->route('noc.pembayaran.index'); } public function pembayaran() @@ -80,7 +80,7 @@ } $noc->save(); - // Update the status of the related permohonan to 'spk' + /* Update the status of the related permohonan to 'spk' $permohonan = Permohonan::find(request()->get('permohonan_id')); if ($permohonan) { $permohonan->status_bayar = request()->get('status_pembayar'); @@ -99,7 +99,7 @@ ]); } // andy add, update status penawaran.status='spk' - } + }*/ return redirect() ->route('noc.index')->with('success', 'NOC berhasil disimpan.'); @@ -175,9 +175,7 @@ /** * Display the specified resource. */ - public function show(Request $request) { - $noc = Noc::find($request->get('id')); - + public function show(Noc $noc) { return view('lpj::noc.memo', compact('noc')); } diff --git a/app/Services/LaporanUserService.php b/app/Services/LaporanUserService.php index 9890aaa..d3b6d2c 100644 --- a/app/Services/LaporanUserService.php +++ b/app/Services/LaporanUserService.php @@ -1,8 +1,10 @@ where('status', 'done'); - + $query = User::query(); // Apply search filter if provided if ($request->has('search') && !empty($request->get('search'))) { $search = json_decode($request->get('search')); - - if (isset($search->start_date) || isset($search->end_date)) { - $query->whereBetween('tanggal_permohonan', [ - $search->start_date ?? '1900-01-01', - $search->end_date ?? now()->toDateString() - ]); - } - - // Filter by branch if provided - if (isset($search->user_id) && !empty($search->user_id)) { - $query->where('user_id', $search->user_id); - } - if (isset($search->search)) { $query->where(function ($q) use ($search) { - $q->where('nomor_registrasi', 'LIKE', '%' . $search->search . '%'); - $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search->search . '%'); - $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search->search . '%'); - $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search->search . '%'); - $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search->search . '%'); - $q->orWhereRelation('jenisFasilitasKredit', 'name', 'LIKE', '%' . $search->search . '%'); - $q->orWhereRelation('jenisPenilaian', 'name', 'LIKE', '%' . $search->search . '%'); - $q->orWhere('status', 'LIKE', '%' . $search->search . '%'); + $q->whereRaw('LOWER(name) LIKE ?', ['%' . strtolower($search) . '%']); + $q->where('nik', 'LIKE', '%' . $search->search . '%'); }); } } @@ -82,28 +63,16 @@ class LaporanUserService $filteredRecords = $query->count(); // Get the data for the current page - $data = $query->with(['debiture.branch'])->get(); + $data = $query->with(['branch', 'roles'])->get(); - $data = $data->map(function ($permohonan) { - - $npw = 0; - - - if (isset($permohonan->penilai->lpj)) { - $lpj = json_decode($permohonan->penilai->lpj, true); - $npw = str_replace('.', '', $lpj['total_nilai_pasar_wajar'] ?? 0); - } + $data = $data->map(function ($user) { return [ - 'id' => $permohonan->id, - 'nomor_registrasi' => $permohonan->nomor_registrasi, - 'branch' => $permohonan->debiture->branch?->name, - 'name' => $permohonan->debiture?->name, - 'pemohon' => $permohonan->creator?->name, - 'tanggal_permohonan' => $permohonan->tanggal_permohonan, - 'nama_penilai' => $permohonan->penilaian?->_user_penilai?->userPenilaiTeam?->name, - 'tanggal_laporan' => $permohonan->approval_dd_at ?? $permohonan->approval_eo_at ?? '', - 'nilai_pasar_wajar' => formatRupiah($npw, 2) + 'id' => $user->id, + 'nik' => $user->nik, + 'name' => $user->name, + 'level' => $user->roles->pluck('name')->implode(', '), + 'approval_limit' => 0, ]; }); diff --git a/resources/views/activity/index.blade.php b/resources/views/activity/index.blade.php index 571b58b..9b83bc5 100644 --- a/resources/views/activity/index.blade.php +++ b/resources/views/activity/index.blade.php @@ -266,32 +266,62 @@ const status = data.status; // Anggap status berada di dalam objek data const dokumenjaminan = data.dokumenjaminan || []; - return ` + return `
- + ${ ['survey', 'done', 'proses-laporan', 'laporan', 'paparan'].includes(status) ? dokumenjaminan.map(dokumen => { return ` - - - - `; + + + + `; }).join('') : '' }
`; - }, -}, + }, + }, } }; + + + let dataTable = new KTDataTable(element, dataTableOptions); + function highlightFreezeRows() { + const table = document.querySelector('#permohonan-table table[data-datatable-table="true"]'); + if (!table) return; + + const rows = table.querySelectorAll('tbody tr'); + + rows.forEach(row => { + const statusCell = row.cells[7]; + if (!statusCell) return; + + const statusText = statusCell.textContent.trim().toLowerCase(); + + if (statusText === 'freeze') { + row.classList.add('bg-red-400', 'text-white'); + } else { + row.classList.remove('bg-red-400', 'text-white'); + } + }); + } + + // Polling setiap 1 detik untuk sementara + setInterval(() => { + highlightFreezeRows(); + }, 500); + + + searchInput.addEventListener('input', function() { const searchValue = this.value.trim(); dataTable.search(searchValue, true); diff --git a/resources/views/laporan-user/index.blade.php b/resources/views/laporan-user/index.blade.php index dae9788..512bbfd 100644 --- a/resources/views/laporan-user/index.blade.php +++ b/resources/views/laporan-user/index.blade.php @@ -6,63 +6,27 @@ @section('content')
- -
-
-

Laporan User Penilai

-
-
- -
- - -
- - -
-
- - -
-
- - -
-
- - -
-
- - -
- - - - Export to Excel - -
-
-
+

- Laporan User Pemohon + Laporan User

+
+
+ +
+ + + Export to Excel + +
+
@@ -73,41 +37,20 @@ - - Nomor Registrasi + + NIK - - Cabang + + Nama User - - Nama Debitur + + Level Group - - Pemohon - - - - - - Tgl Terima - - - - Penilai - - - - - Tgl Laporan - - - - - - Nilai Pasar Wajar + + Approval Limit @@ -155,40 +98,21 @@ return checkbox.outerHTML.trim(); }, }, - nomor_registrasi: { + nik: { title: 'Nomor Registrasi', - }, - branch: { - title: 'Cabang', }, name: { - title: 'Nama Debitur', + title: 'Nama', }, - pemohon: { - title: 'Pemohon', + level: { + title: 'level', }, - tanggal_permohonan: { - title: 'Tanggal Permohonan', + approval_limit: { + title: 'Approval Limit', render: (item, data) => { return data.tanggal_permohonan ? window.formatTanggalIndonesia(data.tanggal_permohonan) : '-'; }, }, - nama_penilai: { - title: 'Nama Penilai', - }, - - tanggal_laporan: { - title: 'Tanggal Dokumen Diterima', - render: (item, data) => { - return data.tanggal_laporan ? window.formatTanggalIndonesia(data.tanggal_laporan) : '-'; - }, - }, - nilai_pasar_wajar: { - title: 'Nilai Pasar Wajar', - render: (item, data) => { - return data.nilai_pasar_wajar ?? '-'; - }, - } } }; @@ -209,7 +133,6 @@ if (startDate) { filters.start_date = startDate; } - if (endDate) { filters.end_date = endDate; } @@ -219,7 +142,6 @@ } - dataTable.search(filters); } diff --git a/resources/views/laporan/index.blade.php b/resources/views/laporan/index.blade.php index 500e994..127c154 100644 --- a/resources/views/laporan/index.blade.php +++ b/resources/views/laporan/index.blade.php @@ -6,10 +6,10 @@ @section('content') -
-
+
-
+

Laporan

@@ -28,7 +28,7 @@
- @@ -74,13 +74,13 @@