diff --git a/.envy b/.envy new file mode 100644 index 00000000..5c53f303 --- /dev/null +++ b/.envy @@ -0,0 +1,50 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY=base64:WRTHcFTq5YARKVdA8YDUzsh9Ue8vD63ivgZgXNNBiGo= +APP_DEBUG=true +APP_URL=http://ujrahkopkb.erahn.com.my +API_URL=http://apiujrah-kopkb.erahn.com.my +#API_ARRAHNBID=http://lelong.test/api/ + +LOG_CHANNEL=stack + +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_DATABASE=kaunter_erahn +DB_USERNAME=spider +DB_PASSWORD=G0dz!ll4 + +BROADCAST_DRIVER=pusher +CACHE_DRIVER=file +QUEUE_CONNECTION=sync +SESSION_DRIVER=file +SESSION_LIFETIME=120 + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +PUSHER_APP_ID=1132718 +PUSHER_APP_KEY=26b0ec2f297f94b7aa9b +PUSHER_APP_SECRET=421b61fb5a8ecce477a6 + +MAIL_MAILER=smtp +MAIL_HOST=smtp.mailtrap.io +MAIL_PORT=2525 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS=null +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= + +MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + +MYKAD_READER_PORT=8085 +MYKAD_READER_ENABLED_CAWANGAN='' # IF NO CAWANGAN STATED, ALL CAWANGAN IS ENABLED diff --git a/app/Console/Commands/updateImbangDuga.php b/app/Console/Commands/updateImbangDuga.php new file mode 100644 index 00000000..0af8bd6c --- /dev/null +++ b/app/Console/Commands/updateImbangDuga.php @@ -0,0 +1,81 @@ +option('all')){ + $zone = 'all'; + }else if($this->option('1')){ + $zone = '1'; + }else if ($this->option('2')){ + $zone = '2'; + }else if ($this->option('3')){ + $zone = '3'; + } + + $monthly = Carbon::now(); + $monthly = new Carbon(); + + $previousmonth = $monthly->subMonthsNoOverflow()->endOfMonth(); + $tahun = $previousmonth->year; + $month = $previousmonth->month; + + $response = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/reports/updateigall',[ + 'month' => $month, + 'year' => $tahun, + ]); + + if ($response->successful()) { + $data = $response->json(); + Log::info('Imbang Duga update successful', [ + 'month' => $month, + 'year' => $tahun, + 'data' => $data + ]); + $this->info('Imbang Duga update successful'); + } else { + Log::error('API error', [ + 'url' => $response->effectiveUri(), + 'status' => $response->status(), + 'body' => $response->body() + ]); + } + } +} diff --git a/app/Events/AutoSerahan.php b/app/Events/AutoSerahan.php new file mode 100644 index 00000000..a6186363 --- /dev/null +++ b/app/Events/AutoSerahan.php @@ -0,0 +1,36 @@ +pengesahan = $pengesahan; + $this->id = $id; + $this->cawangan = $cawangan; + $this->kodlaluan = $kodlaluan; + } + + public function broadcastOn() + { + return ['autoserahan-notice']; + } + + public function broadcastAs() + { + return 'autoserahan-event'; + } +} \ No newline at end of file diff --git a/app/Events/NotifikasiAnggota.php b/app/Events/NotifikasiAnggota.php new file mode 100644 index 00000000..64a1f25c --- /dev/null +++ b/app/Events/NotifikasiAnggota.php @@ -0,0 +1,46 @@ +nokp = $nokp; + $this->status = strtoupper($status); // pastikan huruf besar DILULUSKAN/DITOLAK + $this->komen = $komen; + $this->tagoperasi = $tagoperasi; + } + + public function broadcastOn() + { + return ['notice-anggota']; + } + + public function broadcastAs() + { + return 'my-anggota'; + } + + public function broadcastWith() + { + return [ + 'noic' => $this->nokp, + 'status' => $this->status, // ikut format API updateAnggota + 'komen' => $this->komen, + 'tagoperasi' => $this->tagoperasi, + ]; + } +} diff --git a/app/Events/NotifikasiKelulusan.php b/app/Events/NotifikasiKelulusan.php index 3bee0306..0c537192 100644 --- a/app/Events/NotifikasiKelulusan.php +++ b/app/Events/NotifikasiKelulusan.php @@ -11,15 +11,16 @@ class NotifikasiKelulusan implements ShouldBroadcast { use Dispatchable, InteractsWithSockets, SerializesModels; - public $norujukan,$kelulusan,$siri,$komen,$teller; + public $norujukan,$kelulusan,$siri,$komen,$teller,$tagoperasi; - public function __construct($norujukan,$kelulusan,$siri,$komen,$teller) + public function __construct($norujukan,$kelulusan,$siri,$komen,$teller,$tagoperasi = null) { $this->norujukan = $norujukan; $this->kelulusan = $kelulusan; $this->siri = $siri; $this->komen = $komen; $this->teller = $teller; + $this->tagoperasi = $tagoperasi; } public function broadcastOn() diff --git a/app/Http/Controllers/CallCenterController.php b/app/Http/Controllers/CallCenterController.php index f344853e..fe63b240 100644 --- a/app/Http/Controllers/CallCenterController.php +++ b/app/Http/Controllers/CallCenterController.php @@ -308,6 +308,16 @@ class CallCenterController extends Controller $bycawnotisperingatan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/arcc/bycawnotisperingatan/'.$kodcaw.'/'.$notisid)->json(); return view('callcenter.pdfbycawdetailnotisperingatan', compact('cawangan_info','bycawnotisperingatan','kodcaw','notisid','cawangan_detail','tarikh_cetak')); } + elseif($request->type == 'excel') + { + $current = Carbon::now(); + $current = new Carbon(); + $tarikh_cetak = $current->toDateString(); + $cawangan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/cawangan/detail/'.$kodcaw)->json(); + $cawangan_detail=$cawangan[0]; + $bycawnotisperingatan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/arcc/bycawnotisperingatan/'.$kodcaw.'/'.$notisid)->json(); + return view('callcenter.notisperingatanpertama_excel', compact('cawangan_info','bycawnotisperingatan','kodcaw','notisid','cawangan_detail','tarikh_cetak')); + } return view('callcenter.bycawdetailnotisperingatan',compact('cawangan_info','bycawnotisperingatan','kodcaw','notisid')); } @@ -327,7 +337,23 @@ class CallCenterController extends Controller } } - public function search(Request $request){ + 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; $idtype = $request->customerIDType; @@ -355,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.pelanggannew')->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.pelanggannew')->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'); @@ -372,6 +504,54 @@ class CallCenterController extends Controller return view('callcenter.' . $cawangan_info['version'] . '.info',compact('cawangan_info','api_url','customer_info','bakilelong','rugilelong','negeri')); } + + 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(); $api_url = config('api.url'); @@ -831,50 +1011,83 @@ class CallCenterController extends Controller { $auth_user = Auth::user(); - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/'. $request->norujukan)->json(); + $norujukan = $request->norujukan; + $gadai = Http::withOptions(['verify' => config('app.api_verify')]) + ->get(config('api.url') . '/api/gadai/norujukan/' . $norujukan) + ->json(); - if(sizeof($gadai) > 0) - { - $history = $gadai[0][0]['historygadaian']; - $dahtebus = $gadai[0][0]['sttebus']; - $norujukan = $gadai[0][0]['norujukan']; - - } - - $count = 0; $arrayhist = []; - while($history != "0" && $history != '' || $dahtebus == 'T') - { - if($history != "0" && $history != '') - { - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/'. $history)->json(); - $tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/'. $gadai[0][0]['kodcaw'],[ - "norujukan" => $history - ])->json(); + if (sizeof($gadai) > 0) { + $history = $gadai[0][0]['historygadaian']; + $dahtebus = $gadai[0][0]['sttebus']; + $kodcaw = $gadai[0][0]['kodcaw']; + // Kalau belum ada history, ambil rekod asal sahaja + if ($dahtebus == 'T') { + + $tebusList = Http::withOptions(['verify' => config('app.api_verify')]) + ->get(config('api.url') . '/api/listpenebusanhistory/' . $kodcaw, [ + 'norujukan' => $norujukan + ]) + ->json(); - if(sizeof($gadai) > 0) - { - if($history == $gadai[0][0]['historygadaian']) - $history = 0; - else{ - array_push($arrayhist,["tagbaru" => ((isset($gadai[0][0]['tagbaru'])) ? $gadai[0][0]['tagbaru'] : 0),"hargajualan" => ((isset($gadai[0][0]['hargajualan'])) ? $gadai[0][0]['hargajualan'] : ''), "pinjaman" => ((isset($tebus[0])) ? $tebus[0]['pinjaman'] : 0),"norujukan" => $history,"jenistebus" => ((isset($tebus[0])) ? $tebus[0]['jenistebus'] : 0),"jbg" => ((isset($tebus[0])) ? $tebus[0]['jbg'] : 0),"t_tebus" => ((isset($tebus[0])) ? $tebus[0]['t_tebus'] : 0)]); - $history = $gadai[0][0]['historygadaian']; + $tebus = collect($tebusList)->firstWhere('norujukan', $norujukan); + + $arrayhist[] = [ + "tagbaru" => $gadai[0][0]['tagbaru'] ?? 0, + "hargajualan" => $gadai[0][0]['hargajualan'] ?? '', + "pinjaman" => $tebus['pinjaman'] ?? 0, + "norujukan" => $norujukan, + "jenistebus" => $tebus['jenistebus'] ?? 0, + "jbg" => $tebus['jbg'] ?? 0, + "t_tebus" => $tebus['t_tebus'] ?? 0, + "bayaran_keuntungan" => $tebus['bayaran_keuntungan'] ?? 0, + "bayaran_pembiayaan" => $tebus['bayaran_pembiayaan'] ?? 0, + "duit_masuk" => $tebus['duit_masuk'] ?? 0, + "trans_type" => $tebus['trans_type'] ?? 0, + ]; + } else { + // Loop ke belakang (rekod lepas-lepas) + while ($history != "0" && $history != '') { + $prevGadai = Http::withOptions(['verify' => config('app.api_verify')]) + ->get(config('api.url') . '/api/gadai/norujukan/' . $history) + ->json(); + + $prevKodcaw = $prevGadai[0][0]['kodcaw'] ?? null; + + if (!$prevKodcaw) break; + + $tebusList = Http::withOptions(['verify' => config('app.api_verify')]) + ->get(config('api.url') . '/api/listpenebusanhistory/' . $prevKodcaw, [ + 'norujukan' => $history + ]) + ->json(); + + $tebus = collect($tebusList)->firstWhere('norujukan', $history); + + $arrayhist[] = [ + "tagbaru" => $prevGadai[0][0]['tagbaru'] ?? 0, + "hargajualan" => $prevGadai[0][0]['hargajualan'] ?? '', + "pinjaman" => $tebus['pinjaman'] ?? 0, + "norujukan" => $history, + "jenistebus" => $tebus['jenistebus'] ?? 0, + "jbg" => $tebus['jbg'] ?? 0, + "t_tebus" => $tebus['t_tebus'] ?? 0, + "bayaran_keuntungan" => $tebus['bayaran_keuntungan'] ?? 0, + "bayaran_pembiayaan" => $tebus['bayaran_pembiayaan'] ?? 0, + "duit_masuk" => $tebus['duit_masuk'] ?? 0, + "trans_type" => $tebus['trans_type'] ?? 0, + ]; + + $nextHistory = $prevGadai[0][0]['historygadaian'] ?? '0'; + + // Elakkan infinite loop + if ($nextHistory == $history) { + break; } + + $history = $nextHistory; } - - $count++; - - } - else{ - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/'. $norujukan)->json(); - $tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/'. $gadai[0][0]['kodcaw'],[ - "norujukan" => $norujukan - ])->json(); - - - array_push($arrayhist,["tagbaru" => ((isset($gadai[0][0]['tagbaru'])) ? $gadai[0][0]['tagbaru'] : 0), "hargajualan" => ((isset($gadai[0][0]['hargajualan'])) ? $gadai[0][0]['hargajualan'] : ''),"pinjaman" => ((isset($tebus[0])) ? $tebus[0]['pinjaman'] : 0),"norujukan" => $norujukan,"jenistebus" => ((isset($tebus[0])) ? $tebus[0]['jenistebus'] : 0),"jbg" => ((isset($tebus[0])) ? $tebus[0]['jbg'] : 0),"t_tebus" => ((isset($tebus[0])) ? $tebus[0]['t_tebus'] : 0)]); - break; } } @@ -923,4 +1136,242 @@ class CallCenterController extends Controller $pertambahpinjaman = 0.80; return view('callcenter.' . $cawangan_info['version'] . '.index',compact('cawangan_info','api_url','gadai','marhun','nama','nilaihargasemasa','pertambahpinjaman')); } + + + public function pilihPelanggan() + { + 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.pilihpelanggan', compact('cawangan_info')); + } + + + + public function pilihPelangganProceed(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.'); + } + + public function ajaxSearchCustomer(Request $request) + { + $search = strtolower($request->query('search', '')); + $customers = collect(session('customer_list', [])) + ->filter(function ($customer) use ($search) { + return strpos(strtolower($customer['nama']), $search) !== false || + strpos(strtolower($customer['nokp']), $search) !== false; + }); + + 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.pelanggannew')->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.pelanggannew')->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/app/Http/Controllers/CustomersController.php b/app/Http/Controllers/CustomersController.php index c5b978d0..40fee0c9 100644 --- a/app/Http/Controllers/CustomersController.php +++ b/app/Http/Controllers/CustomersController.php @@ -14,6 +14,7 @@ use Illuminate\Support\Facades\Auth; use Twilio\Rest\Client; use App\Komoditi; use App\Events\Dashboard\PelangganNotify; +use Illuminate\Support\Facades\Log; use Carbon\Carbon; @@ -24,7 +25,7 @@ class CustomersController extends Controller public function __construct() { $this->middleware('auth'); - $this->customerService = New CustomerService(); + $this->customerService = new CustomerService(); } /** * Display a listing of the resource. @@ -38,80 +39,241 @@ class CustomersController extends Controller $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(); + $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(); $pekerjaan = Http::withOptions(['verify' => config('app.api_verify')])->get($api_url . '/api/pekerjaan')->json(); $blacklist_search = false; - return view('customers.' . $cawangan_info['version'] . '.index',compact('search','blacklist_search','cawangan_info','bank','api_url','idtype','pekerjaan')); + return view('customers.' . $cawangan_info['version'] . '.index', compact('search', 'blacklist_search', 'cawangan_info', 'bank', 'api_url', 'idtype', 'pekerjaan')); } - public function info(Request $request){ + public function info(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(); - $customer_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/'. Session::get('noic'))->json(); - // dd($customer_info); - $pekerjaan = Http::withOptions(['verify' => config('app.api_verify')])->get($api_url . '/api/pekerjaan')->json(); + // 🔹 Panggil maklumat cawangan + $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/cawangan/' . $auth_user['cawangan']) + ->json(); + + // 🔹 Panggil maklumat pelanggan (customer) + $customer_info = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/customers/' . Session::get('noic')) + ->json(); + + // 🔹 Panggil maklumat pekerjaan + $pekerjaan = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/pekerjaan') + ->json(); + $komoditi = Komoditi::first(); $min_komoditi = $komoditi['min_komoditi']; - $bakilelong = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/bakilelong/cawangan/' . $auth_user['cawangan'] . '/' . Session::get('noic') . '/baki')->json(); - $rugilelong = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/bakilelong/cawangan/' . $auth_user['cawangan'] . '/' . Session::get('noic') . '/rugi')->json(); + // 🔹 Panggil baki lelong + $bakilelong = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/bakilelong/cawangan/' . $auth_user['cawangan'] . '/' . Session::get('noic') . '/baki') + ->json(); + // 🔹 Panggil rugi lelong + $rugilelong = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/bakilelong/cawangan/' . $auth_user['cawangan'] . '/' . Session::get('noic') . '/rugi') + ->json(); + + // 🔹 Reset session sementara $request->session()->forget('page_reload'); $request->session()->forget('norujukan'); - $customer_page = ($cawangan_info['version'] == 'v1') ? 'customers.v1.info' : 'customers.v2.info'; + $customer_page = ($cawangan_info['version'] == 'v1') + ? 'customers.v1.info' + : 'customers.v2.info'; + // Logik papar butang "Assign sebagai Anggota" + $showAssignAnggotaBtn = false; + $noic = Session::get('noic'); - if($request->tebus_auto_tawarruq_berjaya === 'true'){ + if (!empty($customer_info)) { + + $anggota_info = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/customer/anggota', [ + 'noic' => $noic + ]) + ->json(); + $isAnggotaExist = isset($anggota_info) && !empty($anggota_info) && !isset($anggota_info['message']); + + if ($isAnggotaExist && isset($customer_info['tag_anggota']) && $customer_info['tag_anggota'] == 0) { + $showAssignAnggotaBtn = true; + } + } + + $getApprovalError = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/getApproval', [ + 'kodcaw' => $auth_user['cawangan'], + 'teller' => $auth_user['name'], + ]) + ->json(); + + if ($request->tebus_auto_tawarruq_berjaya === 'true') { $request->session()->flash('activate_tab', 'SAG_baru'); } - return view($customer_page,compact('cawangan_info','api_url','customer_info','bakilelong','rugilelong','min_komoditi','pekerjaan')); + return view($customer_page, compact( + 'cawangan_info', + 'api_url', + 'customer_info', + 'bakilelong', + 'rugilelong', + 'min_komoditi', + 'pekerjaan', + 'getApprovalError', + 'showAssignAnggotaBtn' + )); } - public function search(Request $request){ - // dd($request->all()); + + public function search(Request $request) + { $noic = $request->noic; $idtype = $request->customerIDType; Session::put('noic', $noic); + $api_url = config('api.url'); $auth_user = Auth::user(); - $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(); - $customer_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/'. $noic)->json(); - $pekerjaan = Http::withOptions(['verify' => config('app.api_verify')])->get($api_url . '/api/pekerjaan')->json(); - $blacklist = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customer/blacklist',[ - 'nokp' => $noic - ])->json(); - // if($customers_info){ - // $customer_info = $customers_info[0]; - // }else{ - // $customer_info = $customers_info; - // } + // Dapatkan maklumat asas + $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/cawangan/' . $auth_user['cawangan']) + ->json(); + + $bank = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/bank') + ->json(); + + $customer_info = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/customers/' . $noic) + ->json(); + + $pekerjaan = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/pekerjaan') + ->json(); + + $blacklist = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/customer/blacklist', ['nokp' => $noic]) + ->json(); + + // Reset session lama $request->session()->forget('page_reload'); $request->session()->forget('norujukan'); + $blacklist_search = false; $search = true; - if($customer_info){ - if($blacklist){ + + // SEMAK STATUS ANGGOTA DAN PELANGGAN + $isAnggota = false; + $isPelanggan = false; + $isNewCustomer = false; + $showAssignAnggotaBtn = false; + $showDaftarPelangganBtn = false; + + // Semak dalam sistem anggota + $anggota_info = Http::withOptions(['verify' => config('app.api_verify')]) + ->get(config('api.url') . '/api/customer/anggota', [ + 'noic' => $noic + ]) + ->json(); + + // Semak betul-betul jika ada rekod anggota + if (!empty($anggota_info) && isset($anggota_info['data']) && !empty($anggota_info['data'])) { + $isAnggota = true; + } elseif (isset($anggota_info['noic']) && !empty($anggota_info['noic'])) { + $isAnggota = true; + } + + if ($customer_info && isset($customer_info['id'])) { + $isPelanggan = true; + } + + // Tentukan butang mana nak paparkan (logik diperbetulkan) + if ($isPelanggan && !$isAnggota) { + // Pelanggan dah berdaftar tapi bukan anggota koperasi + $showAssignAnggotaBtn = true; + } elseif ($isAnggota && !$isPelanggan) { + // Anggota koperasi tapi belum berdaftar sebagai pelanggan + $showDaftarPelangganBtn = true; + } elseif (!$isAnggota && !$isPelanggan) { + // Bukan anggota dan bukan pelanggan (pelanggan baru) + $showDaftarPelangganBtn = true; + $isNewCustomer = true; + } + + //Debug log untuk semak nilai sebenar + // Log::info('DEBUG CUSTOMER STATUS', [ + // 'noic' => $noic, + // 'isAnggota' => $isAnggota, + // 'isPelanggan' => $isPelanggan, + // 'isNewCustomer' => $isNewCustomer, + // 'showAssignAnggotaBtn' => $showAssignAnggotaBtn, + // 'showDaftarPelangganBtn' => $showDaftarPelangganBtn, + // ]); + + if ($customer_info) { + // Ada maklumat pelanggan + if ($blacklist) { $blacklist_search = true; - return view('customers.' . $cawangan_info['version'] .'.index',compact('blacklist_search','customer_info','search','noic','cawangan_info','bank','api_url','idtype')); - }else{ - Session::put('customer_info',$customer_info); - return redirect()->route('customer_info')->with( ['customer_info' => $customer_info,'cawangan_info'=>$cawangan_info,'api_url'=>$api_url]); + return view('customers.' . $cawangan_info['version'] . '.index', compact( + 'blacklist_search', + 'customer_info', + 'search', + 'noic', + 'cawangan_info', + 'bank', + 'api_url', + 'idtype', + 'isAnggota', + 'isPelanggan', + 'isNewCustomer', + 'showAssignAnggotaBtn', + 'showDaftarPelangganBtn', + 'auth_user' + )); + } else { + // Simpan dalam session & redirect ke paparan info pelanggan + Session::put('customer_info', $customer_info); + return redirect()->route('customer_info')->with([ + 'customer_info' => $customer_info, + 'cawangan_info' => $cawangan_info, + 'api_url' => $api_url, + 'isAnggota' => $isAnggota, + 'isPelanggan' => $isPelanggan, + 'isNewCustomer' => $isNewCustomer, + 'showAssignAnggotaBtn' => $showAssignAnggotaBtn, + 'showDaftarPelangganBtn' => $showDaftarPelangganBtn, + 'auth_user' => $auth_user + ]); } - }else{ - if($blacklist){ + } else { + // Tiada customer dalam sistem + if ($blacklist) { $blacklist_search = true; - return view('customers.' . $cawangan_info['version'] . '.index',compact('blacklist_search','customer_info','search','noic','cawangan_info','bank','api_url','idtype','pekerjaan')); - }else{ - return view('customers.' . $cawangan_info['version'] . '.index',compact('blacklist_search','customer_info','search','noic','cawangan_info','bank','api_url','idtype','pekerjaan')); } + + return view('customers.' . $cawangan_info['version'] . '.index', compact( + 'blacklist_search', + 'customer_info', + 'search', + 'noic', + 'cawangan_info', + 'bank', + 'api_url', + 'idtype', + 'pekerjaan', + 'isAnggota', + 'isPelanggan', + 'isNewCustomer', + 'showAssignAnggotaBtn', + 'showDaftarPelangganBtn', + 'auth_user' + )); } } @@ -119,9 +281,9 @@ class CustomersController extends Controller public function cari(Request $request) { $api_url = config('api.url'); - $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/'. $request->icno)->json(); + $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/' . $request->icno)->json(); - if(sizeof($customers_info) > 0) + if (sizeof($customers_info) > 0) return $customers_info; else return response(["no-data"], 200); @@ -145,60 +307,58 @@ class CustomersController extends Controller */ public function store(Request $request) { - if($request->idtype == 'nokp'){ + if ($request->idtype == 'nokp') { $nokpbaru = $request->noic; $nokplama = ''; - }elseif($request->idtype == 'passport'){ + } elseif ($request->idtype == 'passport') { $nokpbaru = ''; $nokplama = $request->noic; } - if($request->warganegara){ + if ($request->warganegara) { $warganegara = 'Y'; - }else{ + } else { $warganegara = 'N'; } - if($request->bumiputera){ + if ($request->bumiputera) { $bumiputera = 'Y'; - }else{ + } else { $bumiputera = 'N'; } - if($request->jantina == 'Lelaki'){ + if ($request->jantina == 'Lelaki') { $jantina = 'L'; - }elseif($request->jantina == 'Perempuan'){ + } elseif ($request->jantina == 'Perempuan') { $jantina = 'P'; } - $split_date = explode('/',$request->tarikh_lahir); + $split_date = explode('/', $request->tarikh_lahir); - $tarikh_lahir = $split_date[2].'-'.$split_date[1].'-'.$split_date[0]; + $tarikh_lahir = $split_date[2] . '-' . $split_date[1] . '-' . $split_date[0]; $tarikhlahir = Carbon::parse($tarikh_lahir); $auth_user = Auth::user(); $latest_customer = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/latest/' . $auth_user['cawangan'])->json(); - if($latest_customer == null){ + if ($latest_customer == null) { $nosiri_latest = 1; - } - else{ - $nosiri_latest = $latest_customer['nosiri']+1; + } else { + $nosiri_latest = $latest_customer['nosiri'] + 1; } $count = sprintf("%08d", $nosiri_latest); - $no_pelanggan = $request->bangsa . substr($request->noic,6,2).'-'.$count; + $no_pelanggan = $request->bangsa . substr($request->noic, 6, 2) . '-' . $count; $detail_poskod = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/poskod/' . $request->poskod)->json(); - if(empty($detail_poskod)){ + if (empty($detail_poskod)) { $detail_poskod = Http::withOptions(['verify' => config('app.api_verify')]) - ->post(config('api.url') . '/api/poskod', [ - 'poskod' => $request->poskod, - 'koddaerah' => $request->koddaerah, - 'kodnegeri' => $request->kodnegeri, - 'user' => auth()->user(), - ])->json(); - + ->post(config('api.url') . '/api/poskod', [ + 'poskod' => $request->poskod, + 'koddaerah' => $request->koddaerah, + 'kodnegeri' => $request->kodnegeri, + 'user' => auth()->user(), + ])->json(); } - $customer_info = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url') . '/api/customers/create/'. $auth_user['cawangan'],[ + $customer_info = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url') . '/api/customers/create/' . $auth_user['cawangan'], [ 'kodcaw' => $auth_user['cawangan'], 'nopelanggan' => $no_pelanggan, 'nokpbaru' => $nokpbaru, @@ -220,60 +380,117 @@ class CustomersController extends Controller 'teller' => $auth_user['name'], 'telefon2' => $request->alternate_phone, 'nosiri' => $nosiri_latest, - 'nota'=>$request->nota, - 'kodkerja'=>$request->pekerjaan, - 'nota_pekerjaan'=>$request->nota_pekerjaan, - 'tujuangadai'=>$request->tujuan_gadai, + 'nota' => $request->nota, + 'kodkerja' => $request->pekerjaan, + 'nota_pekerjaan' => $request->nota_pekerjaan, + 'notaarcc' => $request->notaarcc, + 'tujuangadai' => $request->tujuan_gadai, ]); Session::put('customer_info', $customer_info); Session::put('noic', $request->noic); - event(new PelangganNotify('lulus',$auth_user['cawangan'])); - return redirect()->route('customer_info')->with( ['customer_info' => $customer_info] ); + event(new PelangganNotify('lulus', $auth_user['cawangan'])); + return redirect()->route('customer_info')->with(['customer_info' => $customer_info]); } - public function getOTP(Request $request){ + public function getOTP(Request $request) + { $auth_user = Auth::user(); $expired = Carbon::now(); $expired = new Carbon(); $expired = $expired->addHours(24); $currentDateTime = Carbon::now(); - $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json(); + $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); $nama_cawangan = $cawangan_info["details_caw"]; $nokp = $request->noic_otp; - $customer = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/customers/'.$nokp)->json(); - $recipient = '6'.$customer['telefon']; + $customer = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/' . $nokp)->json(); + $recipient = '6' . $customer['telefon']; // $recipient = '60189025461'; //pembinaan token - function token($length) { + function token($length) + { $characters = array( - "A","B","C","D","E","F","G","H","J","K","L","M", - "N","P","Q","R","S","T","U","V","W","X","Y","Z", - "a","b","c","d","e","f","g","h","i","j","k","m", - "n","o","p","q","r","s","t","u","v","w","x","y","z", - "1","2","3","4","5","6","7","8","9"); + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "J", + "K", + "L", + "M", + "N", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ); if ($length < 0 || $length > count($characters)) return null; shuffle($characters); return implode("", array_slice($characters, 0, $length)); } - $otp_token = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/otp/' . $nokp) ->json(); - $otp_token_used = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/otp/used/' . $nokp) ->json(); + $otp_token = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/otp/' . $nokp)->json(); + $otp_token_used = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/otp/used/' . $nokp)->json(); - if (is_array($otp_token) || is_object($otp_token)){ - if($otp_token){ + if (is_array($otp_token) || is_object($otp_token)) { + if ($otp_token) { return response(['error' => "OTP Akaun Telah Di Jana"]); - }else{ - if (is_array($otp_token_used) || is_object($otp_token_used)){ - if($otp_token_used){ + } else { + if (is_array($otp_token_used) || is_object($otp_token_used)) { + if ($otp_token_used) { return response(['error' => "Pelanggan Sudah Mendaftar Pada Customer Portal"]); - }else{ + } else { $random = token(6); - $otp_baru = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url'). '/api/otp/generateotp/' . $nokp,[ + $otp_baru = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url') . '/api/otp/generateotp/' . $nokp, [ 'otptoken' => $random, 'expired' => $expired, 'kodcaw' => $auth_user['cawangan'] @@ -281,12 +498,12 @@ class CustomersController extends Controller // $message = "Your OTP code is " . $random; $message = 'AR-RAHN PKB ' . $nama_cawangan . ' : OTP: ' . $random . ' ' . $currentDateTime . '. AR-RAHN CARELINE CENTRE 1300-22-4343'; $this->sendWhatsAppMessage($message, $recipient); - return response()->json(['otp'=>$random]); + return response()->json(['otp' => $random]); } - }else{ + } else { $random = token(6); - $otp_baru = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url'). '/api/otp/generateotp/' . $nokp,[ + $otp_baru = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url') . '/api/otp/generateotp/' . $nokp, [ 'otptoken' => $random, 'expired' => $expired, 'kodcaw' => $auth_user['cawangan'] @@ -294,17 +511,17 @@ class CustomersController extends Controller // $message = "Your OTP code is " . $random; $message = 'AR-RAHN PKB ' . $nama_cawangan . ' : OTP: ' . $random . ' ' . $currentDateTime . '. AR-RAHN CARELINE CENTRE 1300-22-4343'; $this->sendWhatsAppMessage($message, $recipient); - return response()->json(['otp'=>$random]); + return response()->json(['otp' => $random]); } } - }else{ - if (is_array($otp_token_used) || is_object($otp_token_used)){ - if($otp_token_used){ + } else { + if (is_array($otp_token_used) || is_object($otp_token_used)) { + if ($otp_token_used) { return response(['error' => "Pelanggan Sudah Mendaftar Pada Customer Portal"]); - }else{ + } else { $random = token(6); - $otp_baru = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url'). '/api/otp/generateotp/' . $nokp,[ + $otp_baru = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url') . '/api/otp/generateotp/' . $nokp, [ 'otptoken' => $random, 'expired' => $expired, 'kodcaw' => $auth_user['cawangan'] @@ -312,12 +529,12 @@ class CustomersController extends Controller // $message = "Your OTP code is " . $random; $message = 'AR-RAHN PKB ' . $nama_cawangan . ' : OTP: ' . $random . ' ' . $currentDateTime . '. AR-RAHN CARELINE CENTRE 1300-22-4343'; $this->sendWhatsAppMessage($message, $recipient); - return response()->json(['otp'=>$random]); + return response()->json(['otp' => $random]); } - }else{ + } else { $random = token(6); - $otp_baru = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url'). '/api/otp/generateotp/' . $nokp,[ + $otp_baru = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url') . '/api/otp/generateotp/' . $nokp, [ 'otptoken' => $random, 'expired' => $expired, 'kodcaw' => $auth_user['cawangan'] @@ -325,23 +542,36 @@ class CustomersController extends Controller // $message = "Your OTP code is " . $random; $message = 'AR-RAHN PKB ' . $nama_cawangan . ' : OTP: ' . $random . ' ' . $currentDateTime . '. AR-RAHN CARELINE CENTRE 1300-22-4343'; $this->sendWhatsAppMessage($message, $recipient); - return response()->json(['otp'=>$random]); + return response()->json(['otp' => $random]); } } } public function sendWhatsAppMessage(string $message, string $recipient) { - $status = Http::withOptions(['verify' => config('app.api_verify')])->get('http://gateway.onewaysms.com.my:10001/api.aspx',[ + $status = Http::withOptions(['verify' => config('app.api_verify')])->get('http://gateway.onewaysms.com.my:10001/api.aspx', [ 'apiusername' => 'APIUK330HDAFO', 'apipassword' => 'APIUK330HDAFOUK330', 'senderid' => 'INFO', 'mobileno' => $recipient, - 'message'=> $message, - 'languagetype'=> 1 + 'message' => $message, + 'languagetype' => 1 ]); return ($status); } + public function assignAnggota(Request $request) + { + $noic = $request->noic; + + $response = Http::withOptions(['verify' => config('app.api_verify')]) + ->put(config('api.url') . '/api/customers/' . $noic . '/assign-anggota'); + + if ($response->successful()) { + return redirect()->back()->with('success', 'Pelanggan berjaya ditandakan sebagai anggota koperasi.'); + } else { + return redirect()->back()->with('error', 'Gagal mengemaskini status anggota. Sila cuba semula.'); + } + } } diff --git a/app/Http/Controllers/GadaianController.php b/app/Http/Controllers/GadaianController.php index e45f110b..e99391e0 100644 --- a/app/Http/Controllers/GadaianController.php +++ b/app/Http/Controllers/GadaianController.php @@ -18,6 +18,8 @@ use Carbon\Carbon; use App\Http\Controllers\AliranTunaiController; use App\User; +use Illuminate\Support\Facades\Log; + class GadaianController extends Controller { public $AliranTunaiController; @@ -26,61 +28,62 @@ class GadaianController extends Controller public function __construct() { $this->middleware('auth'); - $this->customerService = New CustomerService(); - $this->AliranTunaiController = New AliranTunaiController(); + $this->customerService = new CustomerService(); + $this->AliranTunaiController = new AliranTunaiController(); } - public function index(Request $request){ + public function index(Request $request) + { $api_url = config('api.url'); $current = Carbon::now(); $current = new Carbon(); - $curent_year = substr($current->year,2,2); + $curent_year = substr($current->year, 2, 2); $curent_month = sprintf("%02d", $current->month); $current_day = sprintf("%02d", $current->day); $noic = $request->noic; - $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/'. $noic)->json(); + $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/' . $noic)->json(); $customer_info = $customers_info; $limit_pinjaman_semasa = 0; $auth_user = Auth::user(); - if($request->session()->get('page_reload') == null){ - $gadai_transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/'. $auth_user['cawangan'] . '/' . $current->toDateString())->json(); - if($gadai_transaction){ + if ($request->session()->get('page_reload') == null) { + $gadai_transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/' . $auth_user['cawangan'] . '/' . $current->toDateString())->json(); + if ($gadai_transaction) { $new_sirig = $gadai_transaction['sirig'] + 1; - }else{ + } else { $new_sirig = 1; } - $new_transaction = sprintf("%04d",$new_sirig); - $norujukan = strtoupper($auth_user['cawangan']) . $curent_year . $curent_month . $current_day . '-' .$new_transaction; - Session::put('norujukan',$norujukan); - Session::put('nokp',$noic); - Session::put('nopelanggan',$customer_info['nopelanggan']); - Session::put('page_reload',true); - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url').'/api/gadai/'.$auth_user['cawangan'],[ + $new_transaction = sprintf("%04d", $new_sirig); + $norujukan = strtoupper($auth_user['cawangan']) . $curent_year . $curent_month . $current_day . '-' . $new_transaction; + Session::put('norujukan', $norujukan); + Session::put('nokp', $noic); + Session::put('nopelanggan', $customer_info['nopelanggan']); + Session::put('page_reload', true); + $gadai = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url') . '/api/gadai/' . $auth_user['cawangan'], [ 'norujukan' => $norujukan, 'nopelanggan' => $customer_info['nopelanggan'], 'nokp' => $noic, 'sirig' => $new_sirig ]); - }else{ + } else { $norujukan = Session::get('norujukan'); $nokp = Session::get('nokp'); $nopelanggan = Session::get('nopelanggan'); - $gadai_session = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/check/sag',['kodcaw'=>$auth_user['cawangan'],'norujukan'=>$norujukan,'nokp'=>$nokp])->json(); - if($gadai_session == null){ - $gadai_transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/'. $auth_user['cawangan'] . '/' . $current->toDateString())->json(); - if($gadai_transaction){ + $gadai_session = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/check/sag', ['kodcaw' => $auth_user['cawangan'], 'norujukan' => $norujukan, 'nokp' => $nokp])->json(); + if ($gadai_session == null) { + $gadai_transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/' . $auth_user['cawangan'] . '/' . $current->toDateString())->json(); + if ($gadai_transaction) { $new_sirig = $gadai_transaction['sirig'] + 1; - }else{ + } else { $new_sirig = 1; } - $new_transaction = sprintf("%04d",$new_sirig); - $norujukan_baru = strtoupper($auth_user['cawangan']) . $curent_year . $curent_month . $current_day . '-' .$new_transaction; - Session::put('norujukan',$norujukan_baru); - Session::put('nokp',$nokp); - Session::put('nopelanggan',$nopelanggan); - Session::put('page_reload',true); - $gadai_baru = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url') .'/api/gadai/'.$auth_user['cawangan'],[ + $new_transaction = sprintf("%04d", $new_sirig); + $norujukan_baru = strtoupper($auth_user['cawangan']) . $curent_year . $curent_month . $current_day . '-' . $new_transaction; + Session::put('norujukan', $norujukan_baru); + Session::put('nokp', $nokp); + Session::put('nopelanggan', $nopelanggan); + Session::put('page_reload', true); + $gadai_baru = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url') . '/api/gadai/' . $auth_user['cawangan'], [ 'norujukan' => $norujukan_baru, 'nopelanggan' => $nopelanggan, 'nokp' => $nokp, @@ -91,57 +94,60 @@ class GadaianController extends Controller } - $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json(); - return view('gadaian.' . $cawangan_info['version'] . '.index',compact('customer_info','limit_pinjaman_semasa','cawangan_info','norujukan','api_url','current')); + $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); + return view('gadaian.' . $cawangan_info['version'] . '.index', compact('customer_info', 'limit_pinjaman_semasa', 'cawangan_info', 'norujukan', 'api_url', 'current')); } - public function edit(Request $request,$norujukan){ + public function edit(Request $request, $norujukan) + { $api_url = config('api.url'); $current = Carbon::now(); $current = new Carbon(); - $curent_year = substr($current->year,2,2); + $curent_year = substr($current->year, 2, 2); $curent_month = sprintf("%02d", $current->month); $current_day = sprintf("%02d", $current->day); // dd($current_day); - $gadaiannorujukan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/'. $norujukan)->json(); + $gadaiannorujukan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $norujukan)->json(); - if(sizeof($gadaiannorujukan) != 0) + if (sizeof($gadaiannorujukan) != 0) $gadaiannorujukan = $gadaiannorujukan[0][0]; $noic = $request->noic; - $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/'. $gadaiannorujukan['nokp'])->json(); + $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/' . $gadaiannorujukan['nokp'])->json(); $customer_info = $customers_info; $limit_pinjaman_semasa = 0; $auth_user = Auth::user(); - $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json(); - return view('gadaian.' . $cawangan_info['version'] . '.edit',compact('customer_info','gadaiannorujukan','limit_pinjaman_semasa','cawangan_info','norujukan','api_url')); + $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); + return view('gadaian.' . $cawangan_info['version'] . '.edit', compact('customer_info', 'gadaiannorujukan', 'limit_pinjaman_semasa', 'cawangan_info', 'norujukan', 'api_url')); } - public function editmarhun(Request $request){ + public function editmarhun(Request $request) + { $api_url = config('api.url'); $auth_user = Auth::user(); - $gadaiannorujukan = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/gadai/edit/marhun/'. $auth_user['cawangan'] . '/' . $request->norujukan,[ + $gadaiannorujukan = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/gadai/edit/marhun/' . $auth_user['cawangan'] . '/' . $request->norujukan, [ "recno" => $request->recno ])->json(); return $gadaiannorujukan; } - public function ubahmarhun(Request $request){ + public function ubahmarhun(Request $request) + { $api_url = config('api.url'); $auth_user = Auth::user(); - $gadaiannorujukan = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/gadai/ubah/marhun/'. $auth_user['cawangan'] . '/' . $request->norujukedit,[ + $gadaiannorujukan = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/gadai/ubah/marhun/' . $auth_user['cawangan'] . '/' . $request->norujukedit, [ 'recno' => $request->recno, 'karat' => $request->sltkarat, 'berat' => $request->berat, @@ -153,15 +159,19 @@ class GadaianController extends Controller return redirect()->back(); } - public function store(Request $request){ + public function store(Request $request) + { $auth_user = Auth::user(); //$total_nilai_marhun = $request->total_nilai_marhun; //need to get total nilai marhun by api get from table marhun - $marhun = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/marhun/gadai/'. $auth_user['cawangan'] .'/'. $request->norujukan_gadai)->json(); + + //Log::info('[DEBUG-GADAI] Request Input Data', $request->all()); + + $marhun = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/marhun/gadai/' . $auth_user['cawangan'] . '/' . $request->norujukan_gadai)->json(); $total_nilai_marhun = $marhun; - $total_nilai_marhun = str_replace(',','',$total_nilai_marhun); + $total_nilai_marhun = str_replace(',', '', $total_nilai_marhun); $keuntungan_sebln = $request->keuntungan_sebulan; - $keuntungan_sebln = str_replace(',','',$keuntungan_sebln); + $keuntungan_sebln = str_replace(',', '', $keuntungan_sebln); $onepercent = $request->onepercent; $ujrah = $request->ujrah; @@ -171,7 +181,8 @@ class GadaianController extends Controller $keuntungan12bulan = $keuntungan_sebln * 12; $hargajualan = $request->pinjaman + $keuntungan12bulan; - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url').'/api/gadai/norujukan/'. $auth_user['cawangan'] .'/' . $request->norujukan_gadai,[ + //Log::info('DEBUG NOKP:' . $request->nokp); + $gadai = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/gadai/norujukan/' . $auth_user['cawangan'] . '/' . $request->norujukan_gadai, [ 'kodcaw' => $auth_user['cawangan'], 'nilaimarhun' => round($total_nilai_marhun, 2), 'berat' => round($request->total_berat, 2), @@ -179,7 +190,7 @@ class GadaianController extends Controller 'kadarupah' => round($kadarupah, 2), 'marhun' => $request->marhun_detail, 'percentpinj' => $margin_pinjaman, - 'teller'=> $auth_user['name'], + 'teller' => $auth_user['name'], 'upah6' => $keuntungan6bulan, 'upah12' => $keuntungan12bulan, 'hargajualan' => $hargajualan, @@ -189,21 +200,22 @@ class GadaianController extends Controller 'ujrah' => $ujrah, 'onepercent' => $onepercent, 'margin_semasa' => $margin_pinjaman, + 'nokp' => $request->nokp, 'kadar_rebate' => $request->kadar_rebate, 'rebate' => $request->rebate ])->json(); - $komuditi = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url').'/api/komuditi/transaksi',[ + $komuditi = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/komuditi/transaksi', [ 'unit_komuditi' => round($request->pinjaman, 2), 'norujukan' => $request->norujukan_gadai, 'kodcaw' => $auth_user['cawangan'], 'teller' => $auth_user['name'] ]); - $this->AliranTunaiController->alirantunaiGadai($request,$auth_user['name']); + $this->AliranTunaiController->alirantunaiGadai($request, $auth_user['name']); - event(new GadaiNotify('lulus',$auth_user['cawangan'])); + event(new GadaiNotify('lulus', $auth_user['cawangan'])); $request->session()->forget('page_reload'); $request->session()->forget('norujukan'); @@ -212,13 +224,14 @@ class GadaianController extends Controller return redirect()->route('customer_info'); } - public function editstore(Request $request){ + public function editstore(Request $request) + { $auth_user = Auth::user(); $total_nilai_marhun = $request->total_nilai_marhun; - $total_nilai_marhun = str_replace(',','',$total_nilai_marhun); + $total_nilai_marhun = str_replace(',', '', $total_nilai_marhun); $keuntungan_sebln = $request->keuntungan_sebulan; - $keuntungan_sebln = str_replace(',','',$keuntungan_sebln); + $keuntungan_sebln = str_replace(',', '', $keuntungan_sebln); $onepercent = $request->onepercent; $ujrah = $request->ujrah; @@ -228,7 +241,7 @@ class GadaianController extends Controller $keuntungan6bulan = $keuntungan_sebln * 6; $keuntungan12bulan = $keuntungan_sebln * 12; $hargajualan = $request->pinjaman + $keuntungan12bulan; - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url').'/api/gadai/norujukan/'. $auth_user['cawangan'] .'/' . $request->norujukan_gadai,[ + $gadai = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/gadai/norujukan/' . $auth_user['cawangan'] . '/' . $request->norujukan_gadai, [ 'kodcaw' => $auth_user['cawangan'], 'nilaimarhun' => round($total_nilai_marhun, 2), 'berat' => round($request->total_berat, 2), @@ -236,7 +249,7 @@ class GadaianController extends Controller 'kadarupah' => round($kadarupah, 2), 'marhun' => $request->marhun_detail, 'percentpinj' => $margin_pinjaman, - 'teller'=> $auth_user['name'], + 'teller' => $auth_user['name'], 'upah6' => $keuntungan6bulan, 'upah12' => $keuntungan12bulan, 'hargajualan' => $hargajualan, @@ -247,29 +260,31 @@ class GadaianController extends Controller 'onepercent' => $onepercent, 'margin_semasa' => $margin_pinjaman, ])->json(); - $update_komuditi = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url').'/api/komuditi/update',[ + $update_komuditi = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/komuditi/update', [ 'unit_komuditi' => round($request->pinjaman, 2), 'norujukan' => $request->norujukan_gadai ])->json(); - event(new GadaiNotify('lulus',$auth_user['cawangan'])); + event(new GadaiNotify('lulus', $auth_user['cawangan'])); $request->session()->forget('page_reload'); $request->session()->forget('norujukan'); return redirect()->route('customer_info'); } - public function batal(Request $request){ + public function batal(Request $request) + { $norujukan = $request->norujukan; $auth_user = Auth::user(); - Http::withOptions(['verify' => config('app.api_verify')])->delete(config('api.url').'/api/gadai/batal/'. $auth_user['cawangan'] .'/' . $norujukan); + Http::withOptions(['verify' => config('app.api_verify')])->delete(config('api.url') . '/api/gadai/batal/' . $auth_user['cawangan'] . '/' . $norujukan); $request->session()->forget('page_reload'); $request->session()->forget('norujukan'); return redirect()->route('customer_info'); } - public function batalmarhun(Request $request){ + public function batalmarhun(Request $request) + { $norujukan = $request->norujukan; $auth_user = Auth::user(); @@ -280,74 +295,75 @@ class GadaianController extends Controller // return redirect()->route('customer_info'); } - public function cetakSAG(Request $request){ + public function cetakSAG(Request $request) + { $auth_user = Auth::user(); - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url').'/api/gadai/norujukan/cetak/'.$auth_user['cawangan'].'/'.$request->norujukan_modal); + $gadai = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/gadai/norujukan/cetak/' . $auth_user['cawangan'] . '/' . $request->norujukan_modal); return redirect()->route('home'); } - public function serahMarhun(Request $request){ + public function serahMarhun(Request $request) + { $auth_user = Auth::user(); $norujukan_serah = $request->norujukanpilih; - $arraynorujukan = explode(",",$norujukan_serah); + $arraynorujukan = explode(",", $norujukan_serah); - $results=array_search("",$arraynorujukan,true); - if($results !== false) { + $results = array_search("", $arraynorujukan, true); + if ($results !== false) { unset($arraynorujukan[$results]); } - foreach($arraynorujukan as $index=>$norujukan){ - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url'). '/api/gadai/norujukan/serah/'. $auth_user['cawangan'] .'/'. $norujukan); + foreach ($arraynorujukan as $index => $norujukan) { + $gadai = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/gadai/norujukan/serah/' . $auth_user['cawangan'] . '/' . $norujukan); - if($gadai->failed()){ + if ($gadai->failed()) { break; } } - event(new SerahanPenilai($auth_user['cawangan'],"LULUS")); + event(new SerahanPenilai($auth_user['cawangan'], "LULUS")); return redirect()->route('home'); } - public function printSAG(Request $request){ + public function printSAG(Request $request) + { $norujukan = $request->norujukan_modal; $auth_user = Auth::user(); $auth_username = $auth_user['name']; $kodcaw = $auth_user['cawangan']; $api_url = config('api.url'); - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/'. $auth_user['cawangan'] .'/' .$norujukan)->json(); + $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $auth_user['cawangan'] . '/' . $norujukan)->json(); $gadai_detail = $gadai[0]; - if(isset($request->jenisprint)) - { - - $cetak_sag = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url').'/api/gadai/norujukan/cetak/'.$auth_user['cawangan'].'/'.$norujukan,[ - 'penilai' => $auth_user['name'] - ]); + if (isset($request->jenisprint)) { + $cetak_sag = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/gadai/norujukan/cetak/' . $auth_user['cawangan'] . '/' . $norujukan, [ + 'penilai' => $auth_user['name'] + ]); } - - $kakitangan = User::where([['role_harian','khazanah'],['cawangan',$kodcaw]])->first(); + + $kakitangan = User::where([['role_harian', 'khazanah'], ['cawangan', $kodcaw]])->first(); // dd($kakitangan); - - $customer = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/'. $gadai_detail['nokp'])->json(); + + $customer = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/' . $gadai_detail['nokp'])->json(); $customer_detail = $customer; - $marhun = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/marhun/'. $norujukan)->json(); + $marhun = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/marhun/' . $norujukan)->json(); $marhun_detail = $marhun[0]; - $mutu = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/marhun/mutu/sag',[ + $mutu = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/marhun/mutu/sag', [ 'kodcaw' => $auth_user['cawangan'], 'norujukan' => $norujukan ])->json(); // dd($mutu); - $cawangan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/detail/'. $auth_user['cawangan'])->json(); + $cawangan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/detail/' . $auth_user['cawangan'])->json(); $cawangan_detail = $cawangan[0]; @@ -359,17 +375,17 @@ class GadaianController extends Controller $pembayaran_segera = "https://pay.arrahn.com.my"; $komoditi = Http::withOptions(['verify' => config('app.api_verify')]) - ->get($api_url . '/api/komuditi/check') - ->json(); + ->get($api_url . '/api/komuditi/check') + ->json(); $product = Http::withOptions(['verify' => config('app.api_verify')]) - ->get($api_url . '/api/komuditi/description', ['kodproduk' => $komoditi['kodproduct']]) - ->json(); + ->get($api_url . '/api/komuditi/description', ['kodproduk' => $komoditi['kodproduct']]) + ->json(); $kuantiti = $gadai_detail['pinjaman'] / $komoditi['nilai']; if ($gadai_detail['tagbaru'] == 1) { - return view('print.sag_ujrah_3', compact('komoditi', 'product', 'kuantiti', 'gadai_detail', 'customer_detail', 'marhun_detail', 'cawangan_detail', 'api_url', 'pembayaran_segera', 'auth_username', 'mutu', 'kadar_ujrah','kakitangan')); + return view('print.sag_ujrah_3', compact('komoditi', 'product', 'kuantiti', 'gadai_detail', 'customer_detail', 'marhun_detail', 'cawangan_detail', 'api_url', 'pembayaran_segera', 'auth_username', 'mutu', 'kadar_ujrah', 'kakitangan')); } else { - return view('print.sag', compact('gadai_detail', 'customer_detail', 'marhun_detail', 'cawangan_detail', 'api_url', 'pembayaran_segera', 'auth_username', 'mutu','kakitangan')); + return view('print.sag', compact('gadai_detail', 'customer_detail', 'marhun_detail', 'cawangan_detail', 'api_url', 'pembayaran_segera', 'auth_username', 'mutu', 'kakitangan')); } } @@ -378,30 +394,32 @@ class GadaianController extends Controller $auth_user = Auth::user(); $totaltransaction = 0; - $transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/id/'. $id)->json(); + $transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/id/' . $id)->json(); - if(sizeof($transaction) != 0) + $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); + + if (sizeof($transaction) != 0) $transaction = $transaction[0]; - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/'. $transaction['norujukan'])->json(); + $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $transaction['norujukan'])->json(); - if(sizeof($gadai) != 0) + if (sizeof($gadai) != 0) $gadai = $gadai[0][0]; - $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/'. $gadai['nokp'])->json(); + $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/' . $gadai['nokp'])->json(); // if(sizeof($customers_info) != 0) // $customers_info = $customers_info[0]; $wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getwakil/' . $auth_user['cawangan'] . '/code/' . $transaction['nowakil'])->json(); - if(sizeof($wakil) != 0) + if (sizeof($wakil) != 0) $wakil = $wakil[0]; - if($gadai['tagbaru'] == 1) { - return view('print.resitansuran_ujrah',compact('transaction','gadai','customers_info','wakil')); + if ($gadai['tagbaru'] == 1) { + return view('print.resitansuran_ujrah', compact('transaction', 'gadai', 'customers_info', 'wakil', 'cawangan_info')); } else { - return view('print.resitansuran',compact('transaction','gadai','customers_info','wakil')); + return view('print.resitansuran', compact('transaction', 'gadai', 'customers_info', 'wakil', 'cawangan_info')); // return view('print.resittebus',compact('transaction','gadai','cawangan_info','customers_info','penebusan','wakil','totaltransaction','totalBayaranAnsuran')); } } @@ -411,30 +429,30 @@ class GadaianController extends Controller $auth_user = Auth::user(); $totaltransaction = 0; - $transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/one/'. $id)->json(); + $transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/one/' . $id)->json(); + $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); + $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $id)->json(); - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/'. $id)->json(); - - if(sizeof($gadai) != 0) + if (sizeof($gadai) != 0) $gadai = $gadai[0][0]; - $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/'. $gadai['nokp'])->json(); + $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/' . $gadai['nokp'])->json(); // if(sizeof($customers_info) != 0) // $customers_info = $customers_info[0]; - $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json(); + $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); $wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getwakil/' . $auth_user['cawangan'] . '/code/' . $transaction['nowakil'])->json(); - if(sizeof($wakil) != 0) + if (sizeof($wakil) != 0) $wakil = $wakil[0]; - if($gadai['tagbaru'] == 1) { - return view('print.resitansuran_ujrah',compact('transaction','gadai','customers_info','wakil')); + if ($gadai['tagbaru'] == 1) { + return view('print.resitansuran_ujrah', compact('transaction', 'gadai', 'customers_info', 'wakil', 'cawangan_info')); } else { - return view('print.resitansuran',compact('transaction','gadai','customers_info','wakil')); + return view('print.resitansuran', compact('transaction', 'gadai', 'customers_info', 'wakil', 'cawangan_info')); // return view('print.resittebus',compact('transaction','gadai','cawangan_info','customers_info','penebusan','wakil','totaltransaction','totalBayaranAnsuran')); } } @@ -448,28 +466,28 @@ class GadaianController extends Controller // if(sizeof($transaction) != 0) // $transaction = $transaction[0]; - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/'. $id)->json(); + $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $id)->json(); - if(sizeof($gadai) != 0) + if (sizeof($gadai) != 0) $gadai = $gadai[0][0]; - $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/'. $gadai['nokp'])->json(); + $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/' . $gadai['nokp'])->json(); // if(sizeof($customers_info) != 0) // $customers_info = $customers_info[0]; - $penebusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/' . $auth_user['cawangan'],[ "norujukan" => $id])->json(); + $penebusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/' . $auth_user['cawangan'], ["norujukan" => $id])->json(); - if(sizeof($penebusan) != 0) + if (sizeof($penebusan) != 0) $penebusan = $penebusan[0]; $wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getwakil/' . $auth_user['cawangan'] . '/code/' . $penebusan['nowakil'])->json(); // dd($wakil); - if(sizeof($wakil) != 0) + if (sizeof($wakil) != 0) $wakil = $wakil[0]; - return view('print.resitansuransebelum',compact('gadai','customers_info','wakil','penebusan')); + return view('print.resitansuransebelum', compact('gadai', 'customers_info', 'wakil', 'penebusan')); } public function resittebusseparuh($id) @@ -477,44 +495,43 @@ class GadaianController extends Controller $auth_user = Auth::user(); - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/'. $id)->json(); - $transaction_tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/one/'. $id)->json(); + $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $id)->json(); + $transaction_tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/one/' . $id)->json(); $totaltransaction = 0; - $transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/'. $id)->json(); + $transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/' . $id)->json(); - foreach($transaction as $trans) - { - $totaltransaction += $trans['duit_masuk']; + foreach ($transaction as $trans) { + $totaltransaction += $trans['duit_masuk']; } - if(sizeof($gadai) != 0) + if (sizeof($gadai) != 0) $gadai = $gadai[0][0]; - $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/'. $gadai['nokp'])->json(); + $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/' . $gadai['nokp'])->json(); // if(sizeof($customers_info) != 0) // $customers_info = $customers_info[0]; - $penebusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/' . $auth_user['cawangan'],[ "norujukan" => $id])->json(); + $penebusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/' . $auth_user['cawangan'], ["norujukan" => $id])->json(); - if(sizeof($penebusan) != 0) + if (sizeof($penebusan) != 0) $penebusan = $penebusan[0]; $wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getwakil/' . $auth_user['cawangan'] . '/code/' . $penebusan['nowakil'])->json(); // dd($wakil); - if(sizeof($wakil) != 0) + if (sizeof($wakil) != 0) $wakil = $wakil[0]; - $totalBayaranAnsuran = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/norujukan/total/ansuran',['norujukan'=>$id])->json(); + $totalBayaranAnsuran = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/norujukan/total/ansuran', ['norujukan' => $id])->json(); $khazanah_user = User::where('role_harian', 'khazanah')->where('cawangan', $auth_user['cawangan'])->select('name')->first(); - $totalrebate = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/reports/totalrebate',['norujukan'=>$id])->json(); - + $totalrebate = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/reports/totalrebate', ['norujukan' => $id])->json(); - return view('print.resit.tebus_separuh',compact('totalrebate','khazanah_user','totalBayaranAnsuran','transaction_tebus','gadai','customers_info','penebusan','wakil')); + + return view('print.resit.tebus_separuh', compact('totalrebate', 'khazanah_user', 'totalBayaranAnsuran', 'transaction_tebus', 'gadai', 'customers_info', 'penebusan', 'wakil')); } public function resitautotawarruq($id) @@ -522,42 +539,43 @@ class GadaianController extends Controller $auth_user = Auth::user(); - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/'. $id)->json(); + $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $id)->json(); $totaltransaction = 0; - $transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/'. $id)->json(); + $transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/' . $id)->json(); - foreach($transaction as $trans) - { - $totaltransaction += $trans['duit_masuk']; + foreach ($transaction as $trans) { + $totaltransaction += $trans['duit_masuk']; } - if(sizeof($gadai) != 0) + if (sizeof($gadai) != 0) $gadai = $gadai[0][0]; - $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/'. $gadai['nokp'])->json(); + $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/' . $gadai['nokp'])->json(); - $transaction_keuntungan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/transaksi_keuntungan_latest/'. $id)->json(); + $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); + + $transaction_keuntungan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaksi_keuntungan_latest/' . $id)->json(); // if(sizeof($customers_info) != 0) // $customers_info = $customers_info[0]; - $transaction_tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/one/'. $id)->json(); + $transaction_tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/one/' . $id)->json(); - $penebusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/' . $auth_user['cawangan'],[ "norujukan" => $id])->json(); + $penebusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/' . $auth_user['cawangan'], ["norujukan" => $id])->json(); - if(sizeof($penebusan) != 0) + if (sizeof($penebusan) != 0) $penebusan = $penebusan[0]; $wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getwakil/' . $auth_user['cawangan'] . '/code/' . $penebusan['nowakil'])->json(); // dd($wakil); - if(sizeof($wakil) != 0) + if (sizeof($wakil) != 0) $wakil = $wakil[0]; $khazanah_user = User::where('role_harian', 'khazanah')->where('cawangan', $auth_user['cawangan'])->select('name')->first(); - return view('print.resittebusautotawarruq',compact('transaction_tebus', 'transaction','gadai','customers_info','penebusan','wakil','totaltransaction','transaction_keuntungan', 'khazanah_user')); + return view('print.resittebusautotawarruq', compact('transaction_tebus', 'transaction', 'gadai', 'customers_info', 'penebusan', 'wakil', 'totaltransaction', 'transaction_keuntungan', 'khazanah_user', 'cawangan_info')); } public function resittebus($id) @@ -565,55 +583,54 @@ class GadaianController extends Controller $auth_user = Auth::user(); - $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json(); + $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/'. $id)->json(); + $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $id)->json(); $totaltransaction = 0; - $transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/'. $id)->json(); + $transaction = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/' . $id)->json(); - $transaction_tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/one/'. $id)->json(); + $transaction_tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/one/' . $id)->json(); - foreach($transaction as $trans) - { - $totaltransaction += $trans['duit_masuk']; + foreach ($transaction as $trans) { + $totaltransaction += $trans['duit_masuk']; } - if(sizeof($gadai) != 0) + if (sizeof($gadai) != 0) $gadai = $gadai[0][0]; - $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/'. $gadai['nokp'])->json(); + $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/' . $gadai['nokp'])->json(); // if(sizeof($customers_info) != 0) // $customers_info = $customers_info[0]; - $penebusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/' . $auth_user['cawangan'],[ "norujukan" => $id])->json(); + $penebusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/' . $auth_user['cawangan'], ["norujukan" => $id])->json(); - if(sizeof($penebusan) != 0) + if (sizeof($penebusan) != 0) $penebusan = $penebusan[0]; $wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getwakil/' . $auth_user['cawangan'] . '/code/' . $penebusan['nowakil'])->json(); - $totalBayaranAnsuran = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/norujukan/total/ansuran',['norujukan'=>$id])->json(); + $totalBayaranAnsuran = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/norujukan/total/ansuran', ['norujukan' => $id])->json(); - $totalrebate = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/reports/totalrebate',['norujukan'=>$id])->json(); + $totalrebate = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/reports/totalrebate', ['norujukan' => $id])->json(); // dd($wakil); $surat_wakil = []; - if(sizeof($wakil) != 0) { + if (sizeof($wakil) != 0) { $wakil = $wakil[0]; $surat_wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getsuratwakil/' . $auth_user['cawangan'] . '/' . $id)->json(); } $khazanah_user = User::where('role_harian', 'khazanah')->where('cawangan', $auth_user['cawangan'])->select('name')->first(); - if($gadai['tagbaru'] == 1) { - return view('print.resittebus_ujrah',compact('surat_wakil','totalrebate','transaction_tebus', 'transaction','gadai','cawangan_info','customers_info','penebusan','wakil','totaltransaction','totalBayaranAnsuran', 'khazanah_user')); + if ($gadai['tagbaru'] == 1) { + return view('print.resittebus_ujrah', compact('surat_wakil', 'totalrebate', 'transaction_tebus', 'transaction', 'gadai', 'cawangan_info', 'customers_info', 'penebusan', 'wakil', 'totaltransaction', 'totalBayaranAnsuran', 'khazanah_user')); } else { - return view('print.resittebus',compact('surat_wakil', 'transaction_tebus', 'transaction','gadai','cawangan_info','customers_info','penebusan','wakil','totaltransaction','totalBayaranAnsuran', 'khazanah_user')); + return view('print.resittebus', compact('surat_wakil', 'transaction_tebus', 'transaction', 'gadai', 'cawangan_info', 'customers_info', 'penebusan', 'wakil', 'totaltransaction', 'totalBayaranAnsuran', 'khazanah_user')); } } @@ -622,38 +639,35 @@ class GadaianController extends Controller $auth_user = Auth::user(); - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/'. $id)->json(); + $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $id)->json(); - if(sizeof($gadai) != 0) + if (sizeof($gadai) != 0) $gadai = $gadai[0][0]; - $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/'. $gadai['nokp'])->json(); + $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/' . $gadai['nokp'])->json(); // if(sizeof($customers_info) != 0) // $customers_info = $customers_info[0]; - $penebusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/' . $auth_user['cawangan'] ,[ "norujukan" => $id])->json(); + $penebusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/' . $auth_user['cawangan'], ["norujukan" => $id])->json(); - if(sizeof($penebusan) != 0) + if (sizeof($penebusan) != 0) $penebusan = $penebusan[0]; // dd($penebusan['nowakil']); - if($penebusan['nowakil'] != 0) - { - $wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getwakil/' . $auth_user['cawangan'] . '/code/' . $penebusan['nowakil'])->json(); + if ($penebusan['nowakil'] != 0) { + $wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getwakil/' . $auth_user['cawangan'] . '/code/' . $penebusan['nowakil'])->json(); - if(sizeof($wakil) != 0) - $wakil = $wakil[0]; - } - else - { + if (sizeof($wakil) != 0) + $wakil = $wakil[0]; + } else { $wakil = []; } - return view('print.resittebussebelum',compact('gadai','customers_info','penebusan','wakil')); + return view('print.resittebussebelum', compact('gadai', 'customers_info', 'penebusan', 'wakil')); } public function resitadvansur($id) @@ -661,32 +675,30 @@ class GadaianController extends Controller $auth_user = Auth::user(); - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/'. $id)->json(); + $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $id)->json(); - if(sizeof($gadai) != 0) + if (sizeof($gadai) != 0) $gadai = $gadai[0][0]; - $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/'. $gadai['nokp'])->json(); + $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/' . $gadai['nokp'])->json(); // if(sizeof($customers_info) != 0) // $customers_info = $customers_info[0]; - $advansur = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/advansur/'. $auth_user['cawangan'] . '/'. $id)->json(); + $advansur = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/advansur/' . $auth_user['cawangan'] . '/' . $id)->json(); - if($advansur['nowakil'] != 0){ + if ($advansur['nowakil'] != 0) { $wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getwakil/' . $auth_user['cawangan'] . '/code/' . $advansur['nowakil'])->json(); - if(sizeof($wakil) != 0){ + if (sizeof($wakil) != 0) { $wakil = $wakil[0]; } - } - else - { + } else { $wakil = []; } - return view('print.resitadvansur',compact('gadai','customers_info','advansur','wakil')); + return view('print.resitadvansur', compact('gadai', 'customers_info', 'advansur', 'wakil')); } public function resittambahpinjam($id) @@ -694,97 +706,93 @@ class GadaianController extends Controller $auth_user = Auth::user(); - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/'. $id)->json(); - $transaction_tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/one/'. $id)->json(); + $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $id)->json(); + $transaction_tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/one/' . $id)->json(); - if(sizeof($gadai) != 0) + if (sizeof($gadai) != 0) $gadai = $gadai[0][0]; - $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/'. $gadai['nokp'])->json(); + $customers_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/customers/' . $gadai['nokp'])->json(); + + $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); + // if(sizeof($customers_info) != 0) // $customers_info = $customers_info[0]; - $penebusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/' . $auth_user['cawangan'] ,[ "norujukan" => $id])->json(); + $penebusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/' . $auth_user['cawangan'], ["norujukan" => $id])->json(); - if(sizeof($penebusan) != 0) + if (sizeof($penebusan) != 0) $penebusan = $penebusan[0]; // dd($penebusan['nowakil']); - if($penebusan['nowakil'] != 0) - { - $wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getwakil/' . $auth_user['cawangan'] . '/code/' . $penebusan['nowakil'])->json(); + $surat_wakil = []; + if ($penebusan['nowakil'] != 0) { + $wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getwakil/' . $auth_user['cawangan'] . '/code/' . $penebusan['nowakil'])->json(); - if(sizeof($wakil) != 0) - $wakil = $wakil[0]; - } - else - { + if (sizeof($wakil) != 0) { + $wakil = $wakil[0]; + $surat_wakil = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/getsuratwakil/' . $auth_user['cawangan'] . '/' . $id)->json(); + } + } else { $wakil = []; } - $totalBayaranAnsuran = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/norujukan/total/ansuran',['norujukan'=>$id])->json(); + $totalBayaranAnsuran = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/transaction/norujukan/total/ansuran', ['norujukan' => $id])->json(); $khazanah_user = User::where('role_harian', 'khazanah')->where('cawangan', $auth_user['cawangan'])->select('name')->first(); - $totalrebate = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/reports/totalrebate',['norujukan'=>$id])->json(); + $totalrebate = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/reports/totalrebate', ['norujukan' => $id])->json(); - return view('print.resit.tambah_pinjaman',compact('totalrebate','khazanah_user','totalBayaranAnsuran','transaction_tebus','gadai','customers_info','penebusan','wakil')); + return view('print.resit.tambah_pinjaman', compact('surat_wakil', 'totalrebate', 'khazanah_user', 'totalBayaranAnsuran', 'transaction_tebus', 'gadai', 'customers_info', 'penebusan', 'wakil', 'cawangan_info')); } public function history(Request $request) { $auth_user = Auth::user(); - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/'. $request->norujukan)->json(); + $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $request->norujukan)->json(); - if(sizeof($gadai) > 0) - { + if (sizeof($gadai) > 0) { $history = $gadai[0][0]['historygadaian']; $dahtebus = $gadai[0][0]['sttebus']; $norujukan = $gadai[0][0]['norujukan']; - } $count = 0; $arrayhist = []; - while($history != "0" && $history != '' || $dahtebus == 'T') - { - if($history != "0" && $history != '') - { - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/'. $history)->json(); - $tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/'. $auth_user['cawangan'],[ - "norujukan" => $history + while ($history != "0" && $history != '' || $dahtebus == 'T') { + if ($history != "0" && $history != '') { + $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $history)->json(); + $tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/' . $auth_user['cawangan'], [ + "norujukan" => $history ])->json(); - if(sizeof($gadai) > 0) - { - if($history == $gadai[0][0]['historygadaian']) + if (sizeof($gadai) > 0) { + if ($history == $gadai[0][0]['historygadaian']) $history = 0; - else{ - array_push($arrayhist,["historygadaian" => ((isset($gadai[0][0]['historygadaian'])) ? $gadai[0][0]['historygadaian'] : 0),"tagbaru" => ((isset($gadai[0][0]['tagbaru'])) ? $gadai[0][0]['tagbaru'] : 0),"hargajualan" => ((isset($gadai[0][0]['hargajualan'])) ? $gadai[0][0]['hargajualan'] : ''), "pinjaman" => ((isset($tebus[0])) ? $tebus[0]['pinjaman'] : 0),"norujukan" => $history,"jenistebus" => ((isset($tebus[0])) ? $tebus[0]['jenistebus'] : 0),"jbg" => ((isset($tebus[0])) ? $tebus[0]['jbg'] : 0),"t_tebus" => ((isset($tebus[0])) ? $tebus[0]['t_tebus'] : 0)]); + else { + array_push($arrayhist, ["historygadaian" => ((isset($gadai[0][0]['historygadaian'])) ? $gadai[0][0]['historygadaian'] : 0), "tagbaru" => ((isset($gadai[0][0]['tagbaru'])) ? $gadai[0][0]['tagbaru'] : 0), "hargajualan" => ((isset($gadai[0][0]['hargajualan'])) ? $gadai[0][0]['hargajualan'] : ''), "pinjaman" => ((isset($tebus[0])) ? $tebus[0]['pinjaman'] : 0), "norujukan" => $history, "jenistebus" => ((isset($tebus[0])) ? $tebus[0]['jenistebus'] : 0), "jbg" => ((isset($tebus[0])) ? $tebus[0]['jbg'] : 0), "t_tebus" => ((isset($tebus[0])) ? $tebus[0]['t_tebus'] : 0)]); $history = $gadai[0][0]['historygadaian']; } } - $count++; - - } - else{ - $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/'. $norujukan)->json(); - $tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/'. $auth_user['cawangan'],[ - "norujukan" => $norujukan + $count++; + } else { + $gadai = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $norujukan)->json(); + $tebus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/listpenebusanhistory/' . $auth_user['cawangan'], [ + "norujukan" => $norujukan ])->json(); - array_push($arrayhist,["historygadaian" => ((isset($gadai[0][0]['historygadaian'])) ? $gadai[0][0]['historygadaian'] : 0),"tagbaru" => ((isset($gadai[0][0]['tagbaru'])) ? $gadai[0][0]['tagbaru'] : 0), "hargajualan" => ((isset($gadai[0][0]['hargajualan'])) ? $gadai[0][0]['hargajualan'] : ''),"pinjaman" => ((isset($tebus[0])) ? $tebus[0]['pinjaman'] : 0),"norujukan" => $norujukan,"jenistebus" => ((isset($tebus[0])) ? $tebus[0]['jenistebus'] : 0),"jbg" => ((isset($tebus[0])) ? $tebus[0]['jbg'] : 0),"t_tebus" => ((isset($tebus[0])) ? $tebus[0]['t_tebus'] : 0)]); + array_push($arrayhist, ["historygadaian" => ((isset($gadai[0][0]['historygadaian'])) ? $gadai[0][0]['historygadaian'] : 0), "tagbaru" => ((isset($gadai[0][0]['tagbaru'])) ? $gadai[0][0]['tagbaru'] : 0), "hargajualan" => ((isset($gadai[0][0]['hargajualan'])) ? $gadai[0][0]['hargajualan'] : ''), "pinjaman" => ((isset($tebus[0])) ? $tebus[0]['pinjaman'] : 0), "norujukan" => $norujukan, "jenistebus" => ((isset($tebus[0])) ? $tebus[0]['jenistebus'] : 0), "jbg" => ((isset($tebus[0])) ? $tebus[0]['jbg'] : 0), "t_tebus" => ((isset($tebus[0])) ? $tebus[0]['t_tebus'] : 0)]); break; } } - return response()->json($arrayhist,200); + return response()->json($arrayhist, 200); } /// KELULUSAN/// @@ -796,18 +804,15 @@ class GadaianController extends Controller $norujukan = $request->norujukan; - $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json(); + $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/GetLulus/' . $auth_user['cawangan'],[ + $kelulusan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/GetLulus/' . $auth_user['cawangan'], [ "norujukan" => $norujukan ])->json(); - if(sizeof($kelulusan) > 0) - { + if (sizeof($kelulusan) > 0) { $kelulusan = $kelulusan['benar']; - } - else - { + } else { $kelulusan = ''; } @@ -822,11 +827,11 @@ class GadaianController extends Controller $norujukan = $request->norujukan; - $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json(); + $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); $updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusan/kepohonan/' . $auth_user['cawangan'] . '/' . $norujukan)->json(); - return response()->json($updatelulus,200); + return response()->json($updatelulus, 200); } public function createkelulusan(Request $request) @@ -836,7 +841,7 @@ class GadaianController extends Controller $norujukan = $request->norujukan; - $gadai_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/'. $norujukan)->json(); + $gadai_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/gadai/norujukan/' . $norujukan)->json(); $pinjaman = ($gadai_info[0][0]['pinjaman']) ? $gadai_info[0][0]['pinjaman'] : '-'; $nilaimarhun = ($gadai_info[0][0]['nilaimarhun']) ? $gadai_info[0][0]['nilaimarhun'] : '-'; @@ -849,14 +854,99 @@ class GadaianController extends Controller 'nilaimarhun' => $nilaimarhun, 'berat' => $berat, 'margin' => $percentpinj, - 'teller' => $auth_user['name'] + 'teller' => $auth_user['name'], + 'komen' => $request->komen, + 'status' => $request->status, + 'ansuran' => $request->ansuran, + 'tagoperasi' => ($request->tagoperasi) ? $request->tagoperasi : 0, ])->json(); - event(new StatusLiked($auth_user['cawangan'],$auth_user['name'])); + event(new StatusLiked($auth_user['cawangan'], $auth_user['name'])); - return response()->json($createlulus,201); + return response()->json($createlulus, 201); } + public function createkelulusanAnggota(Request $request) + { + $auth_user = Auth::user(); + $api_url = config('api.url'); + $verify_ssl = config('app.api_verify'); + + // 🔸 Validasi asas + $request->validate([ + 'norujukan' => 'required|string', + 'noic' => 'required|string', + 'komen' => 'required|string', + 'teller' => 'required|string', + ]); + + $norujukan = $request->norujukan; + $current = Carbon::now(); + + // 1️⃣ Dapatkan info cawangan + $cawangan_info = Http::withOptions(['verify' => $verify_ssl]) + ->get("{$api_url}/api/cawangan/{$auth_user->cawangan}") + ->json(); + + if (empty($cawangan_info)) { + return response()->json(['message' => 'Maklumat cawangan tidak ditemui.'], 404); + } + + // 2️⃣ Dapatkan siri terkini (supaya sistem tahu kelulusan ke berapa) + $getsiri = Http::withOptions(['verify' => $verify_ssl]) + ->get("{$api_url}/api/ListLatestLulus/{$auth_user->cawangan}/{$norujukan}") + ->json(); + + $siri = isset($getsiri['siri']) ? ((int) $getsiri['siri'] + 1) : 1; + + $createlulus = Http::withOptions(['verify' => config('app.api_verify')])->post(config('api.url') . '/api/CreateLulus/' . $auth_user['cawangan'] . '/' . $norujukan, [ + 'mohon' => $request->mohon, + 'teller' => $auth_user['name'], + 'komen' => $request->komen, + 'status' => $request->status, + 'ansuran' => $request->ansuran, + 'tagoperasi' => ($request->tagoperasi) ? $request->tagoperasi : 0, + ])->json(); + + // 3️⃣ Hantar permohonan ke API utama + $payload = [ + 'komen' => $request->komen, + 'dategadai' => $current->toDateString(), + 'bilgadai' => 1, + 'siri' => $siri, + 'status' => 'TUNGGU KELULUSAN OPERASI', + 'teller' => $request->teller, + 'peloperasi' => 'operasi', + 'mohon' => 'Assign Anggota', + 'noic' => $request->noic, + 'jenistebus' => 'A', // “A” = anggota + 'tagoperasi' => 1, // 1 = tunggu kelulusan operasi + ]; + + $createLulus = Http::withOptions(['verify' => $verify_ssl]) + ->post("{$api_url}/api/CreateKelulusanAnggota/{$auth_user->cawangan}/{$norujukan}/roles/operasi", $payload) + ->json(); + + // 4️⃣ Jika API gagal + if (isset($createLulus['error']) || !$createLulus) { + return response()->json([ + 'message' => 'Gagal menghantar permohonan kelulusan operasi.', + 'error' => $createLulus['error'] ?? $createLulus + ], 500); + } + + // 5️⃣ Trigger event untuk notifikasi operasi + event(new StatusLiked($auth_user->cawangan, $auth_user->name)); + + // 6️⃣ Hantar respon berjaya + return response()->json([ + 'message' => 'Permohonan kelulusan operasi (Assign Anggota) berjaya dihantar.', + 'siri' => $siri, + 'api_response' => $createLulus, + ], 201); + } + + ///END KELULUSAN/// } diff --git a/app/Http/Controllers/HapusAnsuranController.php b/app/Http/Controllers/HapusAnsuranController.php new file mode 100644 index 00000000..7c481f78 --- /dev/null +++ b/app/Http/Controllers/HapusAnsuranController.php @@ -0,0 +1,63 @@ +middleware('auth'); + } + + public function createApproval(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(); + + $norujukan = $request->norujukan; + $komen = $request->komen; + $marg = $request->margin; + $ber = $request->berat; + $nm = $request->nilaimarhun; + $status = $request->status; + $jumpinjam = $request->jumpinjam; + $teller = $request->teller; + $ansuran = $request->ansuran; + + // Get the approval data + $approvalData = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/hapusansuran/create', [ + 'cawangan' => $auth_user['cawangan'], + "norujukan" => $norujukan, + "komen" => $komen, + "margin" => $marg, + "berat" => $ber, + "nilaimarhun" => $nm, + "status" => $status, + "jumpinjam" => $jumpinjam, + "teller" => $teller, + "ansuran" => $ansuran, + ]) + ->json(); + + if (isset($approvalData['status']) && $approvalData['status'] === 'success') { + Session::flash('success', 'Kelulusan berjaya dibuat.'); + return redirect()->route('operasi.kelulusan'); + } else { + Session::flash('error', 'Gagal membuat kelulusan. Sila cuba lagi.'); + return redirect()->back(); + } + + } + + +} diff --git a/app/Http/Controllers/KhazanahController.php b/app/Http/Controllers/KhazanahController.php index 98eca069..22d1f834 100644 --- a/app/Http/Controllers/KhazanahController.php +++ b/app/Http/Controllers/KhazanahController.php @@ -13,6 +13,7 @@ use App\Events\NotifikasiKelulusan; use App\Events\NotifikasiUbahHapus; use App\Events\NotifikasiAGH; use App\Events\NotifikasiPetiBesi; +use App\Events\AutoSerahan; use App\User; use App\Cawangan; @@ -215,7 +216,11 @@ class KhazanahController extends Controller $denominasi=$denominasi[0]; } - return view('khazanah.pendahuluanserahanmain',compact('cawangan_info','listgldetail','denominasi')); + $proses = Http::withOptions(['verify' => config('app.api_verify')])->get( config('api.url_koop') .'/api/autoserahan/checkapproval',[ + 'pc_name' => $auth_user['name'] + ])->json(); + + return view('khazanah.pendahuluanserahanmain',compact('cawangan_info','listgldetail','denominasi','proses')); } @@ -570,15 +575,9 @@ class KhazanahController extends Controller { $auth_user = Auth::user(); - $api_url = config('api.url'); - $norujukan = $request->norujukan; $pelulus = $request->pelulus; - $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json(); - - $getlulus = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/GetLulus/'. $auth_user['cawangan'],['norujukan' => $norujukan])->json(); - if($request->khazanah != null) { if($request->batal != null) @@ -587,22 +586,32 @@ class KhazanahController extends Controller $updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusan/kepohonan/' . $auth_user['cawangan'] . '/' . $norujukan,[ "pembatalan" => $request->batal, "komen" => $request->komenubahhapus, - "khazanah" => $request->khazanah + "khazanah" => $request->khazanah, + "recno" => isset($request->recno) ? $request->recno : null, ])->json(); if($updatelulus) { - event(new NotifikasiUbahHapus($norujukan,"batal",$request->komenubahhapus,$request->teller)); + if(isset($request->tagoperasi) && $request->tagoperasi == 1){ + event(new NotifikasiKelulusan($norujukan,"batal",$request->recno,$request->komenubahhapus,$request->teller)); + }else{ + event(new NotifikasiUbahHapus($norujukan,"batal",$request->komenubahhapus,$request->teller)); + } } }else{ $updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusan/kepohonan/' . $auth_user['cawangan'] . '/' . $norujukan,[ - "khazanah" => $request->khazanah + "khazanah" => $request->khazanah, + "recno" => isset($request->recno) ? $request->recno : null, ])->json(); if($updatelulus) { - event(new NotifikasiUbahHapus($norujukan,"lulus","tiada",$request->teller)); + if(isset($request->tagoperasi) && $request->tagoperasi == 1){ + event(new NotifikasiKelulusan($norujukan,"lulus",$request->recno,$request->komenubahhapus,$request->teller,1)); + }else{ + event(new NotifikasiUbahHapus($norujukan,"lulus","tiada",$request->teller)); + } } } } @@ -3072,7 +3081,9 @@ class KhazanahController extends Controller $cawangan = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/cawangan/detail/'.$auth_user['cawangan'])->json(); $cawangan_detail=$cawangan[0]; - return view('print.laporan_pendahuluanserahan', compact('pendser','cawangan_detail','tarikh_cetak','mula_date','hingga_date','api_url')); + $jenisLaporan = $request->radpendser; + + return view('print.laporan_pendahuluanserahan', compact('pendser','cawangan_detail','tarikh_cetak','mula_date','hingga_date','api_url','jenisLaporan')); } public function laporanDenominasi() @@ -4117,9 +4128,13 @@ class KhazanahController extends Controller if($request->radaktif === 'aktif') { - $stokaudit = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/stokauditkhas/aktif/'. $auth_user['cawangan'], + // $stokaudit = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/stokauditkhas/aktif/'. $auth_user['cawangan'], + $stokaudit = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/stokauditkhasbynorujukan/aktif/'. $auth_user['cawangan'], ['daritempoh' => $daritempoh, 'hinggatempoh' => $hinggatempoh])->json(); - return view('print.laporan_stokauditkhas', compact('stokaudit','cawangan_detail','tarikh_cetak','daritempoh','hinggatempoh','api_url','cawangan_info')); + $stokaudit = collect($stokaudit)->sortByDesc('norujukan')->values()->all(); + // dd($stokaudit); + // return view('print.laporan_stokauditkhas', compact('stokaudit','cawangan_detail','tarikh_cetak','daritempoh','hinggatempoh','api_url','cawangan_info')); + return view('print.laporan_stokauditkhasbysag', compact('stokaudit','cawangan_detail','tarikh_cetak','daritempoh','hinggatempoh','api_url','cawangan_info')); } } @@ -4137,11 +4152,13 @@ class KhazanahController extends Controller $cawangan=Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/cawangan/detail/'.$auth_user['cawangan'])->json(); $cawangan_detail=$cawangan[0]; - $stokaudit = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/stokauditkhas/aktif/'. $auth_user['cawangan'],['daritempoh' => $daritempoh, 'hinggatempoh' => $hinggatempoh])->json(); - + // $stokaudit = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/stokauditkhas/aktif/'. $auth_user['cawangan'],['daritempoh' => $daritempoh, 'hinggatempoh' => $hinggatempoh])->json(); + $stokaudit = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/stokauditkhasbynorujukan/aktif/'. $auth_user['cawangan'],['daritempoh' => $daritempoh, 'hinggatempoh' => $hinggatempoh])->json(); + $stokaudit = collect($stokaudit)->sortByDesc('norujukan')->values()->all(); if($request->type == 'excel') { - return view('excel.excel_stokauditkhas', compact('stokaudit','cawangan_detail','tarikh_cetak','daritempoh','hinggatempoh','api_url','cawangan_info')); + // return view('excel.excel_stokauditkhas', compact('stokaudit','cawangan_detail','tarikh_cetak','daritempoh','hinggatempoh','api_url','cawangan_info')); + return view('excel.excel_stokauditkhasbysag', compact('stokaudit','cawangan_detail','tarikh_cetak','daritempoh','hinggatempoh','api_url','cawangan_info')); } elseif($request->type == 'whatsapp') { @@ -4160,8 +4177,11 @@ class KhazanahController extends Controller } else { - $stokaudit = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/stokauditkhas/aktif/'. $auth_user['cawangan'],['daritempoh' => $daritempoh, 'hinggatempoh' => $hinggatempoh])->json(); - return view('pdf.pdf_stokauditkhas', compact('stokaudit','cawangan_detail','tarikh_cetak','daritempoh','hinggatempoh','api_url','cawangan_info')); + // $stokaudit = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/stokauditkhas/aktif/'. $auth_user['cawangan'],['daritempoh' => $daritempoh, 'hinggatempoh' => $hinggatempoh])->json(); + $stokaudit = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url'). '/api/stokauditkhasbynorujukan/aktif/'. $auth_user['cawangan'],['daritempoh' => $daritempoh, 'hinggatempoh' => $hinggatempoh])->json(); + $stokaudit = collect($stokaudit)->sortByDesc('norujukan')->values()->all(); + // return view('pdf.pdf_stokauditkhas', compact('stokaudit','cawangan_detail','tarikh_cetak','daritempoh','hinggatempoh','api_url','cawangan_info')); + return view('pdf.pdf_stokauditkhasbysag', compact('stokaudit','cawangan_detail','tarikh_cetak','daritempoh','hinggatempoh','api_url','cawangan_info')); } } @@ -4291,4 +4311,117 @@ class KhazanahController extends Controller $val = preg_replace('/\.(?=.*\.)/', '', $val); return floatval($val); } + + + public function AutoSerahan(Request $request) + { + if(isset($request->do_delete) && $request->do_delete == true){ + + $teller = $request->teller; + + if ($teller !== html_entity_decode($teller, ENT_QUOTES | ENT_HTML5, 'UTF-8')) + $teller = html_entity_decode($teller, ENT_QUOTES | ENT_HTML5, 'UTF-8'); + + $call_approval_v3 = Http::withOptions(['verify' => config('app.api_verify')]) + ->post(config('api.url_koop') . '/api/autoserahan/delete', [ + 'recno' => $request->recno, + 'version' => 'v3', + 'kodcaw' => $request->kodcaw, + 'teller' => $teller, + 'amaun' => $request->amaun, + ])->json(); + + return response()->json([ + 'status' => 'success', + 'message' => 'Approval process completed successfully', + 'id' => $call_approval_v3['id'], + ]); + + } + + $teller = $request->arraysend['teller']; + + if ($teller !== html_entity_decode($teller, ENT_QUOTES | ENT_HTML5, 'UTF-8')) + $teller = html_entity_decode($teller, ENT_QUOTES | ENT_HTML5, 'UTF-8'); + + + // Step 1: Call API v3 First + $call_approval_v3 = Http::withOptions(['verify' => config('app.api_verify')]) + ->post(config('api.url_koop') . '/api/autoserahan/create', [ + 'kodcaw' => $request->arraysend['kodcaw'], + 'teller' => $teller, + 'amaun' => $request->arraysend['amaun'], + 'txtring1' => $request->arraysend['ambilanring1'], + 'txtring5' => $request->arraysend['ambilanring5'], + 'txtring10' => $request->arraysend['ambilanring10'], + 'txtring20' => $request->arraysend['ambilanring20'], + 'txtring50' => $request->arraysend['ambilanring50'], + 'txtring100' => $request->arraysend['ambilanring100'], + 'txtsen1' => $request->arraysend['ambilansen1'], + 'txtsen5' => $request->arraysend['ambilansen5'], + 'txtsen10' => $request->arraysend['ambilansen10'], + 'txtsen20' => $request->arraysend['ambilansen20'], + 'txtsen50' => $request->arraysend['ambilansen50'], + 'jenis' => 'pendahuluan', + 'action' => 'create', + 'version' => 'v3', + ])->json(); + + // Check if API v3 was successful before proceeding + if (!isset($call_approval_v3['id']) || $call_approval_v3['status'] !== 'success') { + return response()->json([ + 'status' => 'failed', + 'message' => 'API v3 failed. Cannot proceed to API v2.', + 'error' => $call_approval_v3 + ], 400); + } + + // Step 2: Call API v2 using response from API v3 + $call_approval_v2 = Http::withOptions(['verify' => config('app.api_verify')]) + ->post(config('api.url_pkb') . '/api/autoserahan/create', [ + 'id' => $call_approval_v3['id'], // Use ID from API v3 response + 'kodcaw' => $request->arraysend['kodcaw'], + 'teller' => $teller, + 'amaun' => $request->arraysend['amaun'], + 'txtring1' => $request->arraysend['ambilanring1'], + 'txtring5' => $request->arraysend['ambilanring5'], + 'txtring10' => $request->arraysend['ambilanring10'], + 'txtring20' => $request->arraysend['ambilanring20'], + 'txtring50' => $request->arraysend['ambilanring50'], + 'txtring100' => $request->arraysend['ambilanring100'], + 'txtsen1' => $request->arraysend['ambilansen1'], + 'txtsen5' => $request->arraysend['ambilansen5'], + 'txtsen10' => $request->arraysend['ambilansen10'], + 'txtsen20' => $request->arraysend['ambilansen20'], + 'txtsen50' => $request->arraysend['ambilansen50'], + 'jenis' => 'serahan', + 'version' => 'v2', + ])->json(); + + $call_set_approval_v3 = Http::withOptions(['verify' => config('app.api_verify')]) + ->put(config('api.url_koop') . '/api/autoserahan/setapproval', [ + 'jenis' => 'create', + 'id' => $call_approval_v3['id'], + 'deno_id' => $call_approval_v2['denoid'] + ])->json(); + + + // Step 3: Check if both API v3 and API v2 were successful + if ($call_approval_v2['status'] === 'success' && $call_approval_v3['status'] === 'success' && $call_set_approval_v3['status'] === 'success') { + event(new AutoSerahan("Operasi",$call_approval_v3['id'],$request->arraysend['kodcaw'],$teller)); + + return response()->json([ + 'status' => 'success', + 'message' => 'Approval process completed successfully', + 'id' => $call_approval_v3['id'], + ]); + } else { + return response()->json([ + 'status' => 'failed', + 'message' => 'One of the approvals failed', + ], 400); + } + } + + } diff --git a/app/Http/Controllers/OperasiController.php b/app/Http/Controllers/OperasiController.php index 11a2e510..74189123 100644 --- a/app/Http/Controllers/OperasiController.php +++ b/app/Http/Controllers/OperasiController.php @@ -7,6 +7,7 @@ namespace App\Http\Controllers; use App\Events\OperasiNotice; use App\Events\StatusLiked; use App\Events\NotifikasiKelulusan; +use App\Events\NotifikasiAnggota; use App\Events\Dashboard\KomoditiNotify; use Illuminate\Support\Facades\Auth; @@ -16,6 +17,7 @@ use Illuminate\Support\Facades\Hash; use Carbon\Carbon; +use Illuminate\Support\Facades\Log; class OperasiController extends Controller { @@ -24,26 +26,29 @@ class OperasiController extends Controller $this->middleware('auth'); } - public function kelulusan(Request $request){ + 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(); + $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 ($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')); + return view('operasi.kelulusan', compact('cawangan_info', 'api_url', 'arraykelulusan')); } public function getkelulusan(Request $request) @@ -53,16 +58,13 @@ class OperasiController extends Controller $norujukan = $request->norujukan; - $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json(); + $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) - { + if (sizeof($kelulusan) > 0) { $kelulusan = $kelulusan[0]['masalulus']; - } - else - { + } else { $kelulusan = ''; } @@ -78,49 +80,148 @@ class OperasiController extends Controller $norujukan = $request->norujukan; - if($request->pembatalan == null) - { - $updatelulus = Http::withOptions(['verify' => config('app.api_verify')])->put(config('api.url') . '/api/UpdateKelulusanKomen/' . $request->kodcaw . '/' . $norujukan,[ - "komen" => $request->komenkelulusan, - 'siri' => $request->siri - ])->json(); + 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(); - - if($updatelulus) - { - event(new NotifikasiKelulusan($norujukan,"lulus",$request->siri,$request->komenkelulusan,$request->teller)); + $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(); } - } - else - { - $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(); - if($updatelulus) - { - event(new NotifikasiKelulusan($norujukan,"batal",$request->siri,$request->komenkelulusan,$request->teller)); + 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); + 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(); @@ -131,14 +232,13 @@ class OperasiController extends Controller $norujukan = $request->norujukan; - $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json(); + $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(); + $getsiri = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/ListLatestLulus/' . $auth_user['cawangan'] . '/' . $norujukan)->json(); - if(isset($getsiri['siri'])) - { + if (isset($getsiri['siri'])) { $siri = $getsiri['siri'] + 1; - }else{ + } else { $siri = 1; } @@ -158,57 +258,110 @@ class OperasiController extends Controller ])->json(); - event(new StatusLiked($auth_user['cawangan'],$auth_user['name'])); + event(new StatusLiked($auth_user['cawangan'], $auth_user['name'])); - return response()->json($siri,201); + 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)) - { + if (Hash::check($request->passsemula, Auth::user()->password)) { return "True"; - } - else - { + } 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(); + $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')); + 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(); + $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')); + return view('operasi.hargaemas', compact('cawangan_info', 'api_url', 'harga_emas')); } - public function margin(){ + 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(); + $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')); + 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(); + $cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/' . $auth_user['cawangan'])->json(); //declare array baru $arraykelulusan = []; @@ -216,29 +369,36 @@ class OperasiController extends Controller $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']); + foreach ($kelulusan as $index => $k) { + foreach ($k['kelulusanall'] as $index1 => $kel) { + $komen = explode("|", $kel['komen']); - $results=array_search("",$komen,true); - if($results !== false) { + $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'],]); - + 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')); - + return view('operasi.rekodtelahlulus', compact('cawangan_info', 'api_url', 'arraykelulusan')); } public function notifyKomoditi() { $auth_user = Auth::user(); - event(new KomoditiNotify('lulus',$auth_user['cawangan'])); + 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')); } } diff --git a/app/Imports/AnggotaImport.php b/app/Imports/AnggotaImport.php new file mode 100644 index 00000000..c5a12bb1 --- /dev/null +++ b/app/Imports/AnggotaImport.php @@ -0,0 +1,24 @@ + $row['noic'], + 'nama' => $row['nama'], + 'status' => $row['status'] ?? 'aktif', + ]); + } +} diff --git a/app/Services/ImbangdugaServices.php b/app/Services/ImbangdugaServices.php index f4909ccb..bd490fbe 100644 --- a/app/Services/ImbangdugaServices.php +++ b/app/Services/ImbangdugaServices.php @@ -287,7 +287,12 @@ class ImbangdugaServices foreach($response as $variable=>$res) { if($variable !== 'recno' && $variable !== 'kodcaw' && $variable !== 'tarikh' && $variable !== 'totalharta' && $variable !== 'totaltanggungan' && $variable !== 'tagtally' && $variable !== 'created_at' && $variable !== 'updated_at'){ - $imbangdugadata = ImbangDuga::orderBy('glcode')->where('variable',$variable)->orWhere('single_var',$variable)->first()->toArray(); + //$imbangdugadata = ImbangDuga::orderBy('glcode')->where('variable',$variable)->orWhere('single_var',$variable)->first()->toArray(); + if($variable == 'bakilelong'){ + $imbangdugadata = ImbangDuga::orderBy('glcode')->where([['single_var',$variable],['variable',$variable]])->first()->toArray(); + }else{ + $imbangdugadata = ImbangDuga::orderBy('glcode')->where('variable',$variable)->orWhere('single_var',$variable)->first()->toArray(); + } if($imbangdugadata['jenis'] == 'harta'){ array_push($array_harta,['glcode' => $imbangdugadata['glcode'],'descpt' => $imbangdugadata['descpt'],'amaun' => $res]); }else{ diff --git a/app/View/Components/AutoSerah.php b/app/View/Components/AutoSerah.php new file mode 100644 index 00000000..85365bc1 --- /dev/null +++ b/app/View/Components/AutoSerah.php @@ -0,0 +1,28 @@ + env('API_URL') + 'url' => env('API_URL'), + 'url_koop' => env('API_URL_KOOP','https://apiujrah.erahn.com.my'), + 'url_pkb' => env('API_URL_PKB','http://localhost:8000'), ]; \ No newline at end of file diff --git a/config/redeemoption.php b/config/redeemoption.php index 6467b1ea..ed814c80 100644 --- a/config/redeemoption.php +++ b/config/redeemoption.php @@ -1,9 +1,10 @@ env('ENABLE_TAMBAHPINJAM',1), - 'enable_separuh' => env('ENABLE_SEPARUH',1), - 'enable_pembiayaansemula' => env('ENABLE_AUTOTAWARRUQ',1), + 'enable_tambahpinjam' => env('ENABLE_TAMBAHPINJAM',0), + 'enable_separuh' => env('ENABLE_SEPARUH',0), + 'enable_pembiayaansemula' => env('ENABLE_AUTOTAWARRUQ',0), // 'enable_specific_block' => env('ENABLE_BLOCK',0), - 'cawangan_block' => explode(',', env('CAWANGAN_BLOCK', '1STOP,010915,010219,011013,011412,010621,010620,010617,010618')), + 'ansuran_block' => explode(',', env('ANSURAN_BLOCK', '011227')), + 'cawangan_block' => explode(',', env('CAWANGAN_BLOCK', 'KB2,WCY,1STOP,020301,WB,ALS,020306,ARM,APM,010311,GC,JLI,ARP,010621,011227,010620,010617,010915,011228,010219,011229,011230,011013,011412,011231,011232,020303,010618,KB1,011238,011235,010136,011233,011234,011237')), ]; ?> diff --git a/env.docker.example/base.env b/env.docker.example/base.env new file mode 100644 index 00000000..6cb310f7 --- /dev/null +++ b/env.docker.example/base.env @@ -0,0 +1,50 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY=base64:FFRogE6mJj8FaDSSHl/KpXpzqi2M+P4plxVSRgVM8JI= +APP_DEBUG=true +APP_URL=http://kaunterv2.localhost +API_URL=http://apiv2.localhost +API_ARRAHNBID=http://lelong.localhost/api/ + +LOG_CHANNEL=stack + +DB_CONNECTION=mysql +DB_HOST=database_zone2 +DB_PORT=3306 +DB_DATABASE=kaunterpkb +DB_USERNAME=root +DB_PASSWORD=secret + +BROADCAST_DRIVER=pusher +CACHE_DRIVER=file +QUEUE_CONNECTION=sync +SESSION_DRIVER=file +SESSION_LIFETIME=120 + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +PUSHER_APP_ID=1132718 +PUSHER_APP_KEY=26b0ec2f297f94b7aa9b +PUSHER_APP_SECRET=421b61fb5a8ecce477a6 + +MAIL_MAILER=smtp +MAIL_HOST=smtp.mailtrap.io +MAIL_PORT=2525 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS=null +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= + +MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + +MYKAD_READER_PORT=8085 +MYKAD_READER_ENABLED_CAWANGAN='' # IF NO CAWANGAN STATED, ALL CAWANGAN IS ENABLED diff --git a/env.docker.example/kgmk.env b/env.docker.example/kgmk.env new file mode 100644 index 00000000..e56a06cc --- /dev/null +++ b/env.docker.example/kgmk.env @@ -0,0 +1,50 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY=base64:FFRogE6mJj8FaDSSHl/KpXpzqi2M+P4plxVSRgVM8JI= +APP_DEBUG=true +APP_URL=http://kaunterv2.localhost +API_URL=http://apiv2.kgmk.localhost +API_ARRAHNBID=http://lelong.localhost/api/ + +LOG_CHANNEL=stack + +DB_CONNECTION=mysql +DB_HOST=database_zone_franchise +DB_PORT=3306 +DB_DATABASE=kaunter_koopguru +DB_USERNAME=root +DB_PASSWORD=secret + +BROADCAST_DRIVER=pusher +CACHE_DRIVER=file +QUEUE_CONNECTION=sync +SESSION_DRIVER=file +SESSION_LIFETIME=120 + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +PUSHER_APP_ID=1132718 +PUSHER_APP_KEY=26b0ec2f297f94b7aa9b +PUSHER_APP_SECRET=421b61fb5a8ecce477a6 + +MAIL_MAILER=smtp +MAIL_HOST=smtp.mailtrap.io +MAIL_PORT=2525 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS=null +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= + +MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + +MYKAD_READER_PORT=8085 +MYKAD_READER_ENABLED_CAWANGAN='' # IF NO CAWANGAN STATED, ALL CAWANGAN IS ENABLED diff --git a/env.docker.example/krk.env b/env.docker.example/krk.env new file mode 100644 index 00000000..c56d8d65 --- /dev/null +++ b/env.docker.example/krk.env @@ -0,0 +1,50 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY=base64:FFRogE6mJj8FaDSSHl/KpXpzqi2M+P4plxVSRgVM8JI= +APP_DEBUG=true +APP_URL=http://kaunterv2.localhost +API_URL=http://apiv2.krk.localhost +API_ARRAHNBID=http://lelong.localhost/api/ + +LOG_CHANNEL=stack + +DB_CONNECTION=mysql +DB_HOST=database_zone_franchise +DB_PORT=3306 +DB_DATABASE=kaunter_krk +DB_USERNAME=root +DB_PASSWORD=secret + +BROADCAST_DRIVER=pusher +CACHE_DRIVER=file +QUEUE_CONNECTION=sync +SESSION_DRIVER=file +SESSION_LIFETIME=120 + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +PUSHER_APP_ID=1132718 +PUSHER_APP_KEY=26b0ec2f297f94b7aa9b +PUSHER_APP_SECRET=421b61fb5a8ecce477a6 + +MAIL_MAILER=smtp +MAIL_HOST=smtp.mailtrap.io +MAIL_PORT=2525 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS=null +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= + +MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + +MYKAD_READER_PORT=8085 +MYKAD_READER_ENABLED_CAWANGAN='' # IF NO CAWANGAN STATED, ALL CAWANGAN IS ENABLED diff --git a/public/js/notification.js b/public/js/notification.js index 58dc2537..e24df5a0 100644 --- a/public/js/notification.js +++ b/public/js/notification.js @@ -17,14 +17,14 @@ const Toast = Swal.mixin({ const notify = new NotifyKhazanah(channel,event,apikey); notify.channel_subscribe((data) => { - console.log(data); - Toast.fire({ - icon: 'info', - title: 'Permohonan Kelulusan Wang Tunai Teller!' - }); const currentPath = window.location.pathname; if(window.kodcaw == data.cawangan){ + Toast.fire({ + icon: 'info', + title: 'Permohonan Kelulusan Wang Tunai Teller!' + }); + if (currentPath === "/home") { notify_main(); } else if (currentPath === "/menu") { diff --git a/resources/views/auth/v2/login.blade.php b/resources/views/auth/v2/login.blade.php index e63913e8..164d9d3a 100644 --- a/resources/views/auth/v2/login.blade.php +++ b/resources/views/auth/v2/login.blade.php @@ -81,8 +81,10 @@
-

