where('kodcaw','=',$kodcaw)->first(); $kelulusan=Mohon::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('masalulus','=','') ->where('pelulus','!=','operasi') ->get(); return response()->json($kelulusan); } public function listdahlulus($kodcaw,$norujukan,Request $request) { $harini = Carbon::now(); $harini = new Carbon; $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $kelulusan=Mohon::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('norujukan','=',$norujukan) ->where('masalulus','<>','') ->get(); // $audit = new Audit(); // $audit->users = $request->teller; // $audit->actions = "test"; // $audit->new_data = $kelulusan; // $audit->kodcaw = $kodcaw; // $audit->created_at = $harini; // $audit->updated_at = $harini; // $audit->save(); return response()->json($kelulusan); } public function listlatestlulus($kodcaw,$norujukan) { $harini = Carbon::now(); $harini = new Carbon; $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $kelulusan=Mohon::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('norujukan','=',$norujukan) ->orderBy('siri','desc') ->first(); return response()->json($kelulusan); } public function rekodlepas($kodcaw) { $harini = Carbon::now(); $harini = new Carbon; $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $kelulusan=Mohon::on($cawangan['mysql']) ->where('tarikh','<',$harini->toDateString()) ->where('pelulus','=','khazanah') ->where('peloperasi','=','') ->where('masalulus','<>','') ->get(); return response()->json($kelulusan); } public function update($kodcaw,$norujukan,Request $request) { $harini = Carbon::now(); $harini = new Carbon; $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $pengesahan = $request->pengesahan; if($pengesahan == 'khazanah') { if($request->pembatalan == null) { $kelulusan=Mohon::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('norujukan','=',$norujukan) ->where('siri','=',$request->siri) ->update(array( 'masalulus' => $harini->toTimeString(), 'pelulus' => 'khazanah', 'khazanah' => $request->namakhazanah )); }else{ $kelulusan=Mohon::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('norujukan','=',$norujukan) ->where('siri','=',$request->siri) ->update(array( 'masalulus'=> 'batal', 'pelulus'=> 'khazanah', 'khazanah' => $request->namakhazanah )); } } else if($pengesahan == 'operasi') { if($request->pembatalan == null) { $kelulusan=Mohon::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('norujukan','=',$norujukan) ->where('siri','=',$request->siri) ->update(array( 'pelulus' => 'operasi', 'khazanah' => $request->namakhazanah )); } else { $kelulusan=Mohon::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('norujukan','=',$norujukan) ->where('siri','=',$request->siri) ->update(array( 'pelulus' => 'operasi', 'masalulus' => 'batal', 'khazanah' => $request->namakhazanah )); } $audit = new Audit(); $audit->users = (isset($request->namaoperasi) ? $request->namaoperasi : ''); $audit->actions = "pengesahan kelulusan 75%"; $audit->new_data = json_encode($kelulusan); $audit->kodcaw = $kodcaw; $audit->created_at = $harini; $audit->updated_at = $harini; $audit->save(); } if($request->sahkan === 1) { $kelulusan=Mohon::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('norujukan','=',$norujukan) ->where('siri','=',$request->siri) ->update(array( 'pelulus' => 'dahlulus', 'operasi' => $request->namaoperasi, 'masalulus'=> $harini->toTimeString() )); }else if($request->sahkan === 2){ $kelulusan=Mohon::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('norujukan','=',$norujukan) ->where('siri','=',$request->siri) ->update(array( 'pelulus' => 'dahlulus', 'operasi' => $request->namaoperasi, 'masalulus'=> 'batal' )); } $audit = new Audit(); $audit->users = (isset($request->namakhazanah) ? $request->namakhazanah : ''); $audit->actions = "Pengesahan Kelulusan 75%"; $audit->kodcaw = $kodcaw; $audit->created_at = $harini; $audit->updated_at = $harini; $audit->save(); return response()->json($kelulusan,201); } public function updateAnggota($kodcaw, Request $request) { $harini = Carbon::now(); // Dapatkan sambungan database cawangan $cawangan = Cawangan::on('mysql7') ->where('kodcaw', '=', $kodcaw) ->first(); if (!$cawangan) { return response()->json(['success' => false, 'message' => 'Kod cawangan tidak sah'], 404); } $nokp = $request->nokp; $komen = $request->komenkelulusan; $namaoperasi = $request->namaoperasi; $status = $request->sahkan; // 1 = Lulus, 2 = Batal // Debug log masuk Log::info('UpdateKelulusanAnggota triggered', [ 'kodcaw' => $kodcaw, 'nokp' => $nokp, 'status' => $status, 'komen' => $komen, 'namaoperasi' => $namaoperasi ]); // โœ… Kalau LULUS if ($status == 1) { $kelulusan = MohonAnggota::on($cawangan['mysql']) ->where('nokp', '=', $nokp) ->update([ 'status' => 'DILULUSKAN', 'komen' => $komen, 'peloperasi' => $namaoperasi, 'datetime_pelulus' => $harini, 'updated_at' => $harini, ]); // ๐ŸŸข Update CUSTOMER di pusat (mysql7) Customer::on('mysql7') ->where('kpbaru', '=', $nokp) ->update([ 'tag_anggota' => 1, ]); } // โŒ Kalau BATAL / TOLAK else if ($status == 2) { $kelulusan = MohonAnggota::on($cawangan['mysql']) ->where('nokp', '=', $nokp) ->update([ 'status' => 'DITOLAK', 'komen' => $komen, 'peloperasi' => $namaoperasi, 'datetime_pelulus' => $harini, 'updated_at' => $harini, ]); } else { return response()->json(['success' => false, 'message' => 'Status tidak sah'], 400); } // ๐Ÿงพ Simpan audit log $audit = new Audit(); $audit->users = $namaoperasi; $audit->actions = ($status == 1) ? "Kelulusan anggota oleh operasi (tag_anggota=1)" : "Pembatalan / tolak anggota oleh operasi"; $audit->new_data = json_encode([ 'nokp' => $nokp, 'status' => $status, 'komen' => $komen, ]); $audit->kodcaw = $kodcaw; $audit->created_at = $harini; $audit->updated_at = $harini; $audit->save(); Log::info('Kelulusan anggota dikemas kini', [ 'nokp' => $nokp, 'status' => $status, 'updated_tag_anggota' => ($status == 1) ? 1 : 0 ]); return response()->json([ 'success' => true, 'status' => ($status == 1) ? 'DILULUSKAN' : 'DITOLAK', 'updated_rows' => $kelulusan ], 200); } public function updatekomen($kodcaw,$norujukan,Request $request) { $harini = Carbon::now(); $harini = new Carbon; $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $kelulusan=Mohon::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('norujukan','=',$norujukan) ->where('siri','=',$request->siri) ->update(array( 'komen' => $request->komen )); return response()->json($kelulusan,201); } public function create(REQUEST $request,$kodcaw,$norujukan,$roles) { $harini = Carbon::now(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); if($roles == "khazanah") { $kelulusan=Mohon::on($cawangan['mysql']) ->create([ 'tarikh'=> $harini->toDateString(), 'norujukan'=> $norujukan, 'siri' => $request->siri, 'komen' => $request->komen, 'margin' => $request->margin, 'nilaimarhun' => $request->nilaimarhun, 'berat' => $request->berat, 'status' => $request->status, 'bilgad' => $request->bilgadai, 'jumpinj' => $request->jumpinjam, 'jenistebus' => $request->jenistebus, 'teller' => $request->teller, 'pelulus' => ($request->pelulus) ? $request->pelulus : '' ]); } else if($roles == "operasi") { $kelulusan=Mohon::on($cawangan['mysql']) ->create([ 'tarikh'=> $harini->toDateString(), 'norujukan'=> $norujukan, 'siri' => $request->siri, 'komen' => $request->komen, 'margin' => $request->margin, 'nilaimarhun' => $request->nilaimarhun, 'berat' => $request->berat, 'status' => $request->status, 'bilgad' => $request->bilgadai, 'jumpinj' => $request->jumpinjam, 'jenistebus' => $request->jenistebus, 'teller' => $request->teller, 'pelulus' => 'minta', 'peloperasi' => ($request->peloperasi) ? $request->peloperasi : '' ]); } $audit = new Audit(); $audit->users = (isset($request->teller) ? $request->teller : ''); $audit->actions = "Minta Pengesahan kelulusan 75%"; $audit->new_data = json_encode($kelulusan); $audit->kodcaw = $kodcaw; $audit->created_at = $harini; $audit->updated_at = $harini; $audit->save(); return response()->json($kelulusan); } public function createKelulusanAnggota(Request $request, $kodcaw) { try { $harini = Carbon::now(); // โœ… Dapatkan maklumat cawangan (database connection) $cawangan = Cawangan::on('mysql7')->where('kodcaw', $kodcaw)->first(); if (!$cawangan) { return response()->json(['success' => false, 'message' => 'Cawangan tidak dijumpai'], 404); } // โœ… Simpan ke dalam model MohonAnggota $kelulusan = new MohonAnggota(); $kelulusan->setConnection($cawangan['mysql']); // guna connection cawangan dinamik $kelulusan->tarikh = $harini->toDateString(); $kelulusan->nokp = $request->nokp; $kelulusan->nama = $request->nama ?? null; $kelulusan->status = 'MENUNGGU OPERASI'; $kelulusan->komen = $request->komen; $kelulusan->teller = $request->teller; $kelulusan->peloperasi = null; $kelulusan->created_at = $harini; $kelulusan->updated_at = $harini; $kelulusan->save(); // โœ… Simpan audit trail $audit = new Audit(); $audit->users = $request->teller; $audit->actions = 'Mohon kelulusan anggota'; $audit->new_data = json_encode(['mohon_anggota_id' => $kelulusan->id]); $audit->kodcaw = $kodcaw; $audit->created_at = $harini; $audit->updated_at = $harini; $audit->save(); // โœ… Return JSON response ke frontend return response()->json([ 'success' => true, 'message' => 'Permohonan kelulusan anggota berjaya dihantar kepada operasi.', 'data' => [ 'id' => $kelulusan->id, 'nokp' => $kelulusan->nokp, 'status' => $kelulusan->status, 'komen' => $kelulusan->komen, 'teller' => $kelulusan->teller, ], ], 201); } catch (\Throwable $th) { Log::error('โŒ createKelulusanAnggota error: ' . $th->getMessage()); return response()->json([ 'success' => false, 'message' => $th->getMessage(), ], 500); } } //KEPOHONAN EDIT DAN HAPUS public function kepohonancreate(REQUEST $request,$kodcaw,$norujukan) { $harini = Carbon::now(); $harini = new Carbon; $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $mohonid=Mohonid::on($cawangan['mysql']) ->create([ 'tarikh'=> $harini->toDateString(), 'mohon' => $request->mohon, 'norujukan' => $norujukan, 'katalaluan' => $request->komen, 'pinjaman' => $request->pinjaman, 'nilaimarhun' => $request->nilaimarhun, 'berat' => $request->berat, 'margin' => $request->margin, 'benar' => '0', 'teller' => $request->teller, 'tagoperasi'=> ($request->tagoperasi) ? true : false, 'masa' => $harini->toTimeString(), 'ansuran' => ($request->ansuran) ? $request->ansuran : 0.00, ]); return response()->json($mohonid,201); } public function updatekepohonankhazanah($kodcaw,$norujukan,Request $request) { $harini = Carbon::now(); $harini = new Carbon; $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); if($request->pembatalan != null) { $kelulusan=Mohonid::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('norujukan','=',$norujukan) ->where('recno','=',$request->recno) ->update(array( 'katalaluan' => $request->komen, 'benar' => '2', 'id' => $request->khazanah, 'timestamp_approved_by_pc' => $harini, )); }else{ $benar = ($request->tagoperasi == 1) ? 0 : 1; $kelulusan=Mohonid::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('norujukan','=',$norujukan) ->where('recno','=',$request->recno) ->update(array( 'benar' => $benar, 'id' => $request->khazanah, 'timestamp_approved_by_pc' => $harini, )); } return response()->json($kelulusan,202); } public function kepohonangetteller(Request $request,$kodcaw) { $harini = Carbon::now(); $harini = new Carbon; $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $kelulusan=Mohonid::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('norujukan','=',$request->norujukan) ->orderBy('recno','desc') ->first(); return response()->json($kelulusan,200); } public function listkepohonan($kodcaw) { $harini = Carbon::now(); $harini = new Carbon; $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$kodcaw)->first(); $kelulusan=Mohonid::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('benar','=', 0) ->orderBy('recno','desc') ->get(); return response()->json($kelulusan,200); } public function listoperasi() { $harini = Carbon::now(); $harini = new Carbon; $cawangan_all = Cawangan::on('mysql7')->get(); $arraykelulusan = []; foreach($cawangan_all as $index=>$cawangan){ $kelulusan = Mohon::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('masalulus','=','') ->where('pelulus','=','operasi') ->get(); $mohonid_data = Mohonid::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->whereNotNull('id') ->whereNotNull('timestamp_approved_by_pc') ->where('tagoperasi', '1') ->whereNull('operasi') ->get(); // Check if EITHER has data (not just $kelulusan) if(sizeof($kelulusan) != 0 || sizeof($mohonid_data) != 0){ array_push($arraykelulusan,[ "kelulusanall" => $kelulusan, "kelulusanMohonid" => $mohonid_data, "cawangan" => $cawangan['details_caw'], "cawangankod" => $cawangan['kodcaw'] ]); } } return response()->json($arraykelulusan,200); } public function listoperasikelulusan() { $harini = Carbon::now(); $harini = new Carbon; $cawangan_all = Cawangan::on('mysql7')->get(); $arraykelulusan = []; foreach($cawangan_all as $index=>$cawangan){ $kelulusan=Mohon::on($cawangan['mysql']) ->where('peloperasi','=','operasi') ->where('operasi','!=','') ->get(); if(sizeof($kelulusan) != 0){ array_push($arraykelulusan,["kelulusanall" => $kelulusan,"cawangan" => $cawangan['details_caw'],"cawangankod" => $cawangan['kodcaw']]); } } return response()->json($arraykelulusan,200); } public function UpdateHapusAnsuranOperasi(Request $request){ $harini = Carbon::now(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first(); if($request->sahkan === 1){ $kelulusan=Mohonid::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('norujukan','=',$request->norujukan) ->where('recno','=',$request->siri) ->where('tagoperasi', '=', 1) ->update(array( 'operasi' => $request->namaoperasi, 'timestamp_approved_by_operasi' => $harini, 'benar' => 1, )); }else if($request->sahkan === 2){ $kelulusan=Mohonid::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('norujukan','=',$request->norujukan) ->where('recno','=',$request->siri) ->where('tagoperasi', '=', 1) ->update(array( 'operasi' => $request->namaoperasi, 'timestamp_approved_by_operasi' => $harini, 'benar' => 2, )); } return response()->json($kelulusan,202); } public function getApproval(Request $request){ $harini = Carbon::now(); $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first(); $kelulusan = Mohonid::on($cawangan['mysql']) ->where('tarikh','=',$harini->toDateString()) ->where('teller','=',$request->teller) ->where('mohon','=',$request->mohon) ->where('benar','=',0) ->latest('masa') ->first(); return response()->json($kelulusan, 200); } public function getApprovalList(Request $request){ $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first(); $kelulusan = Mohonid::on($cawangan['mysql']) ->groupBy('mohon') ->pluck('mohon'); return response()->json($kelulusan, 200); } public function getApprovalLaporan(Request $request){ $cawangan = Cawangan::on('mysql7')->where('kodcaw','=',$request->kodcaw)->first(); $kelulusan = Mohonid::on($cawangan['mysql']) ->selectRaw('recno, benar, tarikh, onlineid, mohon, norujukan, id, katalaluan, benar, operasi, pinjaman, ansuran, nilaimarhun, berat, margin, teller ,masa, timestamp_approved_by_pc, timestamp_approved_by_operasi') ->whereBetween('tarikh', [$request->tarikh_mula, $request->tarikh_akhir]) ->where('mohon', $request->mohon) ->orderBy('tarikh', 'desc') ->orderBy('masa', 'desc') ->get(); return response()->json($kelulusan, 200); } public function listKelulusanAnggota(Request $request){ $harini = Carbon::now(); $harini = new Carbon; Log::info($request->all()); $cawangan = Cawangan::on('mysql7')->get(); $array_kelulusan = []; foreach($cawangan as $caw){ $kelulusan = MohonAnggota::on($caw['mysql']) ->where('tarikh', '=', $harini->toDateString()) ->where('peloperasi', '=', 0) ->orWhereNull('peloperasi') // Corrected this part ->orderBy('id', 'desc') ->get(); if(sizeof($kelulusan) != 0){ array_push($array_kelulusan,["kelulusanall" => $kelulusan,"cawangan" => $caw['details_caw'],"cawangankod" => $caw['kodcaw']]); } } return response()->json($array_kelulusan,200); } }