diff --git a/app/Http/Controllers/CustomerController.php b/app/Http/Controllers/CustomerController.php index 06fc48f..8efc9a6 100644 --- a/app/Http/Controllers/CustomerController.php +++ b/app/Http/Controllers/CustomerController.php @@ -15,6 +15,7 @@ use App\AuditCustomer; use Illuminate\Http\Request; use App\TuntutBaki; use Illuminate\Support\Facades\Auth; +use App\Anggota; use Carbon\Carbon; use Illuminate\Support\Facades\Log; @@ -394,12 +395,38 @@ class CustomerController extends Controller 'nota_pekerjaan'=>$request->nota_pekerjaan, // 'nota_arcc'=>$request->nota_arcc, 'telefon' => $request->telefon1, - 'telefon2' => $request->telefon2 + 'telefon2' => $request->telefon2, )); return response()->json($customer_update, 200); } + public function assignAnggota($noic, Request $request) +{ + // Semak sama ada pelanggan wujud + $customer = Customer::on('mysql7') + ->where('kpbaru', $noic) + ->orWhere('kplama', $noic) + ->first(); + + if (!$customer) { + return response()->json([ + 'success' => false, + 'message' => 'Pelanggan tidak dijumpai.' + ], 404); + } + + // Kemaskini tag_anggota + $customer->tag_anggota = 1; + $customer->save(); + + return response()->json([ + 'success' => true, + 'message' => 'Tag anggota berjaya dikemaskini.', + 'data' => $customer + ], 200); +} + public function customerUpdateKaunter($nokp,$kodcaw, Request $request){ $current = Carbon::now(); @@ -826,6 +853,14 @@ class CustomerController extends Controller return response()->json($blacklist); } + public function anggotaKoperasi(Request $request){ + + $anggota = Anggota::where('noic',$request->noic)->first(); + + return response()->json($anggota); + } + + public function showCustomerByEachCawangan($ic) { $cawangan_all = Cawangan::on('mysql7')->get(); diff --git a/app/Http/Controllers/KelulusanController.php b/app/Http/Controllers/KelulusanController.php index c663000..07ed5d7 100644 --- a/app/Http/Controllers/KelulusanController.php +++ b/app/Http/Controllers/KelulusanController.php @@ -6,6 +6,8 @@ use App\Audit; use App\Mohon; use App\Cawangan; use App\Mohonid; +use App\MohonAnggota; +use App\Customer; use Carbon\Carbon; @@ -229,6 +231,98 @@ class KelulusanController extends Controller 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(); @@ -314,6 +408,64 @@ public function create(REQUEST $request,$kodcaw,$norujukan,$roles) 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) @@ -526,7 +678,7 @@ public function create(REQUEST $request,$kodcaw,$norujukan,$roles) return response()->json($kelulusan, 200); } - public function getApprovalLaporan(Request $request){ + 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') @@ -540,6 +692,34 @@ public function create(REQUEST $request,$kodcaw,$norujukan,$roles) 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); + } + }