From 142257d18d8627e32ccd79081ba1f1542c11ff85 Mon Sep 17 00:00:00 2001 From: majid Date: Mon, 21 Jul 2025 10:13:47 +0700 Subject: [PATCH] feat(laporan-user): refactor user report to display user data instead of permohonan - Change data source from Permohonan to User model - Simplify search functionality to only search by name and NIK - Update table columns to show user information (NIK, name, roles) - Remove date range filters and complex search conditions - Add helper function getFilePath to handle storage paths --- app/Helpers/Lpj.php | 36 +++++ app/Services/LaporanUserService.php | 55 ++------ resources/views/laporan-user/index.blade.php | 136 ++++--------------- 3 files changed, 77 insertions(+), 150 deletions(-) diff --git a/app/Helpers/Lpj.php b/app/Helpers/Lpj.php index 1f6a711..27d1ec4 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) { @@ -542,3 +544,37 @@ return $notifikasi; } +/** + * 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/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/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); }