Files
gps-frontend/resources/views/menu_v2/Finance/_dana.blade.php
meusinfirmary 7b85e1e376 update
2025-06-17 09:44:24 +09:00

143 lines
6.1 KiB
PHP
Executable File

@extends('app.app')
@section('title')
Finance - Dana
@endsection
@section('content')
<div class="container-fluid">
<div class="content">
<div class="row">
<div class="col-sm-12 col-md-6">
<div class="card">
<div class="card-body">
<p class="text-dark text-bold mb-2">Konfigurasi Dana</p>
<p class="mb-2 border-bottom"></p>
<form id="formDanaUpdt">
<div class="form-group mb-3 d-none">
<label for="dana_id" class="form-label">Saldo Dana <span class="text-danger">*</span></label>
<input type="number" id="dana_id" name="dana_id" class="form-control" value="{{ $dana->id }}" required />
</div>
<div class="form-group mb-3">
<label for="amt" class="form-label">Saldo Dana <span class="text-danger">*</span></label>
<input type="text" id="amt" name="amt" class="form-control" value="{{ $dana->amt }}" required />
</div>
<div class="form-group mb-3 text-end">
<button type="button" id="btnUpdtDana" class="btn btn-sm btn-primary">Save</button>
<div id="btnUpdtDanaSpinner" class="d-none">
<div class="spinner-border" role="status">
<span class="visually-hidden">Loading...</span>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('customjs')
<script>
'use strict'
const State = {
delay_type_number: 1000,
storage_lara: "{{ asset('storage') }}/",
file_jimp_worker: "{{ asset('assets/js/worker/jimp.js') }}",
};
const Wrapper = {
activate: function() {
DanaUpdt.activate();
},
};
const DanaUpdt = {
activate: function() {
DanaUpdt.event();
},
event: function() {
$('#btnUpdtDana').on('click', async function(e) {
e.preventDefault();
const data = DanaUpdt.getData();
if (!DanaUpdt.checkData(data, true)) return false;
DanaUpdt.submitData(data);
});
// input
$('#amt').on('keyup', function() {
let price = $('#amt').val().split('.').join('');
$('#amt').val((new Intl.NumberFormat('id-ID')).format(price));
});
},
getData: function(props) {
const data = Helper.objectifyForm($('#formDanaUpdt').serializeArray());
data.amt = $('#amt').val().split('.').join('');
return data;
},
checkData: function(data, isAlert = false) {
if (data.amt.length < 4) {
if (isAlert) Helper.toast('Warning', 'just now', 'Saldo Dana wajib diisi');
return false;
}
return true;
},
submitData: async function(data) {
return new Promise((resolve, reject) => {
if (typeof $('#btnUpdtDana').attr('disabed') != 'undefined') {
resolve({
type: 'fail'
});
return false;
}
$('#btnUpdtDana').attr('disabed', true);
$('#btnUpdtDanaSpinner').removeClass('d-none');
$.ajax({
url: "{{ route('api_edit_dana', '') }}/" + data.dana_id,
method: 'PUT',
crossDomain: true,
processData: true,
headers: {
'x-api-key': Helper.getCookie('_trtk'),
'x-csrf-token': $('meta[name="csrf-token"]').attr('content'),
},
data,
success: (data, textStatus, jqXHR) => {
$('#btnUpdtDana').removeAttr('disabed');
$('#btnUpdtDanaSpinner').addClass('d-none');
if (data.meta.type != 'success') {
resolve({
type: 'fail'
});
Helper.toast('Warning', 'just now', data.meta.message);
return false;
}
resolve({
type: 'success'
});
Helper.toast('Success', 'sukses update saldo', data.meta.message);
},
error: (jqXHR, textStatus, error) => {
$('#btnUpdtDana').removeAttr('disabed');
$('#btnUpdtDanaSpinner').addClass('d-none');
if (jqXHR.status >= 500) {
Helper.toast('Error', 'just now', 'Please try again');
} else {
Helper.toast('Error', 'just now', jqXHR.responseJSON.meta
.message);
}
resolve({
type: 'error'
});
}
})
})
},
}
Wrapper.activate();
</script>
@endsection