diff --git a/app/Http/Controllers/MemoController.php b/app/Http/Controllers/MemoController.php index 41efdc0..b38c09e 100644 --- a/app/Http/Controllers/MemoController.php +++ b/app/Http/Controllers/MemoController.php @@ -2,12 +2,13 @@ namespace Modules\Lpj\Http\Controllers; -use App\Http\Controllers\Controller; +use Exception; +use Modules\Lpj\Models\Noc; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Log; use Modules\Lpj\Models\Permohonan; -use Exception; +use Illuminate\Support\Facades\Log; +use App\Http\Controllers\Controller; class MemoController extends Controller { @@ -34,33 +35,49 @@ class MemoController extends Controller { Log::info('MemoController: Mengakses halaman create memo penyelesaian'); - // Tambahkan validasi di awal method - $selectedIds = $request->get('selected_ids', []); - $selectedIds = explode(',', $selectedIds); - $permohonanList = []; - if (!empty($selectedIds)) { + // Pastikan $selectedIds selalu berupa array + if (is_string($selectedIds)) { + $selectedIds = explode(',', $selectedIds); + } + + // Filter array untuk menghilangkan nilai kosong + $selectedIds = array_filter($selectedIds, function($id) { + return !empty(trim($id)); + }); + + $permohonanList = []; + $totalBiayaPJ = 0; + + if (!empty($selectedIds) && count($selectedIds) > 0) { try { - $permohonanList = Permohonan::with([ - 'user', - 'debiture', - 'branch', - 'tujuanPenilaian', - 'penilaian', - 'jenisFasilitasKredit', - 'documents.inspeksi', - 'penilai', - 'documents.detail', - 'noc' - ])->whereIn('id', $selectedIds)->get(); + $permohonanList = Permohonan::with([ + 'user', + 'debiture', + 'branch', + 'tujuanPenilaian', + 'penilaian', + 'jenisFasilitasKredit', + 'documents.inspeksi', + 'penilai', + 'documents.detail', + 'noc' + ])->whereIn('id', $selectedIds)->get(); + + // Hitung total biaya PJ dari nominal_bayar di tabel NOC + $totalBiayaPJ = Noc::whereIn('permohonan_id', $selectedIds) + ->sum('nominal_bayar'); + + Log::info('MemoController: Total Biaya PJ dihitung: ' . $totalBiayaPJ); + } catch (Exception $e) { Log::error('MemoController: Error saat mengambil data permohonan - ' . $e->getMessage()); return redirect()->back()->with('error', 'Terjadi kesalahan saat memuat data'); } } - return view('lpj::memo.create', compact('permohonanList')); + return view('lpj::memo.create', compact('permohonanList', 'totalBiayaPJ')); } /** @@ -80,17 +97,30 @@ class MemoController extends Controller $request->validate([ 'permohonan_ids' => 'required|array', 'permohonan_ids.*' => 'exists:permohonan,id', - 'memo_title' => 'required|string|max:255', - 'memo_content' => 'required|string', + 'memo_number' => 'required|string|max:255', + 'payment_date' => 'required|date', 'memo_date' => 'required|date' ]); $permohonanIds = $request->permohonan_ids; - $memoTitle = $request->memo_title; - $memoContent = $request->memo_content; + $memoNumber = $request->memo_number; + $paymentDate = $request->payment_date; $memoDate = $request->memo_date; - dd($request->all()); + // Update status permohonan yang dipilih + foreach ($permohonanIds as $permohonanId) { + $permohonan = Permohonan::find($permohonanId); + if ($permohonan) { + $permohonan->status = 'memo-penyelesaian'; + $permohonan->memo_penyelesaian_number = $memoNumber; + $permohonan->memo_penyelesaian_date = $memoDate; + $permohonan->memo_penyelesaian_payment_date = $paymentDate; + $permohonan->memo_penyelesaian_created_at = now(); + $permohonan->save(); + + Log::info('MemoController: Berhasil update permohonan ID: ' . $permohonanId); + } + } DB::commit(); Log::info('MemoController: Berhasil menyimpan memo penyelesaian untuk ' . count($permohonanIds) . ' permohonan'); @@ -235,4 +265,53 @@ class MemoController extends Controller 'data' => $data, ]); } + + /** + * Mengambil total biaya PJ berdasarkan permohonan yang dipilih + * + * @param Request $request + * @return \Illuminate\Http\JsonResponse + */ + public function getTotalBiayaPJ(Request $request) + { + Log::info('MemoController: Mengambil total biaya PJ'); + + try { + $permohonanIds = $request->get('permohonan_ids', []); + + // Pastikan $permohonanIds selalu berupa array + if (is_string($permohonanIds)) { + $permohonanIds = explode(',', $permohonanIds); + } + + // Filter array untuk menghilangkan nilai kosong + $permohonanIds = array_filter($permohonanIds, function($id) { + return !empty(trim($id)); + }); + + $totalBiayaPJ = 0; + + if (!empty($permohonanIds) && count($permohonanIds) > 0) { + // Hitung total biaya PJ dari nominal_bayar di tabel NOC + $totalBiayaPJ = \Modules\Lpj\Models\Noc::whereIn('permohonan_id', $permohonanIds) + ->sum('nominal_bayar'); + } + + Log::info('MemoController: Total Biaya PJ berhasil dihitung: ' . $totalBiayaPJ); + + return response()->json([ + 'success' => true, + 'total_biaya_pj' => $totalBiayaPJ, + 'total_biaya_pj_formatted' => 'Rp ' . number_format($totalBiayaPJ, 0, ',', '.') + ]); + + } catch (Exception $e) { + Log::error('MemoController: Error saat menghitung total biaya PJ - ' . $e->getMessage()); + + return response()->json([ + 'success' => false, + 'message' => 'Terjadi kesalahan saat menghitung total biaya PJ' + ], 500); + } + } } diff --git a/resources/views/memo/create.blade.php b/resources/views/memo/create.blade.php index a471ea7..9e94178 100644 --- a/resources/views/memo/create.blade.php +++ b/resources/views/memo/create.blade.php @@ -1,5 +1,10 @@ @extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('memo.create') }} +@endsection + @section('content')