145 lines
5.1 KiB
JavaScript
Vendored
145 lines
5.1 KiB
JavaScript
Vendored
|
|
let button_read_mykad = document.getElementById("button_read_mykad");
|
|
let button_close_modal = document.querySelector("#daftar_pelanggan button.btn.btn-danger");
|
|
|
|
let removeCRLFfromString = (response_text) => {
|
|
return response_text.replace(/[\n\r]+/g, '').replace(/\s{2,10}/g, ' ');
|
|
};
|
|
|
|
|
|
let getMyKadDetail = () => {
|
|
return fetch(mykad_reader_endpoint)
|
|
.then(response => response.text())
|
|
.then(response => removeCRLFfromString(response))
|
|
.then(response => JSON.parse(response))
|
|
};
|
|
|
|
let checkIfMyKadExist = (myKadNumber) => {
|
|
const url = wakil_caricustomer_endpoint + '/?icno=' + myKadNumber;
|
|
|
|
return fetch(url).then((response) => response.json());
|
|
};
|
|
|
|
|
|
let handleMyKadReader = () => {
|
|
|
|
let myKadDetail;
|
|
|
|
getMyKadDetail()
|
|
.then(response => myKadDetail = response[0])
|
|
.then(() => {
|
|
if (myKadDetail.ReadStatus === 'ERROR') {
|
|
throw new Error('Sila sambungkan pembaca MyKad dengan betul');
|
|
}
|
|
})
|
|
.then(() => checkIfMyKadExist(myKadDetail.IdNo))
|
|
.then(response => response[0])
|
|
.then(response => {
|
|
if (response === 'no-data') {
|
|
populateDaftarPelangganModal(myKadDetail);
|
|
} else {
|
|
let input_search_noic = document.getElementById("noic");
|
|
let form_search_noic = document.querySelector("form[name='frmsearch']");
|
|
input_search_noic.value = myKadDetail.IdNo;
|
|
form_search_noic.submit();
|
|
}
|
|
})
|
|
.catch(error => console.log(error));
|
|
|
|
|
|
};
|
|
|
|
let populateDaftarPelangganModal = (data) => {
|
|
let modal_form = document.querySelector(".modal-body .row.form-group");
|
|
|
|
const religions = [
|
|
['01', 'Islam'],
|
|
['02', 'Hindu'],
|
|
['03', 'Buddha'],
|
|
['04', 'Kristian'],
|
|
['05', 'Lain-lain'],
|
|
];
|
|
|
|
const ethnicities = [
|
|
['M', 'Melayu'],
|
|
['C', 'Cina'],
|
|
['I', 'India'],
|
|
['L', 'Lain-lain'],
|
|
];
|
|
|
|
let getCodeFromValue = (needle, haystack) => {
|
|
let title_cased_text = needle.split(' ')
|
|
.map(w => w[0].toUpperCase() + w.substring(1).toLowerCase())
|
|
.join(' ');
|
|
|
|
return haystack.filter(x => x[1] == title_cased_text)[0][0];
|
|
};
|
|
|
|
let getFormattedDateOfBirth = (date_of_birth) => {
|
|
const [year, month, day] = date_of_birth.split('-');
|
|
return day + '/' + month + '/' + year;
|
|
};
|
|
|
|
let getAgeFromDateOfBirth = (date_of_birth) => {
|
|
|
|
const [birth_year, birth_month, birth_day] = date_of_birth.split('-');
|
|
const count_leap_year = countLeapYears(birth_year, birth_month, birth_day) - 1;
|
|
|
|
const start = new Date(date_of_birth),
|
|
end = new Date(),
|
|
diff = new Date(end - start),
|
|
days = ((diff / 1000 / 60 / 60 / 24) - count_leap_year) / 365;
|
|
|
|
return parseInt(days);
|
|
};
|
|
|
|
let getBumiputeraStatus = (ethnicity) => {
|
|
|
|
const non_bumiputera_ethnicity = ['INDIA', 'CINA'];
|
|
|
|
let isBumiputera = !non_bumiputera_ethnicity.includes(ethnicity);
|
|
|
|
return isBumiputera;
|
|
};
|
|
|
|
let photo_container = document.getElementById("photo-mykad-container");
|
|
let photo = document.getElementById("photo-mykad");
|
|
photo.src = 'data:image/png;base64, ' + data.Photo;
|
|
|
|
modal_form.querySelector("input[name='name']").value = data.Name;
|
|
modal_form.querySelector("input[name='noic']").value = data.IdNo;
|
|
modal_form.querySelector("input[name='tarikh_lahir']").value = getFormattedDateOfBirth(data.DateOfBirth);
|
|
modal_form.querySelector("input[name='negeri_lahir']").value = data.State;
|
|
modal_form.querySelector("input[name='jantina']").value = data.Gender == 'L' ? 'Lelaki' : 'Perempuan';
|
|
modal_form.querySelector("input[name='warganegara']").checked = data.Citizenship === 'WARGANEGARA' ? true : false;
|
|
modal_form.querySelector("input[name='bumiputera']").checked = getBumiputeraStatus(data.Ethnicity);
|
|
modal_form.querySelector("select[name='agama']").value = getCodeFromValue(data.Religion, religions);
|
|
modal_form.querySelector("textarea[name='alamat']").value = [data.Address1, data.Address2, data.Address3].join(", ");
|
|
modal_form.querySelector("input[name='poskod']").value = data.Postcode;
|
|
modal_form.querySelector("input[name='daerah']").value = data.Town;
|
|
modal_form.querySelector("input[name='negeri']").value = data.State;
|
|
modal_form.querySelector("input[name='age']").value = getAgeFromDateOfBirth(data.DateOfBirth);
|
|
modal_form.querySelector("select[name='bangsa']").value = getCodeFromValue(data.Ethnicity, ethnicities);
|
|
|
|
calculatePassportAge();
|
|
|
|
photo_container.classList.remove('d-none');
|
|
photo_container.classList.add('d-flex');
|
|
|
|
$('#daftar_pelanggan').modal('show');
|
|
};
|
|
|
|
|
|
let hideMykadPhoto = () => {
|
|
let photo = document.getElementById("photo-mykad");
|
|
let photo_container = document.getElementById("photo-mykad-container");
|
|
|
|
photo.src = '';
|
|
|
|
photo_container.classList.add('d-none');
|
|
photo_container.classList.remove('d-flex');
|
|
};
|
|
|
|
button_read_mykad.addEventListener("click", handleMyKadReader);
|
|
button_close_modal.addEventListener("click", hideMykadPhoto);
|