register passport

This commit is contained in:
Afiq
2021-01-18 14:48:44 +08:00
parent d70eb2e7d2
commit 1ed798f664
5 changed files with 466 additions and 22 deletions
+14 -3
View File
@@ -33,9 +33,10 @@ class CustomersController extends Controller
$search = false;
$api_url = config('api.url');
$auth_user = Auth::user();
$idtype = 'nokp';
$cawangan_info = Http::get(config('api.url') . '/api/cawangan/'. $auth_user['cawangan'])->json();
$bank = Http::get(config('api.url') . '/api/bank')->json();
return view('customers.index',compact('search','cawangan_info','bank','api_url'));
return view('customers.index',compact('search','cawangan_info','bank','api_url','idtype'));
}
public function info(Request $request){
@@ -54,7 +55,9 @@ class CustomersController extends Controller
}
public function search(Request $request){
// dd($request->all());
$noic = $request->noic;
$idtype = $request->customerIDType;
Session::put('noic', $noic);
$api_url = config('api.url');
$auth_user = Auth::user();
@@ -75,7 +78,7 @@ class CustomersController extends Controller
Session::put('customer_info',$customer_info);
return redirect()->route('customer_info')->with( ['customer_info' => $customer_info,'cawangan_info'=>$cawangan_info,'api_url'=>$api_url]);
}else{
return view('customers.index',compact('customer_info','search','noic','cawangan_info','bank','api_url'));
return view('customers.index',compact('customer_info','search','noic','cawangan_info','bank','api_url','idtype'));
}
}
@@ -109,6 +112,13 @@ class CustomersController extends Controller
*/
public function store(Request $request)
{
if($request->idtype == 'nokp'){
$nokpbaru = $request->noic;
$nokplama = '';
}elseif($request->idtype == 'passport'){
$nokpbaru = '';
$nokplama = $request->noic;
}
if($request->warganegara){
$warganegara = 'Y';
}else{
@@ -146,7 +156,8 @@ class CustomersController extends Controller
$customer_info = Http::post(config('api.url') . '/api/customers/create/'. $auth_user['cawangan'],[
'kodcaw' => $auth_user['cawangan'],
'nopelanggan' => $no_pelanggan,
'nokp' => $request->noic,
'nokpbaru' => $nokpbaru,
'nokplama' => $nokplama,
'nama' => $request->name,
't_lahir' => $tarikhlahir->toDateString(),
'jantina' => $jantina,
+1 -1
View File
@@ -16,7 +16,7 @@ class User extends Authenticatable
* @var array
*/
protected $fillable = [
'name', 'email', 'password','roles','no_kp','no_telefon','cawangan','role_harian','perubatan',
'name', 'email', 'password','roles','no_kp','no_telefon','cawangan','role_harian','perubatan','role_dashboard',
];
/**
+442 -17
View File
@@ -14,11 +14,17 @@
<div class="card-body">
<div class="text-center">
<h5 class="text-uppercase">masukkan nombor kad pengenalan</h5>
<form name="frmsearch" action="{{ route('customer.search') }}" method="GET">
<form name="frmsearch" onsubmit="verifynokp()" action="{{ route('customer.search') }}" method="GET">
<div class="row justify-content-center">
<div class="col-md-7">
<div class="col-md-9">
<div class="input-group my-3">
<input type="text" class="form-control" name="noic" placeholder="No Kad Pengenalan Pelanggan" aria-label="No Kad Pengenalan Pelanggan" autocomplete="off" value="{{$search == false ? '' : $noic ?? ''}}" aria-describedby="button-addon2">
<input type="text" class="form-control" id="noic" name="noic" placeholder="No Kad Pengenalan Pelanggan" aria-label="No Kad Pengenalan Pelanggan" autocomplete="off" value="{{$search == false ? '' : $noic ?? ''}}" aria-describedby="button-addon2">
<div class="input-group-append">
<select class="form-select" id="customerIDType" name="customerIDType">
<option value="nokp" {{ $idtype == 'nokp' ? 'selected' : ''}}>Kad Pengenalan</option>
<option value="passport" {{ $idtype == 'passport' ? 'selected' : ''}}>Passport</option>
</select>
</div>
<div class="input-group-append">
<button class="btn btn-outline-primary" type="submit" id="button-addon2">Cari</button>
</div>
@@ -29,14 +35,14 @@
</div>
@if($search == true )
<div class="text-center mt-3">
<button type="button" style="margin:auto" class="btn btn-primary" data-toggle="modal" data-target="#daftar_pelanggan">
<button type="button" style="margin:auto" class="btn btn-primary" onclick="newcustomer()">
Daftar Pelanggan
</button>
</div>
@endif
</div>
</div>
<!-- Modal -->
<!-- Modal No KP -->
<div class="modal fade" id="daftar_pelanggan" tabindex="-1" data-backdrop="static" aria-labelledby="ModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
@@ -172,6 +178,141 @@
</div>
<div class="modal-footer">
<input type="text" hidden name="idtype" value="nokp">
<button type="button" class="btn btn-danger" data-dismiss="modal">Batal</button>
<input type="submit" name="submit" class="btn btn-primary" value="Terima">
</div>
</form>
</div>
</div>
</div>
<!-- Modal Passport -->
<div class="modal fade" id="passport_pelanggan" tabindex="-1" data-backdrop="static" aria-labelledby="ModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="ModalLabel">Daftar Pelanggan</h5>
</div>
<div class="modal-body">
<form action="{{ route('customer.store') }}" onsubmit="verifycustomerpassport()" method="POST">
@csrf
<div class="row form-group">
<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="passport_name" autocomplete="off" placeholder="Nama"></div>
<div class="col-md-4">No KP</div>
<div class="col-md-8"><input class="form-control" readonly type="text" name="noic" id="passport_noic" value="{{$noic ?? ''}}"></div>
<div class="col-md-4">Tarikh Lahir</div>
<div class="col-md-8"><input class="form-control" type="text" placeholder="Tarikh Lahir" onchange="calculatePassportAge()" name="tarikh_lahir" id="passport_tarikh_lahir"></div>
<div class="col-md-4">Jantina</div>
<div class="col-md-8">
<select name="jantina" id="jantina_passport" class="form-control">
<option value="Lelaki" selected>Lelaki</option>
<option value="Perempuan">Perempuan</option>
</select>
</div>
<div class="col-md-4">Alamat</div>
<div class="col-md-8"><textarea class="form-control" style="resize:none" name="alamat" id="passport_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="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-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-4">No Telefon 1</div>
<div class="col-md-8"><input class="form-control" type="text" name="main_phone" id="passport_main_phone" autocomplete="off" placeholder="No Telefon"></div>
<div class="col-md-4">No Telefon 2</div>
<div class="col-md-8"><input class="form-control" type="text" name="alternate_phone" id="passport_alternate_phone" autocomplete="off" placeholder="No Telefon"></div>
<div class="col-md-4">Agama</div>
<div class="col-md-8">
<select class="form-control" name="agama" id="passport_agama">
<option selected value="01">Islam</option>
<option value="02">Hindu</option>
<option value="03">Buddha</option>
<option value="04">Kristian</option>
<option value="05">Lain-lain</option>
</select>
</div>
<div class="col-md-4">Ahli</div>
<div class="col-md-8">
<select class="form-control" name="kumpulan_sahabat" id="passport_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">
<div class="row form-group">
<div class="col-md-12" style="margin-left:auto;margin-right:auto">
<img src="" id="passport_preview" style="width:250px;height:250px" class="img-thumbnail">
</div>
<div class="col-md-12">
<input type="file" name="customer_image" id="passport_customer_image" accept="image/*">
<!-- <input type="file" name="customer_image" id="passport_customer_image" class="file" accept="image/*">
<div class="input-group my-3">
<input type="text" class="form-control" readonly placeholder="Upload File" id="passport_file" name="file">
<div class="input-group-append">
<button type="button" class="browse btn btn-primary">Browse...</button>
</div>
</div> -->
</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>
<div class="col-md-8">
<select class="form-control" name="bangsa" id="passport_bangsa">
<option selected value="M">Melayu</option>
<option value="C">Cina</option>
<option value="I">India</option>
<option value="L">Lain-lain</option>
</select>
</div>
<div class="col-md-4">Bank</div>
<div class="col-md-8">
<select class="form-control" name="bank_name" data-placeholder="Pilih Bank" id="passport_bank_name">
<option disabled selected value> -- Pilih Bank -- </option>
@foreach($bank as $banks)
<option value="{{ $banks['abbreviation'] }}">{{ $banks['name'] }}</option>
@endforeach
</select>
</div>
<div class="col-md-4">No Akaun</div>
<div class="col-md-8"><input class="form-control" type="text" name="no_akaun" id="passport_no_akaun" placeholder="No Akaun Bank"></div>
<div class="col-md-4">Tujuan Gadai</div>
@php
$tujuangadai = Http::get($api_url . '/api/tujuangadai')->json();
@endphp
<div class="col-md-8">
<select class="form-control" name="tujuan_gadai" data-placeholder="Pilih Tujuan Gadai" id="passport_tujuan_gadai">
<option disabled selected value> -- Pilih Tujuan Gadai -- </option>
@foreach($tujuangadai as $tujuan)
<option value="{{ $tujuan['keterangan'] }}">{{ $tujuan['keterangan'] }}</option>
@endforeach
</select>
</div>
<div class="col-md-4">Pekerjaan</div>
@php
$pekerjaan = Http::get($api_url . '/api/pekerjaan')->json();
@endphp
<div class="col-md-8">
<select class="form-control" name="pekerjaan" data-placeholder="Pilih Pekerjaan" id="passport_pekerjaan">
<option disabled selected value> -- Pilih Pekerjaan -- </option>
@foreach($pekerjaan as $kerja)
<option value="{{ $kerja['kodkerja'] }}">{{ $kerja['keterangan'] }}</option>
@endforeach
</select>
</div>
<div class="col-md-4">Nota</div>
<div class="col-md-8"><input class="form-control" type="text" name="nota" id="passport_nota" placeholder="Nota"></div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<input type="text" hidden name="idtype" value="passport">
<button type="button" class="btn btn-danger" data-dismiss="modal">Batal</button>
<input type="submit" name="submit" class="btn btn-primary" value="Terima">
</div>
@@ -184,15 +325,52 @@
</div>
<script>
var api_url = "<?php echo $api_url ?>";
var search = "<?php echo $search ?>";
var type_id = "<?php echo $idtype ?>";
$(document).ready(function(){
$('#passport_tarikh_lahir').datepicker({
format: 'dd/mm/yyyy',
endDate: new Date()
});
var noic = $('#noic').val();
identifyIC(noic);
if(search == true){
Swal.fire({
icon: 'info',
title: 'Pelanggan Tiada Dalam Rekod!',
text: 'Sila Daftar Pelanggan'
});
event.preventDefault();
return false;
}
});
function calculatePassportAge(){
var passport_lahir = $('#passport_tarikh_lahir').val();
var split_date = passport_lahir.split('/');
var count_leap_year = countLeapYears(split_date[2],split_date[1],split_date[0]) - 1;
var start = new Date(split_date[2] + '-' + split_date[1] + '-' + split_date[0]),
end = new Date(),
diff = new Date(end - start),
days = ((diff/1000/60/60/24)- count_leap_year)/365;
var age = parseInt(days);
$('#passport_age').val(age);
}
function newcustomer(){
var id_type = $('#customerIDType').val();
if(id_type=='nokp'){
$('#daftar_pelanggan').modal('show');
}else if(id_type=='passport'){
$('#passport_pelanggan').modal('show');
}
}
$('#warganegara').on('click',function(){
// console.log(this);
if(this.checked == false) {
$('#bumiputera').prop('checked',false);
}
@@ -228,7 +406,6 @@
method:'GET',
url:api_url+'/api/poskod/'+poskod,
success:function(poskod_detail){
// console.log(poskod_detail);
var koddaerah = poskod_detail['koddaerah'];
var kodnegeri = poskod_detail['kodnegeri'];
$.ajax({
@@ -249,13 +426,50 @@
});
});
$('#passport_poskod').change(function(){
var poskod = this.value;
$.ajax({
method:'GET',
url:api_url+'/api/poskod/'+poskod,
success:function(poskod_detail){
var koddaerah = poskod_detail['koddaerah'];
var kodnegeri = poskod_detail['kodnegeri'];
$.ajax({
url:api_url+'/api/negeri/'+kodnegeri,
method:'GET',
success:function(negeri){
$('#passport_negeri').val(negeri['negeri']);
}
});
$.ajax({
url:api_url+'/api/daerah/'+koddaerah,
method:'GET',
success:function(daerah){
$('#passport_daerah').val(daerah['namadaerah']);
}
});
}
});
});
function verifycustomer(){
var customername = $('#name').val();
var customeralamat = $('#alamat').val();
var customerposkod = $('#poskod').val();
var customerphone = $('#main_phone').val();
var customerphone_alternate = $('#alternate_phone').val();
var age = $('#age').val();
if(age < 18){
Swal.fire({
icon: 'error',
title: 'Amaran!',
text: 'Umur Pelanggan Tidak Mencukupi 18 Tahun'
});
event.preventDefault();
return false;
}
if(customername == ''){
Swal.fire({
icon: 'error',
@@ -323,12 +537,12 @@
}else{
if($.isNumeric(customerphone) == false){
Swal.fire({
icon: 'error',
title: 'Amaran!',
text: 'Sila Masukkan Nombor Sahaja Pada No Telefon Pelanggan'
});
event.preventDefault();
return false;
icon: 'error',
title: 'Amaran!',
text: 'Sila Masukkan Nombor Sahaja Pada No Telefon Pelanggan'
});
event.preventDefault();
return false;
}
}
}
@@ -344,12 +558,139 @@
}else{
if($.isNumeric(customerphone_alternate) == false){
Swal.fire({
icon: 'error',
title: 'Amaran!',
text: 'Sila Masukkan Nombor Sahaja Pada No Telefon Pelanggan'
});
event.preventDefault();
return false;
}
}
}
return true;
}
function verifycustomerpassport(){
var customername = $('#passport_name').val();
var customeralamat = $('#passport_alamat').val();
var customerposkod = $('#passport_poskod').val();
var customerphone = $('#passport_main_phone').val();
var customerphone_alternate = $('#passport_alternate_phone').val();
var tarikh_lahir = $('#passport_tarikh_lahir').val();
var age = $('#passport_age').val();
if(age < 18){
Swal.fire({
icon: 'error',
title: 'Amaran!',
text: 'Umur Pelanggan Tidak Mencukupi 18 Tahun'
});
event.preventDefault();
return false;
}
if(customername == ''){
Swal.fire({
icon: 'error',
title: 'Amaran!',
text: 'Sila Masukkan Nama Pelanggan'
});
event.preventDefault();
return false;
}
if(tarikh_lahir == ''){
Swal.fire({
icon: 'error',
title: 'Amaran!',
text: 'Sila Masukkan Tarikh Lahir Pelanggan'
});
event.preventDefault();
return false;
}
if(customeralamat == ''){
Swal.fire({
icon: 'error',
title: 'Amaran!',
text: 'Sila Masukkan Alamat Pelanggan'
});
event.preventDefault();
return false;
}
if(customerposkod == ''){
Swal.fire({
icon: 'error',
title: 'Amaran!',
text: 'Sila Masukkan Poskod'
});
event.preventDefault();
return false;
}else{
if(customerposkod.length != 5){
Swal.fire({
icon: 'error',
title: 'Amaran!',
text: 'Sila Masukkan Nombor Sahaja Pada No Telefon Pelanggan'
text: 'Sila Periksa Poskod'
});
event.preventDefault();
return false;
}else{
if($.isNumeric(customerposkod) == false){
Swal.fire({
icon: 'error',
title: 'Amaran!',
text: 'Sila Periksa Poskod'
});
event.preventDefault();
return false;
}
}
}
if(customerphone == ''){
Swal.fire({
icon: 'error',
title: 'Amaran!',
text: 'Sila Masukkan No Telefon Pelanggan'
});
event.preventDefault();
return false;
}else{
if(customerphone.length < 8 && customerphone.length > 12){
Swal.fire({
icon: 'error',
title: 'Amaran!',
text: 'Sila Periksa No Telefon Pelanggan'
});
event.preventDefault();
return false;
}else{
if($.isNumeric(customerphone) == false){
Swal.fire({
icon: 'error',
title: 'Amaran!',
text: 'Sila Masukkan Nombor Sahaja Pada No Telefon Pelanggan'
});
event.preventDefault();
return false;
}
}
}
if(customerphone_alternate != ''){
if(customerphone_alternate.length < 8 && customerphone_alternate.length > 12){
Swal.fire({
icon: 'error',
title: 'Amaran!',
text: 'Sila Periksa No Telefon Pelanggan'
});
event.preventDefault();
return false;
}else{
if($.isNumeric(customerphone_alternate) == false){
Swal.fire({
icon: 'error',
title: 'Amaran!',
text: 'Sila Masukkan Nombor Sahaja Pada No Telefon Pelanggan'
});
event.preventDefault();
return false;
}
}
}
@@ -431,9 +772,17 @@
}else if(unknown_ic.indexOf(nl)>=0){
var negeri_lahir = 'Negeri Tidak Diketahui';
}
var date = new Date(year, (month - 1), day, 0, 0, 0, 0);
var age = parseInt(now,10) - date.getFullYear();
var tarikh_lahir_test = date.getFullYear() + '-' + month + '-' + day;
var count_leap_year = countLeapYears(date.getFullYear(),month,day) - 1;
var start = new Date(tarikh_lahir_test),
end = new Date(),
diff = new Date(end - start),
days = ((diff/1000/60/60/24)- count_leap_year)/365;
var age = parseInt(days);
$('#age').val(age);
var tarikh_lahir = day + '/' + month + '/' + date.getFullYear();
$('#jantina').val(jantina);
@@ -441,5 +790,81 @@
$('#negeri_lahir').val(negeri_lahir);
}
}
var countLeapYears = function(y,m,d){
var yearNow = new Date().getFullYear(),
yearThen = y,
beginYear = 0,
endYear = 0,
leapYearCount = 0;
var isLeapYear = function(year){
return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
}
if(yearNow < y){
beginYear = yearNow;
endYear = y;
}else if(yearNow > y){
beginYear = y;
endYear = yearNow;
}else if(yearNow == y){
beginYear = y;
endYear = y;
}
for(i = beginYear; i <= endYear; i++){
if(isLeapYear(i)){
leapYearCount++;
}
}
return leapYearCount;
}
function verifynokp(){
var id_type = $('#customerIDType').val();
var nokp = $('#noic').val();
if(id_type=='nokp'){
if($.isNumeric(nokp) == false){
Swal.fire({
icon: 'error',
title: 'Amaran!',
text: 'Sila Masukkan Nombor Sahaja Pada No KP Pelanggan'
});
event.preventDefault();
return false;
}
if(nokp.length != 12){
Swal.fire({
icon: 'error',
title: 'Amaran!',
text: 'Sila Periksa No KP Pelanggan'
});
event.preventDefault();
return false;
}
}else if(id_type=='passport'){
if(nokp.length < 5){
Swal.fire({
icon: 'error',
title: 'Amaran!',
text: 'Sila Periksa Passport Pelanggan'
});
event.preventDefault();
return false;
}
if(nokp.indexOf(' ') > 0){
Swal.fire({
icon: 'error',
title: 'Amaran!',
text: 'Sila Masukkan Passport Tanpa Ruang \'Kosong\' \n e.g(AP1111111)'
});
event.preventDefault();
return false;
}
}
}
</script>
@endsection
+1 -1
View File
@@ -49,7 +49,7 @@
var today = new Date();
var d = today.getDate();
var mon = today.getMonth()+1;
var y = today.getFullYear()
var y = today.getFullYear();
var h = today.getHours();
var m = today.getMinutes();
var s = today.getSeconds();
+8
View File
@@ -17,3 +17,11 @@ use Illuminate\Support\Facades\Route;
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Route::group(['prefix' => 'mobile'], function () {
Route::post('/login', 'MobileController@login');
Route::get('/all', 'MobileController@index');
Route::post('/logout', 'MobileController@logout');
Route::post('/register/customer','Auth/RegisterController@registerCustomerMobile');
Route::post('password/email', 'ForgotPasswordMobileController@forgot');
});