middleware('auth'); } public function kelulusan(Request $request) { $auth_user = Auth::user(); $api_url = config('api.url'); $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); $kelulusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/ListOperasi/')->json(); $arraykelulusan = []; foreach ($kelulusan as $index => $lulus) { foreach ($lulus['kelulusanall'] as $index => $kel) { array_push($arraykelulusan, ["cawangan" => $lulus['cawangan'], "cawangankod" => $lulus['cawangankod'], "namateller" => $kel['teller'], 'siri' => $kel['siri'], "norujukan" => $kel['norujukan'], 'pinjaman' => $kel['jumpinj'], 'komen' => $kel['komen'], 'nilaimarhun' => ($kel['nilaimarhun'] ?? '-'), 'berat' => ($kel['berat'] ?? '-'), 'margin' => ($kel['margin'] ?? '-'), 'status' => ($kel['status'] ?? '-'), 'pelulus' => $kel['pelulus']]); } foreach ($lulus['kelulusanMohonid'] as $index => $mohon) { array_push($arraykelulusan, ["mohonid" => true, "ansuran" => $mohon['ansuran'], "cawangan" => $lulus['cawangan'], "cawangankod" => $lulus['cawangankod'], "namateller" => $mohon['teller'], 'recno' => $mohon['recno'], "norujukan" => $mohon['norujukan'], 'pinjaman' => $mohon['pinjaman'], 'komen' => $mohon['katalaluan'], 'nilaimarhun' => ($mohon['nilaimarhun'] ?? '-'), 'berat' => ($mohon['berat'] ?? '-'), 'margin' => ($mohon['margin'] ?? '-'), 'status' => ($mohon['mohon'] ?? '-')]); } } return view('operasi.kelulusan', compact('cawangan_info', 'api_url', 'arraykelulusan')); } public function getkelulusan(Request $request) { $auth_user = Auth::user(); $api_url = config('api.url'); $norujukan = $request->norujukan; $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); $kelulusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/SenaraiDahLulus/' . $auth_user['cawangan'] . '/' . $norujukan)->json(); if (sizeof($kelulusan) > 0) { $kelulusan = $kelulusan[0]['masalulus']; } else { $kelulusan = ''; } return response($kelulusan); } public function updatekelulusan(Request $request) { $auth_user = Auth::user(); $api_url = config('api.url'); $norujukan = $request->norujukan; if ($request->pembatalan == null) { if (!$request->taglulus) { $updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusanKomen/' . $request->kodcaw . '/' . $norujukan, [ "komen" => $request->komenkelulusan, 'siri' => $request->siri ])->json(); $updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusan/' . $request->kodcaw . '/' . $norujukan, [ 'sahkan' => 1, 'namaoperasi' => $request->namaoperasi, 'siri' => $request->siri ])->json(); } else { $updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateHapusAnsuran', [ 'siri' => $request->siri, "kodcaw" => $request->kodcaw, "norujukan" => $request->norujukan, 'namaoperasi' => $request->namaoperasi, 'sahkan' => 1, ])->json(); } if ($updatelulus) { event(new NotifikasiKelulusan($norujukan, "lulus", $request->siri, $request->komenkelulusan, $request->teller)); } } else { if (!$request->taglulus) { $updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusanKomen/' . $request->kodcaw . '/' . $norujukan, [ "komen" => $request->komenkelulusan, 'siri' => $request->siri ])->json(); $updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusan/' . $request->kodcaw . '/' . $norujukan, [ 'sahkan' => 2, 'namaoperasi' => $request->namaoperasi, 'siri' => $request->siri ])->json(); } else { $updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateHapusAnsuran', [ 'siri' => $request->siri, "kodcaw" => $request->kodcaw, "norujukan" => $request->norujukan, 'namaoperasi' => $request->namaoperasi, 'sahkan' => 2, ])->json(); } if ($updatelulus) { event(new NotifikasiKelulusan($norujukan, "batal", $request->siri, $request->komenkelulusan, $request->teller)); } } return response()->json($updatelulus, 200); } public function updatekelulusananggota(Request $request) { $auth_user = Auth::user(); $api_url = config('api.url'); // Data asas $nokp = $request->nokp; $kodcaw = $request->kodcaw; $komen = $request->komenkelulusan; $namaoperasi = $request->namaoperasi; $taglulus = $request->taglulus; // contoh: 'Y' = lulus, 'N' = batal // 1️⃣ Tentukan status kelulusan $status = ($taglulus == 'Y') ? 1 : 2; // 1 = Lulus, 2 = Batal/Tolak try { // 2️⃣ Panggil API baru — ikut route baru dengan {kodcaw} $endpoint = $api_url . '/api/UpdateKelulusanAnggota/' . $kodcaw; $payload = [ 'nokp' => $nokp, 'komenkelulusan' => $komen, 'namaoperasi' => $namaoperasi, 'sahkan' => $status ]; Log::info('Menghantar permintaan ke API UpdateKelulusanAnggota', [ 'endpoint' => $endpoint, 'payload' => $payload ]); $response = Http::withOptions(['verify' => config('app.api_verify')]) ->put($endpoint, $payload); $updatelulus = $response->json(); // 3️⃣ Log hasil respon API Log::info('Respon dari API UpdateKelulusanAnggota', [ 'status' => $response->status(), 'body' => $updatelulus ]); // 4️⃣ Jika berjaya, cipta event notifikasi if ($response->successful() && $updatelulus && isset($updatelulus['success']) && $updatelulus['success'] === true) { // $jenis = ($status == 1) ? 'lulus' : 'batal'; // event(new NotifikasiAnggota($nokp, $jenis, null, $komen, $namaoperasi)); $statusText = ($status == 1) ? 'DILULUSKAN' : 'DITOLAK'; event(new NotifikasiAnggota($nokp, $statusText, $komen, $namaoperasi)); Log::info('Event NotifikasiAnggota dispatched', [ 'nokp' => $nokp, 'komen' => $komen, 'namaoperasi' => $namaoperasi ]); } else { Log::warning('Gagal kemas kini kelulusan anggota', [ 'nokp' => $nokp, 'kodcaw' => $kodcaw, 'response' => $updatelulus ]); } return response()->json($updatelulus, $response->status()); } catch (\Exception $e) { Log::error('Ralat UpdateKelulusanAnggota (frontend)', [ 'message' => $e->getMessage(), 'line' => $e->getLine() ]); return response()->json([ 'success' => false, 'message' => 'Ralat semasa menghantar kelulusan anggota.', 'error' => $e->getMessage() ], 500); } } public function createkelulusan(Request $request) { $auth_user = Auth::user(); $api_url = config('api.url'); $current = Carbon::now(); $current = new Carbon(); $norujukan = $request->norujukan; $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); $getsiri = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/ListLatestLulus/' . $auth_user['cawangan'] . '/' . $norujukan)->json(); if (isset($getsiri['siri'])) { $siri = $getsiri['siri'] + 1; } else { $siri = 1; } $createlulus = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url') . '/api/CreateKelulusan/' . $auth_user['cawangan'] . '/' . $norujukan . '/roles/operasi', [ 'komen' => $request->komen, 'dategadai' => $current->toDateString(), 'bilgadai' => 1, 'siri' => $siri, 'margin' => $request->margin, 'berat' => $request->berat, 'nilaimarhun' => $request->nilaimarhun, 'status' => $request->status, 'jumpinjam' => $request->jumpinjam, 'jenistebus' => "G", 'teller' => $request->teller, 'peloperasi' => "operasi" ])->json(); event(new StatusLiked($auth_user['cawangan'], $auth_user['name'])); return response()->json($siri, 201); } public function createkelulusanAnggota(Request $request) { try { $auth_user = Auth::user(); $api_url = config('api.url'); $current = Carbon::now(); Log::info('createkelulusanAnggota', $request->all()); // Dapatkan maklumat cawangan $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')]) ->get($api_url . '/api/cawangan/' . $auth_user['cawangan']) ->json(); // Generate siri baru $getsiri = Http::withOptions(['verify' => config('app.api_verify')]) ->get($api_url . '/api/ListLatestLulus/' . $auth_user['cawangan'] . '/anggota') ->json(); $siri = isset($getsiri['siri']) ? $getsiri['siri'] + 1 : 1; // Hantar ke API $createlulus = Http::withOptions(['verify' => config('app.api_verify')]) ->post($api_url . '/api/CreateKelulusanAnggota/' . $auth_user['cawangan'] . '/roles/operasi', [ 'komen' => $request->komen, 'date_mohon' => $current->toDateString(), 'siri' => $siri, 'nokp' => $request->nokp, 'teller' => $request->teller, 'peloperasi' => 'operasi' ]) ->json(); event(new StatusLiked($auth_user['cawangan'], $auth_user['name'])); return response()->json([ 'success' => true, 'message' => 'Permohonan kelulusan anggota berjaya dihantar.', 'siri' => $siri, 'data' => $createlulus, ], 201); Log::info('🛰️ API CreateKelulusanAnggota Response:', [ 'status' => $response->status(), 'body' => $response->body(), ]); } catch (\Throwable $th) { Log::error('❌ createkelulusanAnggota error: ' . $th->getMessage()); return response()->json([ 'success' => false, 'message' => $th->getMessage(), ], 500); } } public function mintakatalaluansemula(Request $request) { if (Hash::check($request->passsemula, Auth::user()->password)) { return "True"; } else { return "False"; } } public function parameter() { $auth_user = Auth::user(); $api_url = config('api.url'); $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); return view('operasi.parameter', compact('cawangan_info', 'api_url')); } public function hargaemas() { $auth_user = Auth::user(); $api_url = config('api.url'); $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); $harga_emas = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/harga_emas/')->json(); return view('operasi.hargaemas', compact('cawangan_info', 'api_url', 'harga_emas')); } public function margin() { $auth_user = Auth::user(); $api_url = config('api.url'); $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); $margin_pembiayaan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/maxpinjaman')->json(); return view('operasi.margin_pembiayaan', compact('cawangan_info', 'api_url', 'margin_pembiayaan')); } public function kelulusanrekodlepas() { $auth_user = Auth::user(); $api_url = config('api.url'); $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); //declare array baru $arraykelulusan = []; $kelulusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/ListOperasiKelulusan/')->json(); foreach ($kelulusan as $index => $k) { foreach ($k['kelulusanall'] as $index1 => $kel) { $komen = explode("|", $kel['komen']); $results = array_search("", $komen, true); if ($results !== false) { unset($komen[$results]); } array_push($arraykelulusan, ['norujukan' => $kel['norujukan'], 'pinjaman' => $kel['jumpinj'], 'nilaimarhun' => ($komen[1] ?? $kel['nilaimarhun'] ?? '-'), 'berat' => ($komen[2] ?? $kel['berat'] ?? '-'), 'margin' => ($komen[3] ?? $kel['margin'] ?? '-'), 'komen' => ($komen[0] ?? $kel['komen'] ?? '-'), 'status' => ($kel['status'] ?? '-'), 'pelulus' => $kel['operasi'],]); } } return view('operasi.rekodtelahlulus', compact('cawangan_info', 'api_url', 'arraykelulusan')); } public function notifyKomoditi() { $auth_user = Auth::user(); event(new KomoditiNotify('lulus', $auth_user['cawangan'])); } public function kelulusananggota(Request $request) { $auth_user = Auth::user(); $api_url = config('api.url'); $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); $arraykelulusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/list/approval/anggota')->json(); return view('operasi.kelulusan_anggota', compact('cawangan_info', 'api_url', 'arraykelulusan')); } }