Merge branch 'afiqhamzah-feat-mykad-reader-registration' into 'new-super'
Change poskod input interaction See merge request online-sistem1/kaunter!225
This commit is contained in:
@@ -173,6 +173,18 @@ 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,
|
||||
'user' => auth()->user(),
|
||||
])->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,
|
||||
|
||||
@@ -31,6 +31,7 @@ class HomeController extends Controller
|
||||
$auth_user = Auth::user();
|
||||
$api_url = config('api.url');
|
||||
|
||||
|
||||
if(session()->has('iklan') && session()->get('iklan') == 0)
|
||||
{
|
||||
session()->put('iklan', 1);
|
||||
@@ -40,6 +41,7 @@ class HomeController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if($auth_user['roles'] == 'teller'){
|
||||
if($auth_user['role_harian'] == 'teller'){
|
||||
$cawangan_info = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json();
|
||||
@@ -55,13 +57,14 @@ class HomeController extends Controller
|
||||
}
|
||||
}
|
||||
elseif($auth_user['roles'] == 'pc' || $auth_user['roles'] == 'ppc'){
|
||||
$countkhazanah = 0;
|
||||
$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/serah_marhun/khazanah/'. $auth_user['cawangan'])->json();
|
||||
$listserah = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/listSerahMarhunController/'.$auth_user['cawangan'])->json();
|
||||
|
||||
$countkhazanah = sizeof($gadai) + sizeof($listserah);
|
||||
|
||||
|
||||
return view('homepage.khazanah.home',compact('cawangan_info','api_url','countkhazanah'));
|
||||
}
|
||||
else{
|
||||
|
||||
@@ -31,10 +31,10 @@ class NoHttpCache
|
||||
/**
|
||||
* @var $headers \Symfony\Component\HttpFoundation\HeaderBag
|
||||
*/
|
||||
$response->header('Pragma', 'no-cache');
|
||||
$response->header('Expires', 'Fri, 01 Jan 1990 00:00:00 GMT');
|
||||
$response->header('Cache-Control', 'no-cache, must-revalidate, no-store, max-age=0, private');
|
||||
$response->headers->set('Pragma', 'no-cache');
|
||||
$response->headers->set('Expires', 'Fri, 01 Jan 1990 00:00:00 GMT');
|
||||
$response->headers->set('Cache-Control', 'no-cache, must-revalidate, no-store, max-age=0, private');
|
||||
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,6 +48,11 @@ return [
|
||||
'root' => storage_path('app'),
|
||||
],
|
||||
|
||||
'supports' => [
|
||||
'driver' => 'local',
|
||||
'root' => storage_path('drivers'),
|
||||
],
|
||||
|
||||
'public' => [
|
||||
'driver' => 'local',
|
||||
'root' => storage_path('app/public'),
|
||||
|
||||
+208
-172
@@ -1,258 +1,294 @@
|
||||
WebSocketManager = {
|
||||
url:"",
|
||||
WebSocketManager = {
|
||||
url:"",
|
||||
init: function(url) {
|
||||
WebSocketManager.url = url;
|
||||
},
|
||||
open: function(callback, slot) {
|
||||
},
|
||||
open: function(callback, slot) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"OPEN","Slot":"'+ slot +'"}');
|
||||
};
|
||||
wsocket.send('{"Cmd":"OPEN","Slot":"'+ slot +'"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
wsocket.close();
|
||||
callback(obj);
|
||||
};
|
||||
|
||||
},
|
||||
listReader: function(callback) {
|
||||
};
|
||||
|
||||
},
|
||||
listReader: function(callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"LIST_READER"}');
|
||||
};
|
||||
wsocket.send('{"Cmd":"LIST_READER"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode);
|
||||
};
|
||||
|
||||
},
|
||||
};
|
||||
|
||||
wsocket.onerror = evt => {
|
||||
let hideLoader = () => {
|
||||
let pageLoader = document.getElementById('page_loader');
|
||||
pageLoader.removeAttribute('class');
|
||||
};
|
||||
|
||||
hideLoader();
|
||||
wsocket.close();
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'MyKad driver/services tidak dapat dikesan, sila pasang driver',
|
||||
html: `
|
||||
<div class="mt-2">
|
||||
<button type="button" class="btn-download-driver btn btn-outline-secondary btn-lg mb-2">
|
||||
Download driver <i class="fa fa-download"></i>
|
||||
</button><br>
|
||||
<button type="button" class="btn-yes swal2-confirm swal2-styled">OK</button><br>
|
||||
</div>
|
||||
`,
|
||||
showCancelButton: false,
|
||||
showConfirmButton: false,
|
||||
willOpen: () => {
|
||||
const yes = document.querySelector('button.btn-yes')
|
||||
const download_driver = document.querySelector('button.btn-download-driver')
|
||||
|
||||
yes.addEventListener('click', () => {
|
||||
swal.close();
|
||||
})
|
||||
|
||||
download_driver.addEventListener('click', () => {
|
||||
window.location.href = mykad_reader_driver_endpoint;
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
};
|
||||
},
|
||||
close: function(callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"CLOSE"}');
|
||||
};
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
wsocket.close();
|
||||
callback(obj);
|
||||
};
|
||||
},
|
||||
verifyFPTemplate: function(callback, ThumbCode, Bas64FPLeft, Bas64FPRight) {
|
||||
},
|
||||
verifyFPTemplate: function(callback, ThumbCode, Bas64FPLeft, Bas64FPRight) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"VERIFY_FP_TEMPLATE","ThumbCode":"'+ ThumbCode +'","Bas64FPLeft":"'+ Bas64FPLeft +'","Bas64FPRight":"'+ Bas64FPRight +'"}');
|
||||
};
|
||||
wsocket.send('{"Cmd":"VERIFY_FP_TEMPLATE","ThumbCode":"'+ ThumbCode +'","Bas64FPLeft":"'+ Bas64FPLeft +'","Bas64FPRight":"'+ Bas64FPRight +'"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
wsocket.close();
|
||||
callback(obj.RespCode, obj.RespMessage);
|
||||
};
|
||||
|
||||
callback(obj.RespCode, obj.RespMessage);
|
||||
};
|
||||
|
||||
},
|
||||
readMyKad: function (callback) {
|
||||
readMyKad: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"READ_MYKAD"}');
|
||||
};
|
||||
wsocket.send('{"Cmd":"READ_MYKAD"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
},
|
||||
readAllText: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"READ_ALL_TEXT"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
},
|
||||
readPhoto: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"READ_PHOTO"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
},
|
||||
readBio: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"READ_BIO"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
},
|
||||
readMyKid: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"READ_MYKID"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
},
|
||||
FPBioEnrol: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"FP_BIO_ENROL"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
//var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(obj);
|
||||
};
|
||||
},
|
||||
getThumbImage: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"GET_MYKAD_THUMB_IMAGE"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
},
|
||||
getThumbBin1: function (callback) {
|
||||
};
|
||||
},
|
||||
readAllText: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"GET_THUMB_BIN1"}');
|
||||
};
|
||||
wsocket.send('{"Cmd":"READ_ALL_TEXT"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
},
|
||||
getThumbBin2: function (callback) {
|
||||
};
|
||||
},
|
||||
readPhoto: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"GET_THUMB_BIN2"}');
|
||||
};
|
||||
wsocket.send('{"Cmd":"READ_PHOTO"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
},
|
||||
FPBioEnrolBin1: function (callback) {
|
||||
};
|
||||
},
|
||||
readBio: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"FP_BIO_ENROL_BIN1"}');
|
||||
};
|
||||
wsocket.send('{"Cmd":"READ_BIO"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
},
|
||||
readMyKid: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"READ_MYKID"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
},
|
||||
FPBioEnrol: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"FP_BIO_ENROL"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
//var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(obj);
|
||||
};
|
||||
},
|
||||
FPBioEnrolBin2: function (callback) {
|
||||
};
|
||||
},
|
||||
getThumbImage: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"FP_BIO_ENROL_BIN2"}');
|
||||
};
|
||||
wsocket.send('{"Cmd":"GET_MYKAD_THUMB_IMAGE"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
},
|
||||
getThumbBin1: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"GET_THUMB_BIN1"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
},
|
||||
getThumbBin2: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"GET_THUMB_BIN2"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
},
|
||||
FPBioEnrolBin1: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"FP_BIO_ENROL_BIN1"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
//var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(obj);
|
||||
};
|
||||
},
|
||||
FPBioVerify: function (callback) {
|
||||
};
|
||||
},
|
||||
FPBioEnrolBin2: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"FP_BIO_VERIFY"}');
|
||||
};
|
||||
wsocket.send('{"Cmd":"FP_BIO_ENROL_BIN2"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
var obj = JSON.parse(evt.data);
|
||||
//var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
},
|
||||
FPBioVerifyBin: function (callback) {
|
||||
callback(obj);
|
||||
};
|
||||
},
|
||||
FPBioVerify: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"FP_BIO_VERIFY_BIN"}');
|
||||
};
|
||||
wsocket.send('{"Cmd":"FP_BIO_VERIFY"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
},
|
||||
FPBioVerifyLeft: function (callback) {
|
||||
};
|
||||
},
|
||||
FPBioVerifyBin: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"FP_BIO_VERIFY_LEFT"}');
|
||||
};
|
||||
wsocket.send('{"Cmd":"FP_BIO_VERIFY_BIN"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
},
|
||||
FPBioVerifyBinLeft: function (callback) {
|
||||
};
|
||||
},
|
||||
FPBioVerifyLeft: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"FP_BIO_VERIFY_BIN_LEFT"}');
|
||||
};
|
||||
wsocket.send('{"Cmd":"FP_BIO_VERIFY_LEFT"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
},
|
||||
FPBioVerifyRight: function (callback) {
|
||||
};
|
||||
},
|
||||
FPBioVerifyBinLeft: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"FP_BIO_VERIFY_RIGHT"}');
|
||||
};
|
||||
wsocket.send('{"Cmd":"FP_BIO_VERIFY_BIN_LEFT"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
},
|
||||
FPBioVerifyBinRight: function (callback) {
|
||||
};
|
||||
},
|
||||
FPBioVerifyRight: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"FP_BIO_VERIFY_BIN_RIGHT"}');
|
||||
};
|
||||
wsocket.send('{"Cmd":"FP_BIO_VERIFY_RIGHT"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
}
|
||||
};
|
||||
},
|
||||
FPBioVerifyBinRight: function (callback) {
|
||||
wsocket = new WebSocket(WebSocketManager.url);
|
||||
wsocket.onopen = function () {
|
||||
wsocket.send('{"Cmd":"FP_BIO_VERIFY_BIN_RIGHT"}');
|
||||
};
|
||||
wsocket.onmessage = function (evt) {
|
||||
var obj = JSON.parse(evt.data);
|
||||
var data = JSON.parse(obj.RespMessage);
|
||||
wsocket.close();
|
||||
callback(data, obj.RespCode, obj.RespSW12AndApiName);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -205,7 +205,7 @@ let original_photo_loader = document.querySelector("#photo-mykad").src;
|
||||
let mykad_modal = document.querySelector("#daftar_pelanggan_mykad_reader");
|
||||
let photo_container = mykad_modal.querySelector("#photo-mykad-container");
|
||||
|
||||
modal_form.querySelector("input[name='name']").value = data.OrgName;
|
||||
modal_form.querySelector("textarea[name='name']").value = data.OrgName;
|
||||
modal_form.querySelector("input[name='noic']").value = getMyKadNumberWithoutHypens(data.IDNum);
|
||||
modal_form.querySelector("input[name='tarikh_lahir']").value = getFormattedDateOfBirth(data.BirthDate);
|
||||
modal_form.querySelector("input[name='negeri_lahir']").value = data.BirthPlace;
|
||||
|
||||
Vendored
+172
@@ -0,0 +1,172 @@
|
||||
let handlePoskodDetail_NotFound_MyKad = (modal) => {
|
||||
|
||||
|
||||
let input_negeri = modal.querySelector('input#negeri');
|
||||
let input_daerah = modal.querySelector('input#daerah');
|
||||
let select_daerah = modal.querySelector('select#select-daerah');
|
||||
|
||||
handlePoskodDetail_NotFound(modal, input_negeri, input_daerah, select_daerah);
|
||||
}
|
||||
|
||||
let handlePoskodDetail_Found_MyKad = (modal) => {
|
||||
|
||||
let input_negeri = modal.querySelector('input#negeri');
|
||||
let input_daerah = modal.querySelector('input#daerah');
|
||||
let select_daerah = modal.querySelector('select#select-daerah');
|
||||
|
||||
handlePoskodDetail_Found(input_negeri, input_daerah, select_daerah);
|
||||
}
|
||||
|
||||
let handlePoskodDetail_NotFound_Passport = (modal) => {
|
||||
|
||||
let input_negeri = modal.querySelector('input#passport_negeri');
|
||||
let input_daerah = modal.querySelector('input#passport_daerah');
|
||||
let select_daerah = modal.querySelector('select#select-daerah');
|
||||
|
||||
handlePoskodDetail_NotFound(modal, input_negeri, input_daerah, select_daerah);
|
||||
}
|
||||
|
||||
let handlePoskodDetail_Found_Passport = (modal) => {
|
||||
|
||||
let input_negeri = modal.querySelector('input#passport_negeri');
|
||||
let input_daerah = modal.querySelector('input#passport_daerah');
|
||||
let select_daerah = modal.querySelector('select#select-daerah');
|
||||
|
||||
handlePoskodDetail_Found(input_negeri, input_daerah, select_daerah);
|
||||
}
|
||||
|
||||
let handlePoskodDetail_NotFound = (modal, input_negeri, input_daerah, select_daerah) => {
|
||||
|
||||
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 = '';
|
||||
|
||||
let getAllNegeri = () => {
|
||||
return fetch(api_url + '/api/daerah');
|
||||
};
|
||||
|
||||
$(select_daerah).attr("data-placeholder","Sila pilih daerah");
|
||||
$(select_daerah).val('').trigger('change');
|
||||
|
||||
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 => {
|
||||
$(select_daerah).select2({
|
||||
placeholder: "Sila pilih daerah pelanggan",
|
||||
closeOnSelect: true,
|
||||
dropdownPosition: 'below',
|
||||
data: x,
|
||||
dropdownParent: $(modal),
|
||||
});
|
||||
})
|
||||
.then(() => $(select_daerah).val('').trigger('change'));
|
||||
|
||||
};
|
||||
|
||||
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 = '';
|
||||
input_daerah.readOnly = true;
|
||||
input_daerah.placeholder = '';
|
||||
};
|
||||
|
||||
$('select.select2-daerah').on('select2:select', function (e) {
|
||||
|
||||
let caller = e.target || e.srcElement;
|
||||
let modal = caller.closest('div.modal.fade');
|
||||
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)
|
||||
.then(response => response.json())
|
||||
.then(x => fetch(api_url + '/api/negeri/' + x.kodnegeri))
|
||||
.then(response => response.json())
|
||||
};
|
||||
|
||||
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(){
|
||||
let modal = document.querySelector('#daftar_pelanggan_mykad_reader');
|
||||
let input_poskod = modal.querySelector('input#poskod');
|
||||
let input_daerah = modal.querySelector('input#daerah');
|
||||
let input_negeri = modal.querySelector('input#negeri');
|
||||
let select_daerah = modal.querySelector('select#select-daerah');
|
||||
|
||||
input_poskod.value = '';
|
||||
input_poskod.readOnly = false;
|
||||
|
||||
input_daerah.value = '';
|
||||
input_daerah.closest('div.col-md-8').style.display = 'none';
|
||||
input_daerah.disabled = true;
|
||||
input_daerah.readOnly = true;
|
||||
|
||||
select_daerah.closest('div.col-md-8').style.display = 'block';
|
||||
select_daerah.disabled = true;
|
||||
select_daerah.readOnly = false;
|
||||
|
||||
// Handle stubborn select2
|
||||
let isSelect2exist = modal.querySelector('span.select2');
|
||||
|
||||
if(isSelect2exist){
|
||||
modal.querySelector('span.select2')
|
||||
.querySelector('span.select2-selection__rendered')
|
||||
.textContent = '';
|
||||
|
||||
$(select_daerah).select2('destroy');
|
||||
}
|
||||
|
||||
select_daerah.value = ''
|
||||
|
||||
input_negeri.value = '';
|
||||
input_negeri.readOnly = true;
|
||||
|
||||
input_poskod.focus();
|
||||
});
|
||||
@@ -6,6 +6,7 @@
|
||||
visibility: hidden;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
</style>
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
@@ -40,6 +41,9 @@
|
||||
@php
|
||||
$user_cawangan = strtolower(auth()->user()->cawangan_kerja->details_caw);
|
||||
$enabled_cawangan = array_map(fn($x) => strtolower($x), config('mykad-reader.enabled_cawangan'));
|
||||
|
||||
$is_in_pelanggan_main_page = request()->path() === 'pelanggan';
|
||||
|
||||
$is_enabled_to_use_mykad_reader = function () use($user_cawangan, $enabled_cawangan){
|
||||
|
||||
if(sizeof($enabled_cawangan) == 0){
|
||||
@@ -55,7 +59,8 @@
|
||||
};
|
||||
@endphp
|
||||
|
||||
@if( $is_enabled_to_use_mykad_reader() )
|
||||
|
||||
@if( $is_in_pelanggan_main_page && $is_enabled_to_use_mykad_reader() )
|
||||
<span class="btn btn-outline-primary" id="button_read_mykad">Baca MyKad</span>
|
||||
@endif
|
||||
</div>
|
||||
@@ -121,13 +126,7 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-4">Ahli</div>
|
||||
<div class="col-md-8">
|
||||
<select class="form-control" name="kumpulan_sahabat" id="kumpulan_sahabat">
|
||||
<option value="0">Tidak</option>
|
||||
<option value="1">Kumpulan PKINK</option>
|
||||
<option value="2">Sahabat</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
@@ -137,15 +136,20 @@
|
||||
<div class="col-md-4">Poskod</div>
|
||||
<div class="col-md-8"><input class="form-control" type="text" name="poskod" id="poskod" autocomplete="off" placeholder="Poskod"></div>
|
||||
<div class="col-md-4">Daerah</div>
|
||||
<div class="col-md-8"><input class="form-control" type="text" name="daerah" id="daerah" readonly autocomplete="off"></div>
|
||||
<div class="col-md-8" style="display: none;">
|
||||
<input class="form-control" type="text" name="daerah" id="daerah" autocomplete="off" readonly required>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<select class="select2-daerah form-control" name="select-daerah" id="select-daerah" data-placeholder="Sila pilih daerah" style="width: 100%;" readonly disabled></select>
|
||||
</div>
|
||||
<div class="col-md-4">Negeri</div>
|
||||
<div class="col-md-8"><input class="form-control" type="text" name="negeri" id="negeri" readonly autocomplete="off"></div>
|
||||
<div class="col-md-8"><input class="form-control" type="text" name="negeri" id="negeri" autocomplete="off" readonly required></div>
|
||||
<div class="col-md-4">Umur</div>
|
||||
<div class="col-md-8"><input class="form-control" type="text" name="age" id="age" readonly></div>
|
||||
<div class="col-md-4">Bangsa</div>
|
||||
<div class="col-md-8">
|
||||
<select class="form-control" name="bangsa" id="bangsa">
|
||||
<option selected value="M">Melayu</option>
|
||||
<option value="M">Melayu</option>
|
||||
<option value="C">Cina</option>
|
||||
<option value="I">India</option>
|
||||
<option value="L">Lain-lain</option>
|
||||
@@ -219,7 +223,7 @@
|
||||
<div class="col-md-6">
|
||||
<div class="row form-group">
|
||||
<div class="col-md-4">Nama</div>
|
||||
<div class="col-md-8"><input class="form-control" type="text" name="name" id="name" autocomplete="off" placeholder="Nama" readonly></div>
|
||||
<div class="col-md-8"><textarea class="form-control" style="resize:none" name="name" id="name" autocomplete="off" placeholder="Nama" readonly></textarea></div>
|
||||
<div class="col-md-4">No KP</div>
|
||||
<div class="col-md-8"><input class="form-control" type="text" name="noic" id="noic" value="{{$noic ?? ''}}" readonly></div>
|
||||
<div class="col-md-4">Tarikh Lahir</div>
|
||||
@@ -267,13 +271,18 @@
|
||||
<div class="col-md-6">
|
||||
<div class="row form-group">
|
||||
<div class="col-md-4">Alamat</div>
|
||||
<div class="col-md-8"><textarea class="form-control" style="resize:none" name="alamat" id="alamat" cols="30" rows="3" placeholder="Alamat Pelanggan" readonly></textarea></div>
|
||||
<div class="col-md-8"><textarea class="form-control" style="resize:none" name="alamat" id="alamat" cols="30" rows="3" placeholder="Alamat Pelanggan"></textarea></div>
|
||||
<div class="col-md-4">Poskod</div>
|
||||
<div class="col-md-8"><input class="form-control" type="text" name="poskod" id="poskod" autocomplete="off" placeholder="Poskod" readonly></div>
|
||||
<div class="col-md-4">Daerah</div>
|
||||
<div class="col-md-8"><input class="form-control" type="text" name="daerah" id="daerah" readonly autocomplete="off" readonly></div>
|
||||
<div class="col-md-8">
|
||||
<input class="form-control" type="text" name="daerah" id="daerah" autocomplete="off" readonly required>
|
||||
</div>
|
||||
<div class="col-md-8" style="display: none;">
|
||||
<select class="select2-daerah form-control" name="select-daerah" id="select-daerah" data-placeholder="Pilih daerah" style="width: 100%;" readonly disabled></select>
|
||||
</div>
|
||||
<div class="col-md-4">Negeri</div>
|
||||
<div class="col-md-8"><input class="form-control" type="text" name="negeri" id="negeri" readonly autocomplete="off" readonly></div>
|
||||
<div class="col-md-8"><input class="form-control" type="text" name="negeri" id="negeri" readonly autocomplete="off" required></div>
|
||||
<div class="col-md-4">Umur</div>
|
||||
<div class="col-md-8"><input class="form-control" type="text" name="age" id="age" readonly></div>
|
||||
<div class="col-md-4">Bangsa</div>
|
||||
@@ -393,9 +402,12 @@
|
||||
<div class="col-md-4">Poskod</div>
|
||||
<div class="col-md-8"><input class="form-control" type="text" name="poskod" id="passport_poskod" autocomplete="off" placeholder="Poskod"></div>
|
||||
<div class="col-md-4">Daerah</div>
|
||||
<div class="col-md-8"><input class="form-control" type="text" name="daerah" id="passport_daerah" readonly autocomplete="off"></div>
|
||||
<div class="col-md-8" style="display: none;"><input class="form-control" type="text" name="daerah" id="passport_daerah" autocomplete="off" readonly required></div>
|
||||
<div class="col-md-8">
|
||||
<select class="select2-daerah form-control" name="select-daerah" id="select-daerah" data-placeholder="Pilih daerah" style="width: 100%;" readonly disabled></select>
|
||||
</div>
|
||||
<div class="col-md-4">Negeri</div>
|
||||
<div class="col-md-8"><input class="form-control" type="text" name="negeri" id="passport_negeri" readonly autocomplete="off"></div>
|
||||
<div class="col-md-8"><input class="form-control" type="text" name="negeri" id="passport_negeri" autocomplete="off" readonly ></div>
|
||||
<div class="col-md-4">Umur</div>
|
||||
<div class="col-md-8"><input class="form-control" type="text" name="age" id="passport_age" readonly></div>
|
||||
<div class="col-md-4">Bangsa</div>
|
||||
@@ -555,6 +567,14 @@
|
||||
method:'GET',
|
||||
url:api_url+'/api/poskod/'+poskod,
|
||||
success:function(poskod_detail){
|
||||
|
||||
let parent_modal = document.querySelector('#daftar_pelanggan');
|
||||
|
||||
if(Object.keys(poskod_detail).length === 0){
|
||||
handlePoskodDetail_NotFound_MyKad(parent_modal);
|
||||
return;
|
||||
}
|
||||
|
||||
var koddaerah = poskod_detail['koddaerah'];
|
||||
var kodnegeri = poskod_detail['kodnegeri'];
|
||||
$.ajax({
|
||||
@@ -571,10 +591,50 @@
|
||||
$('#daerah').val(daerah['namadaerah']);
|
||||
}
|
||||
});
|
||||
|
||||
handlePoskodDetail_Found_MyKad(parent_modal);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('#daftar_pelanggan_mykad_reader input#poskod').change(function(){
|
||||
var poskod = this.value;
|
||||
|
||||
$.ajax({
|
||||
method:'GET',
|
||||
url:api_url+'/api/poskod/'+poskod,
|
||||
success:function(poskod_detail){
|
||||
|
||||
let parent_modal = document.querySelector('#daftar_pelanggan_mykad_reader');
|
||||
|
||||
if(Object.keys(poskod_detail).length === 0){
|
||||
handlePoskodDetail_NotFound_MyKad(parent_modal);
|
||||
return;
|
||||
}
|
||||
|
||||
var koddaerah = poskod_detail['koddaerah'];
|
||||
var kodnegeri = poskod_detail['kodnegeri'];
|
||||
$.ajax({
|
||||
url:api_url+'/api/negeri/'+kodnegeri,
|
||||
method:'GET',
|
||||
success:function(negeri){
|
||||
$('#daftar_pelanggan_mykad_reader #negeri').val(negeri['negeri']);
|
||||
}
|
||||
});
|
||||
$.ajax({
|
||||
url:api_url+'/api/daerah/'+koddaerah,
|
||||
method:'GET',
|
||||
success:function(daerah){
|
||||
$('#daftar_pelanggan_mykad_reader #daerah').val(daerah['namadaerah']);
|
||||
}
|
||||
});
|
||||
|
||||
handlePoskodDetail_Found_MyKad(parent_modal);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
$('#passport_poskod').change(function(){
|
||||
var poskod = this.value;
|
||||
|
||||
@@ -582,6 +642,13 @@
|
||||
method:'GET',
|
||||
url:api_url+'/api/poskod/'+poskod,
|
||||
success:function(poskod_detail){
|
||||
let parent_modal = document.querySelector('#passport_pelanggan');
|
||||
|
||||
if(Object.keys(poskod_detail).length === 0){
|
||||
handlePoskodDetail_NotFound_Passport(parent_modal);
|
||||
return;
|
||||
}
|
||||
|
||||
var koddaerah = poskod_detail['koddaerah'];
|
||||
var kodnegeri = poskod_detail['kodnegeri'];
|
||||
$.ajax({
|
||||
@@ -598,6 +665,8 @@
|
||||
$('#passport_daerah').val(daerah['namadaerah']);
|
||||
}
|
||||
});
|
||||
|
||||
handlePoskodDetail_Found_Passport(parent_modal);
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -1206,9 +1275,11 @@
|
||||
// mycard-read endpoint initialization
|
||||
let mykad_reader_endpoint = "{{ config('mykad-reader.endpoint') }}";
|
||||
let wakil_caricustomer_endpoint = "{{ route('wakil.caricustomer') }}";
|
||||
let mykad_reader_driver_endpoint = "{{ route('mykadreader.driver') }}";
|
||||
</script>
|
||||
<script src="{{ asset('js/iris-mykad-websocket-client-api.js') }}"></script>
|
||||
<script src="{{ asset('js/mykad-reader-customer.js') }}"></script>
|
||||
<script src="{{ asset('js/postcode-concerns.js') }}"></script>
|
||||
@endpush
|
||||
|
||||
@endsection
|
||||
|
||||
@@ -76,6 +76,15 @@
|
||||
flex-direction: column;
|
||||
align-items: flex-start !important;
|
||||
}
|
||||
|
||||
.select2-container .select2-selection--single {
|
||||
height: 37px;
|
||||
}
|
||||
|
||||
.select2-container .select2-selection--single .select2-selection__rendered {
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
</head>
|
||||
@@ -318,11 +327,11 @@
|
||||
|
||||
</nav>
|
||||
@if ($auth_user['roles'] == 'ppc' || $auth_user['roles'] == 'pc')
|
||||
|
||||
@php
|
||||
|
||||
@php
|
||||
$current = Carbon\Carbon::now();
|
||||
$tarikhsemasa = $current->toDateString();
|
||||
|
||||
|
||||
$cawangan = App\CawanganAR::where('kodcaw',$auth_user['cawangan'])->get()->toArray();
|
||||
$getVault = Http::withOptions(['verify' => config('app.api_verify')])->get(config('api.url').'/api/TunaiDiTangan/' . $auth_user['cawangan'],['tarikh' => $tarikhsemasa])->json();
|
||||
@endphp
|
||||
@@ -359,7 +368,7 @@
|
||||
</script>
|
||||
@endif
|
||||
|
||||
|
||||
|
||||
<main class="py-4">
|
||||
@yield('content')
|
||||
</main>
|
||||
|
||||
@@ -0,0 +1,247 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>Muat Turun</title>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.2/d3.min.js"
|
||||
integrity="sha512-+uTBQREQVLccPeGbB3Q0R5TC/1mfAoRg9fomTL3iOb+kpCCWS5WjMdM1dYE1e1dB/pxEi0Zc2VdFJcCT72QyuA=="
|
||||
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<style>
|
||||
@import url(https://fonts.googleapis.com/css?family=Open+Sans:800);
|
||||
|
||||
.container-countdown {
|
||||
margin: auto;
|
||||
width: 400px;
|
||||
}
|
||||
|
||||
.path--background {
|
||||
fill: rgb(34, 213, 201);
|
||||
stroke: #fff;
|
||||
stroke-width: 0px;
|
||||
}
|
||||
|
||||
.pulse {
|
||||
fill: rgb(255, 74, 74) !important;
|
||||
}
|
||||
|
||||
.path--foreground {
|
||||
fill: #eee;
|
||||
stroke: #eee;
|
||||
stroke-width: 2px;
|
||||
}
|
||||
|
||||
.label {
|
||||
font: 90px "Open Sans";
|
||||
font-weight: 900;
|
||||
text-anchor: middle;
|
||||
fill: rgb(34, 213, 201);
|
||||
}
|
||||
|
||||
|
||||
h1 {
|
||||
font: "Open Sans";
|
||||
font-weight: 900;
|
||||
text-anchor: middle;
|
||||
}
|
||||
|
||||
.container-page {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
/* for single line flex container */
|
||||
align-content: center;
|
||||
/* for multi-line flex container */
|
||||
height: 100vh;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container-page">
|
||||
<div class="container-countdown"></div>
|
||||
</div>
|
||||
<script>
|
||||
var width = 400,
|
||||
height = 400,
|
||||
timePassed = 0,
|
||||
timeLimit = 15;
|
||||
|
||||
var fields = [{
|
||||
value: timeLimit,
|
||||
size: timeLimit,
|
||||
update: function() {
|
||||
return timePassed = timePassed + 1;
|
||||
}
|
||||
}];
|
||||
|
||||
var nilArc = d3.svg.arc()
|
||||
.innerRadius(width / 3 - 133)
|
||||
.outerRadius(width / 3 - 133)
|
||||
.startAngle(0)
|
||||
.endAngle(2 * Math.PI);
|
||||
|
||||
var arc = d3.svg.arc()
|
||||
.innerRadius(width / 3 - 55)
|
||||
.outerRadius(width / 3 - 25)
|
||||
.startAngle(0)
|
||||
.endAngle(function(d) {
|
||||
return ((d.value / d.size) * 2 * Math.PI);
|
||||
});
|
||||
|
||||
var svg = d3.select(".container-countdown").append("svg")
|
||||
.attr("width", width)
|
||||
.attr("height", height);
|
||||
|
||||
var field = svg.selectAll(".field")
|
||||
.data(fields)
|
||||
.enter().append("g")
|
||||
.attr("transform", "translate(" + width / 2 + "," + height / 2 + ")")
|
||||
.attr("class", "field");
|
||||
|
||||
var back = field.append("path")
|
||||
.attr("class", "path path--background")
|
||||
.attr("d", arc);
|
||||
|
||||
var path = field.append("path")
|
||||
.attr("class", "path path--foreground");
|
||||
|
||||
var label = field.append("text")
|
||||
.attr("class", "label")
|
||||
.attr("dy", ".35em");
|
||||
|
||||
addWaitingText();
|
||||
|
||||
(function update() {
|
||||
|
||||
field
|
||||
.each(function(d) {
|
||||
d.previous = d.value, d.value = d.update(timePassed);
|
||||
});
|
||||
|
||||
path.transition()
|
||||
.ease("elastic")
|
||||
.duration(500)
|
||||
.attrTween("d", arcTween);
|
||||
|
||||
if ((timeLimit - timePassed) <= 10)
|
||||
pulseText();
|
||||
else
|
||||
label
|
||||
.text(function(d) {
|
||||
return d.size - d.value;
|
||||
});
|
||||
|
||||
if (timePassed <= timeLimit)
|
||||
setTimeout(update, 1000 - (timePassed % 1000));
|
||||
else{
|
||||
|
||||
destroyTimer();
|
||||
destroyWaitingText();
|
||||
|
||||
downloadMyKadDriver()
|
||||
.then(() => redirectToPagePelanggan());
|
||||
|
||||
}
|
||||
|
||||
})();
|
||||
|
||||
function pulseText() {
|
||||
back.classed("pulse", true);
|
||||
label.classed("pulse", true);
|
||||
|
||||
if ((timeLimit - timePassed) >= 0) {
|
||||
label.style("font-size", "120px")
|
||||
.attr("transform", "translate(0," + +4 + ")")
|
||||
.text(function(d) {
|
||||
return d.size - d.value;
|
||||
});
|
||||
}
|
||||
|
||||
label.transition()
|
||||
.ease("elastic")
|
||||
.duration(900)
|
||||
.style("font-size", "90px")
|
||||
.attr("transform", "translate(0," + -10 + ")");
|
||||
}
|
||||
|
||||
function destroyTimer() {
|
||||
label.transition()
|
||||
.ease("back")
|
||||
.duration(700)
|
||||
.style("opacity", "0")
|
||||
.style("font-size", "5")
|
||||
.attr("transform", "translate(0," + -40 + ")")
|
||||
.each("end", function() {
|
||||
field.selectAll("text").remove()
|
||||
});
|
||||
|
||||
path.transition()
|
||||
.ease("back")
|
||||
.duration(700)
|
||||
.attr("d", nilArc);
|
||||
|
||||
back.transition()
|
||||
.ease("back")
|
||||
.duration(700)
|
||||
.attr("d", nilArc)
|
||||
.each("end", function() {
|
||||
field.selectAll("path").remove()
|
||||
});
|
||||
}
|
||||
|
||||
function arcTween(b) {
|
||||
var i = d3.interpolate({
|
||||
value: b.previous
|
||||
}, b);
|
||||
return function(t) {
|
||||
return arc(i(t));
|
||||
};
|
||||
}
|
||||
|
||||
function addWaitingText()
|
||||
{
|
||||
var waiting_text = document.createElement("h1");
|
||||
waiting_text.innerHTML= "sila tunggu sebentar ... "
|
||||
waiting_text.style.marginTop = "0px";
|
||||
waiting_text.style.textAlign = "center";
|
||||
document.querySelector("svg").after(waiting_text);
|
||||
|
||||
}
|
||||
|
||||
function destroyWaitingText()
|
||||
{
|
||||
var waiting_text = document.querySelector("h1");
|
||||
waiting_text.innerHTML= "";
|
||||
}
|
||||
|
||||
let redirectToPagePelanggan = () => {
|
||||
let pelanggan_url = "{{ url('pelanggan') }}";
|
||||
window.location.href = pelanggan_url
|
||||
};
|
||||
|
||||
function downloadMyKadDriver()
|
||||
{
|
||||
let download_driver_file_url = "{{ route('mykadreader.driver.download') }}";
|
||||
|
||||
let downloadDriverFile = () => {
|
||||
return fetch(download_driver_file_url)
|
||||
.then(response => response.blob())
|
||||
.then(blob => {
|
||||
const link = document.createElement("a");
|
||||
link.href = URL.createObjectURL(blob);
|
||||
link.download = 'MyKadReaderDriver.zip';
|
||||
link.click();
|
||||
})
|
||||
.catch(e => console.log(e))
|
||||
};
|
||||
|
||||
return downloadDriverFile();
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use App\Services\ImbangdugaServices;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Web Routes
|
||||
@@ -375,3 +376,10 @@ Route::get('admin/searchpelanggan',['as'=>'admin.searchpelanggan','uses'=>'Khaza
|
||||
Route::get('admin/poskod',['as'=>'admin.poskod','uses'=>'HomeController@poskod']);
|
||||
|
||||
Route::get('pembeliannotifykomuditi',['as'=>'beli.notifyKomoditi','uses'=>'OperasiController@notifyKomoditi'])->middleware('auth','operasi');
|
||||
|
||||
Route::get('supports/driver/mykad-reader',['as'=>'mykadreader.driver', function(){
|
||||
return view('supports.driver.mykad-reader.download');
|
||||
}])->middleware('auth','teller');
|
||||
Route::get('supports/driver/mykad-reader/download',['as'=>'mykadreader.driver.download', function(){
|
||||
return Storage::disk('supports')->download('MykadReaderDriver.zip');
|
||||
}])->middleware('auth','teller');
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user