From 0224747ba1ae4236b97dd2d0ccedce581b2c97c3 Mon Sep 17 00:00:00 2001 From: Nur Izzati Date: Sun, 17 Aug 2025 16:03:25 +0800 Subject: [PATCH 1/3] modified carian nama pelanggan arcc --- app/Http/Controllers/CallCenterController.php | 385 ++++++- .../views/callcenter/indexnama.blade.php | 943 ++++++++++++++++++ .../views/callcenter/pilihpelanggan.blade.php | 7 +- .../callcenter/pilihpelanggannama.blade.php | 49 + .../views/homepage/callcenter/home.blade.php | 35 +- routes/web.php | 6 + 6 files changed, 1385 insertions(+), 40 deletions(-) create mode 100644 resources/views/callcenter/indexnama.blade.php create mode 100644 resources/views/callcenter/pilihpelanggannama.blade.php diff --git a/app/Http/Controllers/CallCenterController.php b/app/Http/Controllers/CallCenterController.php index 007e52d..03eb192 100644 --- a/app/Http/Controllers/CallCenterController.php +++ b/app/Http/Controllers/CallCenterController.php @@ -337,6 +337,22 @@ class CallCenterController extends Controller } } + public function pelanggannew() + { + $search = false; + + $api_url = config('api.url'); + $auth_user = Auth::user(); + $idtype = 'nokp'; + $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json(); + $bank = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/bank')->json(); + if($auth_user->roles == 'admin'){ + return view('admin.customer_index',compact('search','cawangan_info','bank','api_url','idtype','auth_user')); + }else{ + return view('callcenter.indexnama',compact('search','cawangan_info','bank','api_url','idtype','auth_user')); + } + } + public function search(Request $request){ // dd($request->all()); $noic = $request->noic; @@ -365,6 +381,112 @@ class CallCenterController extends Controller } } + public function searchnama(Request $request) + { + $noic = $request->noic; + $kodcaw = $request->cawangan; + Session::put('noic', $noic); + Session::put('kodcaw', $kodcaw); + + $api_url = config('api.url'); + + $request->session()->forget('page_reload'); + $request->session()->forget('norujukan'); + + if (empty($noic)) { + return redirect()->route('arcc.pelanggan')->with('failed', 'Maaf, Tiada Data Pelanggan...'); + } + + // ====================== + // 1️⃣ Kalau isi NOIC sahaja + // ====================== + if ($noic && !$kodcaw) { + $customersWithGadai = []; + + // Ambil semua cawangan + $cawanganList = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/cawangan') + ->json(); + + + if (is_array($cawanganList)) { + foreach ($cawanganList as $caw) { + $kod = $caw['kodcaw']; + + // Check customer di cawangan tu + $customer = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/customers/' . $noic, ['kodcaw' => $kod]) + ->json(); + + + if (!empty($customer)) { + // Check rekod gadai + $nokp = !empty($customer['kpbaru']) ? $customer['kpbaru'] : (!empty($customer['kplama']) ? $customer['kplama'] : $noic); + $gadaiData = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/arcc/rekodgadai', [ + 'nokp' => $nokp, + 'kodcaw' => $kod + ]) + ->json(); + // dump($gadaiData); + + if (!empty($gadaiData['data']) && $gadaiData['status'] === true) { + $customersWithGadai[] = [ + 'nama' => $customer['nama'] ?? '-', + 'kpbaru' => $customer['kpbaru'] ?? null, + 'kplama' => $customer['kplama'] ?? null, + 'customer' => $customer, + 'kodcaw' => $kod, + 'nama_cawangan' => $caw['details_caw'] ?? $kod, + // 'rekod_gadai' => $gadaiData + + ]; + } + } + } + } + // dd(true); + + // Kalau lebih 1 → pilih pelanggan + if (count($customersWithGadai) >= 1) { + Session::put('customer_list', $customersWithGadai); + return redirect()->route('arcc.pilihpelanggan'); + } + + return redirect()->route('arcc.pelanggan')->with('failed', 'Maaf, Tiada Data Pelanggan...'); + } + + // ====================== + // 2️⃣ Kalau isi NOIC + Cawangan + // ====================== + if ($noic && $kodcaw) { + $customer_info = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/customers/' . $noic, ['kodcaw' => $kodcaw]) + ->json(); + + // Check sama ada $customer_info bukan null dan ada data penting seperti 'nama' (atau key lain) + if ($customer_info && !empty($customer_info['nama'])) { + Session::put('customer_info_arcc', $customer_info); + + $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/cawangan/' . $kodcaw) + ->json(); + + return redirect()->route('arcc.customer_info_nama', [ + 'customer_info' => $customer_info, + 'cawangan_info' => $cawangan_info, + 'api_url' => $api_url + ]); + } + + // Jika tiada data pelanggan di cawangan tu + return redirect()->route('arcc.pelanggan')->with('failed', 'Maaf, Tiada Data Pelanggan di cawangan ini.'); + } + + + // Boleh tambah kes lain (Nama sahaja, Nama + Cawangan) kalau nak + } + public function info(Request $request){ $auth_user = Auth::user(); $api_url = config('api.url'); @@ -383,6 +505,52 @@ class CallCenterController extends Controller } + public function infonama(Request $request) + { + $auth_user = Auth::user(); + $api_url = Session::get('api_url_arcc', config('api.url')); + + $cawangan_info = Session::get('cawangan_info_arcc'); + $customer_info = Session::get('customer_info_arcc'); + + // Kalau data kosong, fallback panggil API + if (!$cawangan_info) { + $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/cawangan/' . Session::get('kodcaw')) + ->json(); + } + if (!$customer_info) { + $customer_info = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/customers/' . Session::get('noic')) + ->json(); + + $customer_info = $response['data'] ?? []; + } + + $bakilelong = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/bakilelong/cawangan/' . Session::get('kodcaw') . '/' . Session::get('noic') . '/baki') + ->json(); + + $rugilelong = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/bakilelong/cawangan/' . Session::get('kodcaw') . '/' . Session::get('noic') . '/rugi') + ->json(); + + $negeri = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/negeri/') + ->json(); + + $request->session()->forget('page_reload'); + $request->session()->forget('norujukan'); + + return view('callcenter.' . $cawangan_info['version'] . '.info', compact( + 'cawangan_info', + 'api_url', + 'customer_info', + 'bakilelong', + 'rugilelong', + 'negeri' + )); + } public function notisperingatankedua(Request $request){ $auth_user = Auth::user(); @@ -994,32 +1162,41 @@ class CallCenterController extends Controller public function pilihPelangganProceed(Request $request) -{ - $customerData = $request->input('customer'); - + { + $customerData = $request->input('customer'); + $kodcaw = $request->input('kodcaw'); - if ($customerData) { - $customer = json_decode(base64_decode($customerData), true); - $kodcaw = $customer['kodcaw']; - Session::put('customer_info_arcc', $customer); + if ($customerData) { + $customer = json_decode(base64_decode($customerData), true); + + // Merge data penuh supaya flat & senang guna di Blade + $customer_info = array_merge( + $customer['customer'] ?? $customer, // kalau ada sub-array 'customer', ambil dia + [ + 'kodcaw' => $customer['kodcaw'] ?? $kodcaw, + 'nama_cawangan' => $customer['nama_cawangan'] ?? '', + ] + ); - $api_url = config('api.url'); - $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')]) - ->get($api_url . '/api/cawangan/' . $kodcaw)->json(); + // Simpan dalam session + Session::put('customer_info_arcc', $customer_info); + Session::put('kodcaw', $kodcaw); + Session::put('noic', $customer_info['kpbaru'] ?? $customer_info['kplama']); - return redirect()->route('arcc.customer_info', [ - 'customer_info' => $customer, - 'cawangan_info' => $cawangan_info, - 'api_url' => $api_url - ]); + $api_url = config('api.url'); + $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/cawangan/' . $kodcaw)->json(); + + // Simpan juga dalam session + Session::put('cawangan_info_arcc', $cawangan_info); + Session::put('api_url_arcc', $api_url); + + return redirect()->route('arcc.customer_info'); + } + + return redirect()->route('arcc.pelanggan')->with('failed', 'Pelanggan tidak sah dipilih.'); } - return redirect()->route('arcc.pelanggan')->with('failed', 'Pelanggan tidak sah dipilih.'); -} - - - - public function ajaxSearchCustomer(Request $request) { $search = strtolower($request->query('search', '')); @@ -1031,4 +1208,170 @@ class CallCenterController extends Controller return view('callcenter.partials.customertable', ['customers' => $customers])->render(); } + public function cariannama(Request $request) + { + $nama = $request->nama; + $api_url = config('api.url'); + + if (empty($nama)) { + return redirect()->route('arcc.pelanggan')->with('failed', 'Maaf, Tiada Data Pelanggan...'); + } + + session(['last_search' => $request->all()]); + + // Clear session lama + $request->session()->forget(['page_reload', 'norujukan']); + + // 1. Call API carian nama + $customers = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/customers', ['nama' => $nama]) + ->json(); + + + if (!is_array($customers) || empty($customers)) { + return redirect()->route('arcc.pelanggan')->with('failed', 'Tiada pelanggan dijumpai.'); + } + + // 2. Ambil senarai cawangan + $cawanganList = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/cawangan') + ->json(); + + if (!is_array($cawanganList) || empty($cawanganList)) { + return redirect()->route('arcc.pelanggan')->with('failed', 'Tiada senarai cawangan.'); + } + + // 3. Kumpul semua IC (kpbaru / kplama) dari senarai customer + $nokpList = collect($customers) + ->map(function ($customer) { + return $customer['kpbaru'] ?? $customer['kplama'] ?? null; + }) + ->filter() + ->unique() + ->values() + ->toArray(); + + + $customersWithGadai = collect(); + + foreach ($cawanganList as $caw) { + $kod = $caw['kodcaw']; + + $response = Http::withOptions(['verify' => config('app.api_verify')]) + ->post($api_url . '/arcc/rekodgadai-batch', [ + 'nokp_list' => $nokpList, + 'kodcaw' => $kod + ]); + + if ($response->failed()) { + continue; + } + + $data = $response->json(); + + if (!empty($data['data']) && is_array($data['data'])) { + foreach ($data['data'] as $rekod) { + $customer = collect($customers)->first(function ($c) use ($rekod) { + return ($c['kpbaru'] ?? $c['kplama']) === $rekod['nokp']; + }); + + if ($customer) { + $customersWithGadai->put( + $customer['kpbaru'] ?? $customer['kplama'], // guna IC as key + [ + 'nama' => $customer['nama'] ?? '-', + 'kpbaru' => $customer['kpbaru'] ?? null, + 'kplama' => $customer['kplama'] ?? null, + 'customer' => $customer, + 'kodcaw' => $kod, + 'nama_cawangan' => $caw['details_caw'] ?? $kod + ] + ); + } + } + } + } + + $customersWithGadai = $customersWithGadai + ->sortBy('nama') // sort ikut nama A→Z + ->values(); // reset key semula + + + // 5. Return ikut result + if ($customersWithGadai->count() > 1) { + Session::put('customer_list', $customersWithGadai); + return redirect()->route('arcc.pilihpelanggannama'); + } elseif ($customersWithGadai->count() === 1) { + $singleCustomer = $customersWithGadai->first(); + Session::put('customer_info_arcc', $singleCustomer['customer']); + + return redirect()->route('arcc.customer_info', [ + 'customer_info' => $singleCustomer['customer'], + 'cawangan_info' => [ + 'kodcaw' => $singleCustomer['kodcaw'], + 'nama_cawangan' => $singleCustomer['nama_cawangan'] + ], + 'api_url' => $api_url + ]); + } + + return redirect()->route('arcc.pelanggan')->with('failed', 'Tiada pelanggan dengan rekod gadai.'); + } + + public function pilihPelanggannama() + { + if (!Session::has('customer_list')) { + return redirect()->route('arcc.pelanggan')->with('failed', 'Tiada pelanggan untuk dipilih.'); + } + + $kodcaw = Session::get('kodcaw'); // Ambil dari sesi + + $cawangan_info = null; + + // Kalau kodcaw ada, baru ambil cawangan_info + if ($kodcaw) { + $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')]) + ->get(config('api.url') . '/api/cawangan/' . $kodcaw) + ->json(); + // dd($cawangan_info ); + } + + return view('callcenter.pilihpelanggannama', compact('cawangan_info')); + } + + public function pilihPelangganProceednama(Request $request) + { + $customerData = $request->input('customer'); + $kodcaw = $request->input('kodcaw'); + + if ($customerData) { + $customer = json_decode(base64_decode($customerData), true); + + // Merge data penuh supaya flat & senang guna di Blade + $customer_info = array_merge( + $customer['customer'] ?? $customer, // kalau ada sub-array 'customer', ambil dia + [ + 'kodcaw' => $customer['kodcaw'] ?? $kodcaw, + 'nama_cawangan' => $customer['nama_cawangan'] ?? '', + ] + ); + + // Simpan dalam session + Session::put('customer_info_arcc', $customer_info); + Session::put('kodcaw', $kodcaw); + Session::put('noic', $customer_info['kpbaru'] ?? $customer_info['kplama']); + + $api_url = config('api.url'); + $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/cawangan/' . $kodcaw)->json(); + + // Simpan juga dalam session + Session::put('cawangan_info_arcc', $cawangan_info); + Session::put('api_url_arcc', $api_url); + + return redirect()->route('arcc.customer_info'); + } + + return redirect()->route('arcc.pelanggan')->with('failed', 'Pelanggan tidak sah dipilih.'); + } } diff --git a/resources/views/callcenter/indexnama.blade.php b/resources/views/callcenter/indexnama.blade.php new file mode 100644 index 0000000..4f03739 --- /dev/null +++ b/resources/views/callcenter/indexnama.blade.php @@ -0,0 +1,943 @@ +@extends('layouts.app_callcenter') + +@section('content') + + +
+
+
+ + + +
+
+
+
Masukkan Nombor Kad Pengenalan Atau Nama Pelanggan
+
+
+
+
+ + + + + + + + +
+
+
+
+ +
Atau
+ + {{-- Form carian Nama --}} +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ @if ($message = Session::get('success')) +
+

{{ $message }}

+
+ @elseif ($message = Session::get('failed')) +
+

{{ $message }}

+
+ @endif +
+
+ +
+ + + + +
+
+ + + + + + +@endsection diff --git a/resources/views/callcenter/pilihpelanggan.blade.php b/resources/views/callcenter/pilihpelanggan.blade.php index ce7c6fa..17a7b32 100644 --- a/resources/views/callcenter/pilihpelanggan.blade.php +++ b/resources/views/callcenter/pilihpelanggan.blade.php @@ -2,8 +2,8 @@ @section('content')
- Kembali -

Senarai Pelanggan Dijumpai

+ Kembali +

Senarai Cawangan Dijumpai

@if(session('customer_list') && count(session('customer_list')) > 0) @@ -31,6 +31,7 @@ @csrf + @@ -42,6 +43,6 @@
Tiada pelanggan dijumpai.
@endif - Kembali + Kembali @endsection diff --git a/resources/views/callcenter/pilihpelanggannama.blade.php b/resources/views/callcenter/pilihpelanggannama.blade.php new file mode 100644 index 0000000..df895e1 --- /dev/null +++ b/resources/views/callcenter/pilihpelanggannama.blade.php @@ -0,0 +1,49 @@ +@extends('layouts.app_callcenter') + +@section('content') +
+ Kembali +

Senarai Nama Pelanggan Dijumpai

+ @if(session('customer_list') && count(session('customer_list')) > 0) +
+ + + + + + + + + + @foreach(session('customer_list') as $customer) + + + + + + + @endforeach + +
NamaNo KPTindakan
{{ $customer['nama'] }} @php + if($customer['kpbaru'] != null){ + $noic = $customer['kpbaru']; + }else{ + $noic = $customer['kplama']; + } + @endphp + {{ $noic }} +
+ @csrf + + + + +
+
+ @else +
Tiada pelanggan dijumpai.
+ @endif + + Kembali +
+@endsection diff --git a/resources/views/homepage/callcenter/home.blade.php b/resources/views/homepage/callcenter/home.blade.php index f2793bd..a53eb16 100644 --- a/resources/views/homepage/callcenter/home.blade.php +++ b/resources/views/homepage/callcenter/home.blade.php @@ -2,27 +2,30 @@ @section('content')
-
-
- -@endsection \ No newline at end of file +@endsection diff --git a/routes/web.php b/routes/web.php index d6cffb1..af251bc 100644 --- a/routes/web.php +++ b/routes/web.php @@ -440,6 +440,12 @@ Route::get('/arcc/tanyaupah/{norujukan}',['as'=>'tanyaupah','uses' => 'CallCente Route::get('/pilihpelanggan',['as'=>'arcc.pilihpelanggan','uses' => 'CallCenterController@pilihPelanggan'])->middleware('auth','callcenter'); Route::post('/pilihpelanggan/proceed', ['as'=>'arcc.pilihpelanggan.proceed','uses' => 'CallCenterController@pilihPelangganProceed'])->middleware('auth','callcenter'); Route::get('/ajax/search-customer',['as'=>'arcc.ajaxSearchCustomer','uses' => 'CallCenterController@ajaxSearchCustomer'])->middleware('auth','callcenter'); +Route::get('/arcc/cariannama',['as'=>'arcc.cariannama','uses'=>'CallCenterController@cariannama'])->middleware('auth','callcenter'); +Route::get('/pilihpelanggannama',['as'=>'arcc.pilihpelanggannama','uses' => 'CallCenterController@pilihpelanggannama'])->middleware('auth','callcenter'); +Route::post('/pilihpelanggannamacaw', ['as'=>'arcc.pilihpelanggannamacaw','uses' => 'CallCenterController@pilihPelanggannamacaw'])->middleware('auth','callcenter'); +Route::get('/arcc/pelanggannew',['as'=>'arcc.pelanggannew','uses'=>'CallCenterController@pelanggannew'])->middleware('auth','callcenter'); +Route::get('/arcc/searchpelanggannama',['as'=>'arcc.searchpelanggannama','uses'=>'CallCenterController@searchnama'])->middleware('auth','callcenter'); +Route::get('/arcc/customer_info_nama',['as'=>'arcc.customer_info_nama','uses'=>'CallCenterController@infonama'])->middleware('auth','callcenter'); //taraf pc atau ppc Route::get('/cawangan/notisperingatan',['as'=>'laporan.notisperingatan','uses'=>'KhazanahController@notisperingatan'])->middleware('auth','khazanah'); From 2881a8ba19bc2fed8f50d19fe358c4fd508f41fb Mon Sep 17 00:00:00 2001 From: Nur Izzati Date: Sun, 17 Aug 2025 16:41:38 +0800 Subject: [PATCH 2/3] update return --- app/Http/Controllers/CallCenterController.php | 6 +++--- resources/views/callcenter/indexnama.blade.php | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/CallCenterController.php b/app/Http/Controllers/CallCenterController.php index 03eb192..1b90284 100644 --- a/app/Http/Controllers/CallCenterController.php +++ b/app/Http/Controllers/CallCenterController.php @@ -394,7 +394,7 @@ class CallCenterController extends Controller $request->session()->forget('norujukan'); if (empty($noic)) { - return redirect()->route('arcc.pelanggan')->with('failed', 'Maaf, Tiada Data Pelanggan...'); + return redirect()->route('arcc.pelanggannew')->with('failed', 'Maaf, Tiada Data Pelanggan...'); } // ====================== @@ -1229,7 +1229,7 @@ class CallCenterController extends Controller if (!is_array($customers) || empty($customers)) { - return redirect()->route('arcc.pelanggan')->with('failed', 'Tiada pelanggan dijumpai.'); + return redirect()->route('arcc.pelanggannew')->with('failed', 'Tiada pelanggan dijumpai.'); } // 2. Ambil senarai cawangan @@ -1315,7 +1315,7 @@ class CallCenterController extends Controller ]); } - return redirect()->route('arcc.pelanggan')->with('failed', 'Tiada pelanggan dengan rekod gadai.'); + return redirect()->route('arcc.pelanggannew')->with('failed', 'Tiada pelanggan dengan rekod gadai.'); } public function pilihPelanggannama() diff --git a/resources/views/callcenter/indexnama.blade.php b/resources/views/callcenter/indexnama.blade.php index 4f03739..74ef53e 100644 --- a/resources/views/callcenter/indexnama.blade.php +++ b/resources/views/callcenter/indexnama.blade.php @@ -77,7 +77,7 @@
-
From cd0d93d8b724c9a5dc75e453c5a56bd9d97ada5d Mon Sep 17 00:00:00 2001 From: Nur Izzati Date: Sun, 17 Aug 2025 16:46:01 +0800 Subject: [PATCH 3/3] update latest --- app/Http/Controllers/CallCenterController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/CallCenterController.php b/app/Http/Controllers/CallCenterController.php index 1b90284..fe63b24 100644 --- a/app/Http/Controllers/CallCenterController.php +++ b/app/Http/Controllers/CallCenterController.php @@ -453,7 +453,7 @@ class CallCenterController extends Controller return redirect()->route('arcc.pilihpelanggan'); } - return redirect()->route('arcc.pelanggan')->with('failed', 'Maaf, Tiada Data Pelanggan...'); + return redirect()->route('arcc.pelanggannew')->with('failed', 'Maaf, Tiada Data Pelanggan...'); } // ======================