arOS v2.2

- logo-arrahn +

+ Kaunter arOS v2.2 +

+ logo-arrahn

Adil . Telus . Mudah

diff --git a/resources/views/callcenter/bycawdetailnotisperingatan.blade.php b/resources/views/callcenter/bycawdetailnotisperingatan.blade.php index 41d5cbf8..7f34b8c4 100644 --- a/resources/views/callcenter/bycawdetailnotisperingatan.blade.php +++ b/resources/views/callcenter/bycawdetailnotisperingatan.blade.php @@ -230,17 +230,17 @@ dom: 'Bfrtip', buttons: [ - // { - // className: 'btn btn-outline-success pl-4 pr-4 btn-sm export', - // target: "_blank", - // titleAttr: 'Export to Excel', - // text: 'EXCEL', - // action: function ( e, dt, node, config ) { - // $('#typedonwload').val('excel'); - // $("#exportpdf").submit(); - // // window.open("_blank"); - // } - // }, + { + className: 'btn btn-outline-success pl-4 pr-4 btn-sm export', + target: "_blank", + titleAttr: 'Export to Excel', + text: 'EXCEL', + action: function ( e, dt, node, config ) { + $('#typedonwload').val('excel'); + $("#exportpdf").submit(); + // window.open("_blank"); + } + }, { className: 'btn btn-outline-danger pl-4 pr-4 btn-sm export', titleAttr: 'Export to PDF', @@ -251,22 +251,22 @@ } }, - { - className: 'btn btn-outline-info pl-4 pr-4 btn-sm export', - target: "_blank", - titleAttr: 'Blast Whatsapp', - text: 'WHATSAPP & SMS', - action: function ( e, dt, node, config ) { - // $('#typedonwload').val('whatsapp'); - // $("#exportpdf").submit(); - $("#exportpdf").click(function() { - $('[data-toggle="tooltip"]').tooltip() - alert("ADAKAH ANDA PASTI?"); - $('#typedonwload').val('whatsapp'); - $("#exportpdf").submit(); - }); - } - } + // { + // className: 'btn btn-outline-info pl-4 pr-4 btn-sm export', + // target: "_blank", + // titleAttr: 'Blast Whatsapp', + // text: 'WHATSAPP & SMS', + // action: function ( e, dt, node, config ) { + // // $('#typedonwload').val('whatsapp'); + // // $("#exportpdf").submit(); + // $("#exportpdf").click(function() { + // $('[data-toggle="tooltip"]').tooltip() + // alert("ADAKAH ANDA PASTI?"); + // $('#typedonwload').val('whatsapp'); + // $("#exportpdf").submit(); + // }); + // } + // } diff --git a/resources/views/callcenter/bycawdetailnotisperingatankedua.blade.php b/resources/views/callcenter/bycawdetailnotisperingatankedua.blade.php index 2c8238f5..e8e2a5e5 100644 --- a/resources/views/callcenter/bycawdetailnotisperingatankedua.blade.php +++ b/resources/views/callcenter/bycawdetailnotisperingatankedua.blade.php @@ -284,22 +284,22 @@ } }, - { - className: 'btn btn-outline-info pl-4 pr-4 btn-sm export', - target: "_blank", - titleAttr: 'Blast Whatsapp', - text: 'WHATSAPP & SMS', - action: function ( e, dt, node, config ) { - // $('#typedonwload').val('whatsapp'); - // $("#exportpdf").submit(); - $("#exportpdf").click(function() { - $('[data-toggle="tooltip"]').tooltip() - alert("ADAKAH ANDA PASTI?"); - $('#typedonwload').val('whatsapp'); - $("#exportpdf").submit(); -}); - } - } + // { + // className: 'btn btn-outline-info pl-4 pr-4 btn-sm export', + // target: "_blank", + // titleAttr: 'Blast Whatsapp', + // text: 'WHATSAPP & SMS', + // action: function ( e, dt, node, config ) { + // // $('#typedonwload').val('whatsapp'); + // // $("#exportpdf").submit(); + // $("#exportpdf").click(function() { + // $('[data-toggle="tooltip"]').tooltip() + // alert("ADAKAH ANDA PASTI?"); + // $('#typedonwload').val('whatsapp'); + // $("#exportpdf").submit(); + // }); + // } + // } diff --git a/resources/views/callcenter/index.blade.php b/resources/views/callcenter/index.blade.php index c707dc73..411fcaf5 100644 --- a/resources/views/callcenter/index.blade.php +++ b/resources/views/callcenter/index.blade.php @@ -7,6 +7,33 @@ position: absolute; } +
@@ -21,16 +48,17 @@
-
Pilih Cawangan Dan Masukkan nombor kad pengenalan
-
+
Pilih Cawangan Dan Nombor Kad Pengenalan
+
-
+
-
+ +
@php $cawangan_all = Http::withOptions(['verify' => config('app.api_verify')])->get($api_url . '/arcc/cawangan')->json(); @endphp - @foreach($cawangan_all as $cawangan) @@ -38,20 +66,39 @@
+ + - +
- + +
+
-
- + + + + +
+
+
-
+
+ +
@@ -330,6 +377,17 @@
+ + diff --git a/resources/views/callcenter/indexnama.blade.php b/resources/views/callcenter/indexnama.blade.php new file mode 100644 index 00000000..74ef53e5 --- /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/notisperingatanpertama_excel.blade.php b/resources/views/callcenter/notisperingatanpertama_excel.blade.php new file mode 100644 index 00000000..b86924f1 --- /dev/null +++ b/resources/views/callcenter/notisperingatanpertama_excel.blade.php @@ -0,0 +1,277 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + +
Senarai Notis Peringatan Pertama Tarikh Cetak: + @php + $myDateTime = DateTime::createFromFormat('Y-m-d', $tarikh_cetak); + $formattedweddingdate = $myDateTime->format('d-m-Y'); + echo($formattedweddingdate) + @endphp +
+ + + + + + + + + + + + + + + + + + + + + @foreach ($bycawnotisperingatan as $index => $item) + + + + + + + + + + + @if($item['datagadai']['tagbaru'] == '0') + + @elseif($item['datagadai']['tagbaru'] == '1') + + @endif + + @endif + + @endif + + @endif + + @endforeach +
BilNo.RujukanNamaNo.KPNo.TelefonTempohBaki Pembiayaan (RM)Keuntungan 6Bulan (RM)Amaun Telah Bayar (RM)Keuntungan Semasa (RM)Tarikh MatangTarikh Tamat KontrakTarikh Blast
{{ $loop->iteration }}{{$item['norujukan']}}{{$item['namacust']['nama'] ?? ''}}{{$item['nokp']}}6{{$item['namacust']['telefon'] ?? ''}}{{$item['jbg']}}{{number_format($item['datagadai']['bakipjm'], 2, '.', ',')}}{{number_format($item['datagadai']['bakiupah'], 2, '.', ',')}}{{number_format($item['datagadai']['hargajualan']-$item['datagadai']['bakihargajualan'], 2, '.', ',')}}{{number_format($item['keuntungan'], 2, '.', ',')}}{{number_format($item['keuntungan']['ujrah']+$item['keuntungan']['onepercent'], 2, '.', ',')}} + @if($item['tmatang'] == null) + @else + @php + $myDateTime = DateTime::createFromFormat('Y-m-d', $item['tmatang']); + $formattedweddingdate = $myDateTime->format('d-m-Y'); + echo($formattedweddingdate); + @endphp + @if($item['tmatang1'] == null) + @else + @php + $myDateTime = DateTime::createFromFormat('Y-m-d', $item['tmatang1']); + $formattedweddingdate = $myDateTime->format('d-m-Y'); + echo($formattedweddingdate); + @endphp + @if($item['tarikhnotis1'] == null) + + @else + @php + $myDateTime = DateTime::createFromFormat('Y-m-d', $item['tarikhnotis1']); + $formattedweddingdate = $myDateTime->format('d-m-Y'); + echo($formattedweddingdate); + @endphp
+ + + + + + + + + + + + + + + + diff --git a/resources/views/callcenter/partials/customertable.blade.php b/resources/views/callcenter/partials/customertable.blade.php new file mode 100644 index 00000000..b7e9e5b2 --- /dev/null +++ b/resources/views/callcenter/partials/customertable.blade.php @@ -0,0 +1,32 @@ +@if(count($customers) > 0) + + + + + + + + + + + @foreach($customers as $customer) + + + + + + + @endforeach + +
NamaNo KPKod CawanganTindakan
{{ $customer['nama'] }}{{ $customer['kpbaru'] ?? $customer['kplama'] ?? '-' }}{{ $customer['kodcaw'] }} +
+ @csrf + + + + +
+
+@else +
Tiada pelanggan dijumpai.
+@endif diff --git a/resources/views/callcenter/pilihpelanggan.blade.php b/resources/views/callcenter/pilihpelanggan.blade.php new file mode 100644 index 00000000..17a7b320 --- /dev/null +++ b/resources/views/callcenter/pilihpelanggan.blade.php @@ -0,0 +1,48 @@ +@extends('layouts.app_callcenter') + +@section('content') +
+ Kembali +

Senarai Cawangan Dijumpai

+ @if(session('customer_list') && count(session('customer_list')) > 0) + + + + + + + + + + + @foreach(session('customer_list') as $customer) + + + + + + + @endforeach + +
NamaNo KPNama CawanganTindakan
{{ $customer['nama'] }} @php + if($customer['kpbaru'] != null){ + $noic = $customer['kpbaru']; + }else{ + $noic = $customer['kplama']; + } + @endphp + {{ $noic }}{{ $customer['nama_cawangan'] }} +
+ @csrf + + + +
+
+ @else +
Tiada pelanggan dijumpai.
+ @endif + + Kembali +
+@endsection diff --git a/resources/views/callcenter/pilihpelanggannama.blade.php b/resources/views/callcenter/pilihpelanggannama.blade.php new file mode 100644 index 00000000..df895e18 --- /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/callcenter/v1/info.blade.php b/resources/views/callcenter/v1/info.blade.php index 4ea9d4ff..3a65bdaa 100644 --- a/resources/views/callcenter/v1/info.blade.php +++ b/resources/views/callcenter/v1/info.blade.php @@ -7,7 +7,7 @@ @include('modal.agh') -
+
@@ -155,7 +155,8 @@ Margin Tempoh Keuntungan - Lelong + Lelong + Pembayaran Terakhir @@ -722,6 +723,7 @@ } var taglel = ''; + var lastbayar = ''; if(gadai_detail['taglel'] == 1){ if(tagarrahnbid == 1){ $.ajax({ @@ -731,6 +733,7 @@ success: function(data){ taglel = data.lelong.t_lelong; + lastbayar = data.lelong.lastbayar; } }); } else { @@ -744,6 +747,7 @@ }, success: function(v){ taglel = v.t_lelong; + } }); } @@ -777,6 +781,7 @@ gadai_detail['tempoh'], 'RM '+ formatter.format(upahsemasa), '
' + taglel + '
', + '
' + lastbayar + '
', ]).draw(); } }else if(jenistebus == "sudah_tebus"){ diff --git a/resources/views/callcenter/v2/info.blade.php b/resources/views/callcenter/v2/info.blade.php index 958a29dd..92dd1a1e 100644 --- a/resources/views/callcenter/v2/info.blade.php +++ b/resources/views/callcenter/v2/info.blade.php @@ -7,7 +7,7 @@ @section('content') -@include('modal.historytebus') +@include('modal.historytebusarcc') @include('modal.wakil')
@@ -119,15 +119,14 @@
-
+ {{--
-
+
--}}
-
-
@@ -156,7 +156,7 @@ @endphp SAG Baru - SAG Lama + SAG Lama
+
@@ -290,7 +341,10 @@ No Pelanggan
- + {{-- --}} +
@@ -298,7 +352,10 @@ No Telefon 1
- + {{-- --}} +
@@ -307,7 +364,10 @@ No Telefon 2
- + {{-- --}} +
@@ -316,7 +376,7 @@ Bank
- @php + {{-- @php $bank = Http::withOptions(['verify' => config('app.api_verify')])->get($api_url . '/api/bank')->json(); @endphp + --}} + @php + $bank = Http::withOptions(['verify' => config('app.api_verify')]) + ->get($api_url . '/api/bank') + ->json(); + $selectedBank = '-'; + foreach ($bank as $banks) { + if ($banks['abbreviation'] == $customer_info['kodbank']) { + $selectedBank = $banks['name']; + break; + } + } + @endphp +
@@ -333,7 +408,10 @@ No Akaun
- + {{-- --}} +
@@ -343,58 +421,75 @@
Alamat
-
+ {{--
-
+
--}} +
+ +
Poskod
- + {{-- --}} +
Daerah
-
+ {{--
@php $poskod = Http::withOptions(['verify' => config('app.api_verify')])->get($api_url . '/api/poskod/'. $customer_info['poskod'])->json(); if(empty($poskod)){ $poskod = array('koddaerah'=>'NIL','kodnegeri' => 'NIL'); } $daerah = Http::withOptions(['verify' => config('app.api_verify')])->get($api_url . '/api/daerah/' . $poskod['koddaerah'])->json(); - @endphp - + @endphp --}} + {{-- --}} + {{--
-
-
+
--}} + {{--
Negeri
@php $negeri = Http::withOptions(['verify' => config('app.api_verify')])->get($api_url . '/api/negeri/' . $poskod['kodnegeri'])->json(); - @endphp - + @endphp --}} + {{-- --}} + {{--
-
+
--}}
Nota
- + {{-- --}} +
- {{-- --}} - + {{-- + --}} {{-- --}}
@@ -867,11 +962,12 @@ urlroute = urlroute.replace(':id', gadai_detail["norujukan"]); var tuntutan = ''; - if(gadai_detail['datatuntut']['teller'] == 'DM') - { + if(gadai_detail['datatuntut'] && gadai_detail['datatuntut']['teller'] == 'DM') { tuntutan = 'WTD'; - }else{ + }else if (gadai_detail['trkhtuntut'] !== null) { tuntutan = 'Pelanggan'; + }else { + tuntutan = ''; } if(gadai_detail['trkhtuntut'] == null){ @@ -1254,10 +1350,10 @@ $.ajax({ method:'get', - url:'{{ route("arcc.history") }}', + url: '{{ route("arcc.history", ":kodcaw") }}'.replace(':kodcaw', kodcaw), data:{ "norujukan" : histid}, success:function(data){ - historytebustable(data); + historytebustable(data,histid); $.ajax({ method: 'get', @@ -1336,7 +1432,10 @@ urlroute = urlroute.replace(':id', bayaran['id']); historybayarandatatable.row.add([ counter, + bayaran['norujukan'], bayaran['created_at'], + "RM " + bayaran['bayaran_pembiayaan'], + "RM " + bayaran['bayaran_keuntungan'], "RM " + bayaran['duit_masuk'], bayaranteller, bayaran['trans_type'], @@ -1350,54 +1449,54 @@ "ordering": false }); - function historytebustable(data){ + function historytebustable(data, histid) + { + console.log("Full data returned tebus:", histid); // Debug var counter = 1; historytebusbayaran.clear().draw(); - $.each(data,function(index,tebusaz){ + // TAPIS hanya entry yang sama dengan norujukan klik user + let filtered = data.filter(tebusaz => tebusaz.norujukan === histid); + $.each(filtered, function(index, tebusaz){ + console.log("Tebus untuk:", tebusaz.norujukan); + + var urlroute = ''; switch(tebusaz['jenistebus']) { case 'P': - var urlroute = '{{ route("resit.tambahpinjam", ":id") }}'; - urlroute = urlroute.replace(':id', tebusaz['norujukan']); + urlroute = '{{ route("resit.tambahpinjam", ":id") }}'.replace(':id', tebusaz['norujukan']); break; case 'T': - - if(tebusaz['hargajualan'] === '') - { - var urlroute = '{{ route("resit.belumtebus", ":id") }}'; - urlroute = urlroute.replace(':id', tebusaz['norujukan']); - - }else{ - var urlroute = '{{ route("resit.tebus", ":id") }}'; - urlroute = urlroute.replace(':id', tebusaz['norujukan']); - } - + urlroute = (tebusaz['hargajualan'] === '') + ? '{{ route("resit.belumtebus", ":id") }}'.replace(':id', tebusaz['norujukan']) + : '{{ route("resit.tebus", ":id") }}'.replace(':id', tebusaz['norujukan']); break; case 'A': - var urlroute = '{{ route("resit.belumansurans", ":id") }}'; - urlroute = urlroute.replace(':id', tebusaz['norujukan']); + urlroute = '{{ route("resit.belumansurans", ":id") }}'.replace(':id', tebusaz['norujukan']); break; case 'S': - var urlroute = '{{ route("resit.tebusseparuh", ":id") }}'; - urlroute = urlroute.replace(':id', tebusaz['norujukan']); - break; - } + urlroute = '{{ route("resit.tebusseparuh", ":id") }}'.replace(':id', tebusaz['id']); + break; + } historytebusbayaran.row.add([ counter, - tebusaz['norujukan'], - tebusaz['jenistebus'], - tebusaz['pinjaman'], + histid, + tebusaz['trans_type'], + "RM " + tebusaz['bayaran_pembiayaan'], + "RM " + tebusaz['bayaran_keuntungan'], + "RM " + tebusaz['duit_masuk'], tebusaz['jbg'], tebusaz['t_tebus'], '' ]).draw(); - counter = counter + 1; + + counter++; }); } + function daftarwakil() { let nopelanggan = $('#nopelangganwakil').val(); @@ -2343,6 +2442,7 @@ $('#kodbank').attr('disabled', false); $('#noakaun').attr('readonly', false); $('#nota').attr('readonly', false); + $('#nota_arcc').attr('readonly', false); $('#alamat').attr('readonly', false); $('#poskod').attr('readonly', false); @@ -2364,6 +2464,7 @@ $('#kodbank').attr('disabled', true); $('#noakaun').attr('readonly', true); $('#nota').attr('readonly', true); + $('#nota_arcc').attr('readonly', true); $('#alamat').attr('readonly', true); $('#poskod').attr('readonly', true); } @@ -2371,18 +2472,20 @@ $("#kemaskiniform").submit(function(event) { event.preventDefault(); - var nokp = $('#icno').val(); + var nokp = $('#noic').val(); var telefon1 = $('#telefon').val(); var telefon2 = $('#telefon2').val(); var kodbank = $('#kodbank').val(); var noakaun = $('#noakaun').val(); var nota = $('#nota').val(); + var nota_arcc = $('#nota_arcc').val(); var alamat = $('#alamat').val(); var poskod = $('#poskod').val(); $.ajax({ method:"put", - url: api_url + "/api/customers/update/kaunter/" + nokp, + // url: api_url + "/api/customers/update/kaunter/" + nokp + "/" + kodcaw, + url: api_url + "/api/callcenter/customers/update/kaunter/" + nokp + "/" + kodcaw, data:{ "namateller" : "{{ Auth::user()->name }}", "telefon1": telefon1, @@ -2390,6 +2493,7 @@ "kodbank":kodbank, "noakaun":noakaun, 'nota':nota, + 'nota_arcc':nota_arcc, 'alamat':alamat, 'poskod':poskod }, @@ -2426,94 +2530,119 @@ }); }); + // function kemaskinipelanggan(){ + + // var errortelefon1 = 0; + // var errortelefon2 = 0; + + // if(!($('#telefon').val().length >= 9 && $('#telefon').val().length < 12)){ + // $('#errortelefon').show(); + // $('#errortelefon').text("*lebih kecil dari 10 dan lebih besar dari 12"); + // $('#telefon').addClass('is-invalid'); + // errortelefon1++; + // }else{ + // $('#errortelefon').hide(); + // $('#telefon').removeClass('is-invalid'); + // errortelefon1--; + // } + + // if($('#telefon2').val() != ''){ + // if(!($('#telefon2').val().length >= 9 && $('#telefon2').val().length < 12)){ + // $('#errortelefon2').show(); + // $('#errortelefon2').text("*lebih kecil dari 10 dan lebih besar dari 12"); + // $('#telefon2').addClass('is-invalid'); + // errortelefon2++; + // }else{ + // $('#errortelefon2').hide(); + // $('#telefon2').removeClass('is-invalid'); + // errortelefon2--; + // } + // }else{ + // $('#errortelefon2').hide(); + // $('#telefon2').removeClass('is-invalid'); + // errortelefon2--; + // } + + // if(errortelefon1 <= 0 && errortelefon2 <= 0){ + // $('#btnkemaskini').removeClass('btn-danger'); + // $('#btnkemaskini').addClass('btn-primary'); + // $('#btnkemaskini').text('Ubah'); + // $('#btnkemaskini').attr('onclick','kemaskinifunc()'); + // $('#btnotp').text('Daftar Akuan Online'); + // $('#btnotp').attr('onclick','#'); + + // //attribute nak readonly false + // $('#telefon').attr('readonly', true); + // $('#telefon2').attr('readonly', true); + // $('#noakaun').attr('readonly', true); + // $('#kodbank').attr('readonly', true); + // $('#nota').attr('readonly', true); + // $('#nota_arcc').attr('readonly', true); + // $('#alamat').attr('readonly', true); + // $('#poskod').attr('readonly', true); + + // $('#kemaskiniform').trigger('submit'); + // } + // } + + // $('#btnotp').click(function(){ + // $('#customer_detail').modal('hide'); + // var noic = $('#noic').val(); + // $('#noic_otp').val(noic); + // $('#opt_modal').modal('show'); + // }); + + // $('#jana_otp').click(function(){ + // var noic = $('#noic_otp').val(); + + // $.ajax({ + // method:'get', + // url: "{{ route('customer.otp') }}", + // data:{ + // 'noic_otp' : noic + // }, + // dataType:'json', + // success: function(otp_token){ + // if(otp_token['error']){ + // Swal.fire({ + // icon: 'error', + // title: 'Amaran!', + // text: otp_token['error'] + // }); + // }else if(otp_token['otp']){ + // $('#otp_form').hide(); + // $('#otp_generate').show(); + // $('#otp_number').text(otp_token['otp']); + // } + // }, + // error: function(xhRequest, ErrorText, thrownError){ + // console.log(xhRequest); + // } + // }); + // }); + function kemaskinipelanggan(){ + // Tukar butang "Batal" jadi "Ubah" semula + $('#btnkemaskini').removeClass('btn-danger'); + $('#btnkemaskini').addClass('btn-primary'); + $('#btnkemaskini').text('Ubah'); + $('#btnkemaskini').attr('onclick','kemaskinifunc()'); + $('#btnotp').text('Daftar Akuan Online'); + $('#btnotp').attr('onclick','#'); - var errortelefon1 = 0; - var errortelefon2 = 0; + // Lock balik semua field + $('#telefon').attr('readonly', true); + $('#telefon2').attr('readonly', true); + $('#noakaun').attr('readonly', true); + $('#kodbank').attr('disabled', true); + $('#nota').attr('readonly', true); + $('#nota_arcc').attr('readonly', true); + $('#alamat').attr('readonly', true); + $('#poskod').attr('readonly', true); - if(!($('#telefon').val().length >= 9 && $('#telefon').val().length < 12)){ - $('#errortelefon').show(); - $('#errortelefon').text("*lebih kecil dari 10 dan lebih besar dari 12"); - $('#telefon').addClass('is-invalid'); - errortelefon1++; - }else{ - $('#errortelefon').hide(); - $('#telefon').removeClass('is-invalid'); - errortelefon1--; - } + console.log("👉 Hantar form kemaskini (nota_arcc)"); + $('#kemaskiniform').trigger('submit'); +} - if($('#telefon2').val() != ''){ - if(!($('#telefon2').val().length >= 9 && $('#telefon2').val().length < 12)){ - $('#errortelefon2').show(); - $('#errortelefon2').text("*lebih kecil dari 10 dan lebih besar dari 12"); - $('#telefon2').addClass('is-invalid'); - errortelefon2++; - }else{ - $('#errortelefon2').hide(); - $('#telefon2').removeClass('is-invalid'); - errortelefon2--; - } - }else{ - $('#errortelefon2').hide(); - $('#telefon2').removeClass('is-invalid'); - errortelefon2--; - } - - if(errortelefon1 <= 0 && errortelefon2 <= 0){ - $('#btnkemaskini').removeClass('btn-danger'); - $('#btnkemaskini').addClass('btn-primary'); - $('#btnkemaskini').text('Ubah'); - $('#btnkemaskini').attr('onclick','kemaskinifunc()'); - $('#btnotp').text('Daftar Akuan Online'); - $('#btnotp').attr('onclick','#'); - - //attribute nak readonly false - $('#telefon').attr('readonly', true); - $('#telefon2').attr('readonly', true); - $('#noakaun').attr('readonly', true); - $('#kodbank').attr('disabled', true); - $('#nota').attr('readonly', true); - $('#alamat').attr('readonly', true); - $('#poskod').attr('readonly', true); - - $('#kemaskiniform').trigger('submit'); - } - } - - $('#btnotp').click(function(){ - $('#customer_detail').modal('hide'); - var noic = $('#noic').val(); - $('#noic_otp').val(noic); - $('#opt_modal').modal('show'); - }); - - $('#jana_otp').click(function(){ - var noic = $('#noic_otp').val(); - - $.ajax({ - method:'get', - url: "{{ route('customer.otp') }}", - data:{ - 'noic_otp' : noic - }, - dataType:'json', - success: function(otp_token){ - if(otp_token['error']){ - Swal.fire({ - icon: 'error', - title: 'Amaran!', - text: otp_token['error'] - }); - }else if(otp_token['otp']){ - $('#otp_form').hide(); - $('#otp_generate').show(); - $('#otp_number').text(otp_token['otp']); - } - }, - error: function(xhRequest, ErrorText, thrownError){ - console.log(xhRequest); - } - }); - }); @endsection diff --git a/resources/views/components/auto-serah.blade.php b/resources/views/components/auto-serah.blade.php new file mode 100644 index 00000000..9e6537ee --- /dev/null +++ b/resources/views/components/auto-serah.blade.php @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/resources/views/customers/v2/index.blade.php b/resources/views/customers/v2/index.blade.php index 10d2fcb3..7e1a139d 100644 --- a/resources/views/customers/v2/index.blade.php +++ b/resources/views/customers/v2/index.blade.php @@ -71,12 +71,27 @@ @if($search == true && $blacklist_search == false) -
- -
- @endif +
+ + {{-- ✅ Jika anggota tapi belum daftar pelanggan --}} + @if(isset($showDaftarPelangganBtn) && $showDaftarPelangganBtn) + + @endif + + {{-- ✅ Jika pelanggan dah ada tapi belum anggota --}} + @if(isset($showAssignAnggotaBtn) && $showAssignAnggotaBtn) +
+ @csrf + + +
+ @endif + +
+@endif + @@ -478,42 +493,73 @@ + + @endif -
-
-
- No Telefon -
-
- -
-
-
-
- Nota -
-
- -
-
- -
-
- Rugi Lelong -
-
- -
-
-
- -
- -
+ - +
+
+ + + +
-
- - - -
-
- - - -
- -
+ - + -
-
-
-
-
- - + - -