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 `