Compare commits

2 Commits
6 changed files with 115 additions and 10 deletions
@@ -27,14 +27,14 @@ class KomoditasController extends Controller
public function store(Request $request) public function store(Request $request)
{ {
// dd($request->all());
$validator = Validator::make($request->all(), [ $validator = Validator::make($request->all(), [
'nama' => ['required', 'string', 'max:255', 'unique:master_komoditas,nama'], 'nama' => ['required', 'string', 'max:255', 'unique:master_komoditas,nama'],
'kode' => ['required', 'string', 'max:2', 'unique:master_komoditas,kode'], 'kode' => ['required', 'string', 'max:2', 'unique:master_komoditas,kode'],
'is_utama' => ['nullable', 'boolean'],
], [ ], [
'nama.unique' => 'Nama komoditas ini sudah ada di database.', 'nama.unique' => 'Nama komoditas ini sudah ada di database.',
'kode.unique' => 'Kode komoditas ini sudah ada di database.', 'kode.unique' => 'Kode komoditas ini sudah ada di database.',
'kode.max' => 'Kode komoditas maksimal 2 Digit.' 'kode.max' => 'Kode komoditas maksimal 2 Digit.'
]); ]);
if ($validator->fails()) { if ($validator->fails()) {
@@ -43,7 +43,8 @@ class KomoditasController extends Controller
Komoditas::create([ Komoditas::create([
'nama' => $request->nama, 'nama' => $request->nama,
'kode' => $request->kode, 'kode' => $request->kode,
'is_utama' => $request->is_utama,
'created_by' => auth()->id(), 'created_by' => auth()->id(),
'updated_by' => auth()->id(), 'updated_by' => auth()->id(),
]); ]);
@@ -60,8 +61,9 @@ class KomoditasController extends Controller
public function update(Request $request, $id) public function update(Request $request, $id)
{ {
$validator = Validator::make($request->all(), [ $validator = Validator::make($request->all(), [
'nama' => ['required', 'string', 'max:255', 'unique:master_komoditas,nama,' . $id], 'nama' => ['required', 'string', 'max:255', 'unique:master_komoditas,nama,' . $id],
'kode' => ['required', 'string', 'max:2', 'unique:master_komoditas,kode'], 'kode' => ['required', 'string', 'max:2', 'unique:master_komoditas,kode,' . $id],
'is_utama' => ['nullable', 'boolean'],
], [ ], [
'nama.unique' => 'Nama komoditas ini sudah ada di database.', 'nama.unique' => 'Nama komoditas ini sudah ada di database.',
'kode.unique' => 'Kode komoditas ini sudah ada di database.', 'kode.unique' => 'Kode komoditas ini sudah ada di database.',
@@ -76,6 +78,7 @@ class KomoditasController extends Controller
$komoditas->update([ $komoditas->update([
'nama' => $request->nama, 'nama' => $request->nama,
'kode' => $request->kode, 'kode' => $request->kode,
'is_utama' => $request->is_utama,
'updated_by' => auth()->id(), 'updated_by' => auth()->id(),
]); ]);
+4
View File
@@ -16,6 +16,10 @@ class Komoditas extends Model
protected $table = 'master_komoditas'; protected $table = 'master_komoditas';
protected $casts = [
'is_utama' => 'boolean',
];
protected $fillable = [ protected $fillable = [
'nama', 'nama',
'kode', 'kode',
@@ -14,6 +14,33 @@
<label class="form-label" for="add-kode">Kode Komoditas<span class="text-danger">*</span></label> <label class="form-label" for="add-kode">Kode Komoditas<span class="text-danger">*</span></label>
<input type="text" class="form-control" id="add-kode" name="kode" placeholder="Cth: KP" /> <input type="text" class="form-control" id="add-kode" name="kode" placeholder="Cth: KP" />
</div> </div>
<div class="mb-4 form-control-validation">
<label class="form-label d-block">Komoditas Utama <span class="text-danger">*</span></label>
<input type="hidden" name="is_utama" value="0">
<label class="switch switch-lg"><input type="checkbox" class="switch-input" id="add-is-utama" name="is_utama" value="1" @checked(old('is_utama', false))>
<span class="switch-toggle-slider">
<span class="switch-on">
<i class="icon-base ti tabler-check"></i>
</span>
<span class="switch-off">
<i class="icon-base ti tabler-x"></i>
</span>
</span>
<span class="switch-label" id="add-is-utama-label">
{{ old('is_utama', false) ? 'Komoditas Utama' : 'Tidak Termasuk' }}
</span>
</label>
@error('is_utama')
<div class="invalid-feedback d-block">
{{ $message }}
</div>
@enderror
</div>
<div class="mt-4"> <div class="mt-4">
<button type="submit" class="btn btn-primary me-sm-3 me-1 data-submit">Simpan</button> <button type="submit" class="btn btn-primary me-sm-3 me-1 data-submit">Simpan</button>
<button type="reset" class="btn btn-label-secondary" data-bs-dismiss="offcanvas">Batal</button> <button type="reset" class="btn btn-label-secondary" data-bs-dismiss="offcanvas">Batal</button>
@@ -6,6 +6,7 @@
<div class="offcanvas-body mx-0 flex-grow-0 p-6 h-100"> <div class="offcanvas-body mx-0 flex-grow-0 p-6 h-100">
<form id="editKomoditasForm" class="pt-0" method="POST"> <form id="editKomoditasForm" class="pt-0" method="POST">
@csrf @csrf
@method('PUT')
<input type="hidden" name="_method" value="PUT"> <input type="hidden" name="_method" value="PUT">
<input type="hidden" id="edit-id" name="id"> <input type="hidden" id="edit-id" name="id">
@@ -17,6 +18,35 @@
<label class="form-label" for="edit-kode">Kode Komoditas<span class="text-danger">*</span></label> <label class="form-label" for="edit-kode">Kode Komoditas<span class="text-danger">*</span></label>
<input type="text" class="form-control" id="edit-kode" name="kode" /> <input type="text" class="form-control" id="edit-kode" name="kode" />
</div> </div>
<div class="mb-4 form-control-validation">
<label class="form-label d-block" for="edit-is-utama">Komoditas Utama <span class="text-danger">*</span></label>
<input type="hidden" name="is_utama" value="0">
<label class="switch switch-lg">
<input
type="checkbox"
class="switch-input"
id="edit-is-utama"
name="is_utama"
value="1"
>
<span class="switch-toggle-slider">
<span class="switch-on">
<i class="icon-base ti tabler-check"></i>
</span>
<span class="switch-off">
<i class="icon-base ti tabler-x"></i>
</span>
</span>
<span class="switch-label" id="edit-is-utama-label">
Tidak Termasuk
</span>
</label>
</div>
<div class="mt-4"> <div class="mt-4">
<button type="submit" class="btn btn-primary me-sm-3 me-1 data-submit">Update</button> <button type="submit" class="btn btn-primary me-sm-3 me-1 data-submit">Update</button>
<button type="reset" class="btn btn-label-secondary" data-bs-dismiss="offcanvas">Batal</button> <button type="reset" class="btn btn-label-secondary" data-bs-dismiss="offcanvas">Batal</button>
@@ -147,6 +147,18 @@
$('#edit-id').val(res.data.id); $('#edit-id').val(res.data.id);
$('#edit-nama').val(res.data.nama); $('#edit-nama').val(res.data.nama);
$('#edit-kode').val(res.data.kode); $('#edit-kode').val(res.data.kode);
const isUtama =
res.data.is_utama === true ||
res.data.is_utama === 1 ||
res.data.is_utama === '1';
$('#edit-is-utama').prop('checked', isUtama);
$('#edit-is-utama-label').text(
isUtama ? 'Komoditas Utama' : 'Tidak Termasuk'
);
if (typeof fvEdit !== 'undefined') fvEdit.resetForm(); if (typeof fvEdit !== 'undefined') fvEdit.resetForm();
offcanvasEdit.show(); offcanvasEdit.show();
} }
@@ -170,6 +182,14 @@
if (res.status === 'success') { if (res.status === 'success') {
$('#view-nama').val(res.data.nama); $('#view-nama').val(res.data.nama);
$('#view-kode').val(res.data.kode); $('#view-kode').val(res.data.kode);
const isUtama =
res.data.is_utama === true ||
res.data.is_utama === 1 ||
res.data.is_utama === '1';
$('#view-is-utama').val(
isUtama ? 'Komoditas Utama' : 'Tidak Termasuk'
);
offcanvasView.show(); offcanvasView.show();
} }
}).fail((xhr) => { }).fail((xhr) => {
@@ -181,7 +201,9 @@
const editForm = document.getElementById('editKomoditasForm'); const editForm = document.getElementById('editKomoditasForm');
let fvEdit = FormValidation.formValidation(editForm, { let fvEdit = FormValidation.formValidation(editForm, {
fields: { nama: { validators: { notEmpty: { message: 'Nama komoditas wajib diisi' } } } }, fields: { nama: { validators: { notEmpty: { message: 'Nama komoditas wajib diisi' } } } ,
kode: {validators: { notEmpty: { message: 'Kode komoditas wajib diisi' } } }
},
plugins: { plugins: {
trigger: new FormValidation.plugins.Trigger(), trigger: new FormValidation.plugins.Trigger(),
bootstrap5: new FormValidation.plugins.Bootstrap5({ eleValidClass: '', rowSelector: '.form-control-validation' }), bootstrap5: new FormValidation.plugins.Bootstrap5({ eleValidClass: '', rowSelector: '.form-control-validation' }),
@@ -249,5 +271,20 @@
}); });
}); });
}); });
document.addEventListener('DOMContentLoaded', function () {
const switchInput = document.getElementById('add-is-utama');
const switchLabel = document.getElementById('add-is-utama-label');
function updateKomoditasLabel() {
switchLabel.textContent = switchInput.checked
? 'Komoditas Utama'
: 'Tidak Termasuk';
}
switchInput.addEventListener('change', updateKomoditasLabel);
updateKomoditasLabel();
});
</script> </script>
@endpush @endpush
@@ -13,6 +13,10 @@
<label class="form-label" for="view-kode">Kode Komoditas</label> <label class="form-label" for="view-kode">Kode Komoditas</label>
<input type="text" class="form-control bg-lighter" id="view-kode" readonly /> <input type="text" class="form-control bg-lighter" id="view-kode" readonly />
</div> </div>
<div class="mb-4">
<label class="form-label" for="view-is-utama">Komoditas Utama</label>
<input type="text" class="form-control bg-lighter" id="view-is-utama" readonly>
</div>
<div class="mt-4"> <div class="mt-4">
<button type="button" class="btn btn-label-secondary d-grid w-100" data-bs-dismiss="offcanvas">Tutup</button> <button type="button" class="btn btn-label-secondary d-grid w-100" data-bs-dismiss="offcanvas">Tutup</button>
</div> </div>