From 99a4fe7e9ea6561a4379e5b5db4746619a8ce118 Mon Sep 17 00:00:00 2001 From: "afiq.hamzah" Date: Mon, 6 Mar 2023 10:37:07 +0800 Subject: [PATCH] Add operation to allow newly poskod to registred through the API --- app/Http/Controllers/CustomersController.php | 11 ++++++ public/js/postcode-concerns.js | 39 +++++++++++++++++--- resources/views/customers/index.blade.php | 2 +- 3 files changed, 46 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/CustomersController.php b/app/Http/Controllers/CustomersController.php index 10b5c78..83272e3 100644 --- a/app/Http/Controllers/CustomersController.php +++ b/app/Http/Controllers/CustomersController.php @@ -173,6 +173,17 @@ class CustomersController extends Controller $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)){ + + $detail_poskod = Http::withOptions(['verify' => config('app.api_verify')]) + ->post(config('api.url') . '/api/poskod', [ + 'poskod' => $request->poskod, + 'koddaerah' => $request->koddaerah, + 'kodnegeri' => $request->kodnegeri, + ])->json(); + + } + $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, diff --git a/public/js/postcode-concerns.js b/public/js/postcode-concerns.js index 3c3d58e..5a7a236 100644 --- a/public/js/postcode-concerns.js +++ b/public/js/postcode-concerns.js @@ -39,10 +39,12 @@ let handlePoskodDetail_NotFound = (modal, input_negeri, input_daerah, select_dae input_daerah.closest('div.col-md-8').style.display = 'none'; input_daerah.disabled = true; + input_daerah.required = false; select_daerah.closest('div.col-md-8').style.display = 'block'; select_daerah.disabled = false; select_daerah.readOnly = false; + select_daerah.required = true; input_negeri.value = ''; input_negeri.placeholder = ''; @@ -54,21 +56,25 @@ let handlePoskodDetail_NotFound = (modal, input_negeri, input_daerah, select_dae $(select_daerah).attr("data-placeholder","Sila pilih daerah"); $(select_daerah).val('').trigger('change'); - getAllNegeri().then(response => response.json()) + getAllNegeri() + .then(response => response.json()) .then(x => x.map(y => { return { "id": y.namadaerah, "text": y.namadaerah + ' - ' + y.negeri.negeri, + "data-koddaerah": y.koddaerah, } - })).then(x => { + })) + .then(x => { $(select_daerah).select2({ placeholder: "Sila pilih daerah pelanggan", closeOnSelect: true, dropdownPosition: 'below', data: x, + dropdownParent: $(modal), }); - }).then(() => $(select_daerah).val('').trigger('change')); - + }) + .then(() => $(select_daerah).val('').trigger('change')); }; @@ -76,9 +82,11 @@ let handlePoskodDetail_Found = (input_negeri, input_daerah, select_daerah) => { select_daerah.closest('div.col-md-8').style.display = 'none'; select_daerah.disabled = 'true'; + select_daerah.required = false; input_daerah.closest('div.col-md-8').style.display = 'block'; input_daerah.disabled = false; + input_daerah.required = true; input_negeri.readOnly = true; input_negeri.placeholder = ''; @@ -93,6 +101,7 @@ $('select.select2-daerah').on('select2:select', function (e) { let input_negeri = modal.querySelector('input[name="negeri"]'); let selected_daerah = e.params.data; + let selected_kod_daerah = selected_daerah['data-koddaerah']; let getDaerahDetail = (koddaerah) => { return fetch(api_url + '/api/daerah/' + koddaerah) @@ -101,7 +110,27 @@ $('select.select2-daerah').on('select2:select', function (e) { .then(response => response.json()) }; - getDaerahDetail(selected_daerah.id).then(x => input_negeri.value = x.negeri); + let populatePostcodeRegistrationInputs = (koddaerah, kodnegeri) => { + const input_koddaerah = document.createElement("input"); + input_koddaerah.className = "d-none"; + input_koddaerah.name = "koddaerah"; + input_koddaerah.value = koddaerah; + + const input_kodnegeri = document.createElement("input"); + input_kodnegeri.className = "d-none"; + input_kodnegeri.name = "kodnegeri"; + input_kodnegeri.value = kodnegeri; + + modal.querySelector('form').appendChild(input_koddaerah); + modal.querySelector('form').appendChild(input_kodnegeri); + } + + getDaerahDetail(selected_kod_daerah) + .then(x => { + populatePostcodeRegistrationInputs(selected_kod_daerah, x.kodnegeri) + return x; + }) + .then(x => input_negeri.value = x.negeri); }); $('#daftar_pelanggan_mykad_reader textarea#alamat').change(function(){ diff --git a/resources/views/customers/index.blade.php b/resources/views/customers/index.blade.php index a14e789..f6cbbee 100644 --- a/resources/views/customers/index.blade.php +++ b/resources/views/customers/index.blade.php @@ -601,7 +601,7 @@ url:api_url+'/api/poskod/'+poskod, success:function(poskod_detail){ - let parent_modal = document.querySelector('#daftar_pelanggan_mykad_reader'); + let parent_modal = document.querySelector('#daftar_pelanggan_mykad_reader'); if(Object.keys(poskod_detail).length === 0){ handlePoskodDetail_NotFound_MyKad(parent_modal);