This commit is contained in:
2025-08-22 09:41:04 +07:00
parent 949e98ca4a
commit 8fa2d2cdf7
705 changed files with 130767 additions and 24 deletions
@@ -0,0 +1,82 @@
@extends('template.website.auth')
@section('content')
<!-- Section -->
<section class="pt-5 pb-5">
<div class="container-fluid d-flex flex-column">
<div class="row align-items-center min-vh-100">
<div class="col-md-6 col-lg-4 col-xl-3 mx-auto">
<div class="card">
<div class="card-body py-5 px-sm-5">
<div class="mb-5 text-center">
<h6 class="h3 mb-1">Login Administrator</h6>
<p class="text-muted mb-0">Gunakan kredensial admin untuk login.</p>
</div><span class="clearfix"></span>
@if (session('error'))
<div role="alert" class="alert alert-danger alert-dismissible">
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"> </button>
<strong><i class="fa fa-exclamation-circle"></i> {{ session('error') }}</strong>
</div>
@endif
<form id="formLogin" class="form-validate" action="{{ route('admin.auth.authenticate') }}" method="POST">
@csrf
<div class="form-group">
<label for="username">Username</label>
<div class="input-group">
<input type="text" class="form-control" name="username">
<span class="input-group-text"><i class="icon-user"></i></span>
</div>
</div>
<div class="form-group ">
<label for="password">Password</label>
<div class="input-group show-hide-password">
<input class="form-control" name="password" type="password" >
<span class="input-group-text"><i class="icon-eye-off" aria-hidden="true" style="cursor: pointer;"></i></span>
</div>
</div>
<div class="mt-4"><button type="submit" class="btn btn-primary btn-block btn-primary">Login</button></div>
</form>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- end: Section -->
@endsection
@push('js')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.21.0/jquery.validate.min.js"
integrity="sha512-KFHXdr2oObHKI9w4Hv1XPKc898mE4kgYx58oqsc/JqqdLMDI4YjOLzom+EMlW8HFUd0QfjfAvxSL6sEq/a42fQ=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
$(function () {
$('#formLogin').validate({
rules: {
username: {
required: true,
},
password: {
required: true,
},
},
messages: {
username: 'Username wajib diisi',
password: 'Password wajib diisi',
},
errorClass: 'is-invalid',
validClass: 'is-valid',
errorElement: "div",
errorPlacement: function (error, element) {
element.parent().append(error);
},
invalidHandler: function (elem, validator) {
$('html, body').stop(true, false).animate({
scrollTop: $(validator.errorList[0].element).offset().top - 200
}, 1500, 'easeInOutExpo');
}
});
});
</script>
@endpush
@@ -0,0 +1,11 @@
@extends('template.admin.base')
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="card-title m-0">Dashboard</h5>
</div>
</div>
</div>
@endsection
@@ -0,0 +1,121 @@
@extends('template.admin.base')
@push('css')
<link href="{{ asset('assets/admin/vendor/libs/select2/select2.css') }}" rel="stylesheet" />
@endpush
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="card-title m-0">Kabupaten/Kota Baru</h5>
<div id="buttons">
<a href="{{ route('admin.kabupaten-kota.index') }}" class="btn btn-dark">
<i class="icon-base ti tabler-arrow-left me-sm-1"></i> Kembali ke Daftar
</a>
</div>
</div>
<div class="card-body">
@if ($errors->any())
<div class="alert alert-danger d-flex align-items-baseline" role="alert">
<span class="alert-icon rounded">
<i class="icon-base ti tabler-ban icon-md w-px-30"></i>
</span>
<div class="d-flex flex-column ps-1">
<h5 class="alert-heading mb-2">Input data gagal tervalidasi</h5>
<ul class="mb-0">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
@endif
<form id="formCreate" action="{{ route('admin.kabupaten-kota.store') }}" method="POST">
@csrf
<div class="row mb-3">
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="nama" class="form-label">Nama Kabupaten/Kota</label>
<input type="text" class="form-control" id="nama" name="nama" value="{{ old('nama') }}" />
</div>
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="kode" class="form-label">Kode Kabupaten/Kota</label>
<input type="text" class="form-control" id="kode" name="kode" value="{{ old('kode') }}" />
</div>
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="provinsi_id" class="form-label">Provinsi</label>
<select class="select2 form-select" data-allow-clear="true" id="provinsi_id" name="provinsi_id">
</select>
</div>
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
</div>
@endsection
@push('js')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.21.0/jquery.validate.min.js"
integrity="sha512-KFHXdr2oObHKI9w4Hv1XPKc898mE4kgYx58oqsc/JqqdLMDI4YjOLzom+EMlW8HFUd0QfjfAvxSL6sEq/a42fQ=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="{{ asset('assets/admin/vendor/libs/select2/select2.js') }}"></script>
<script>
$(function () {
$("#provinsi_id").select2({
placeholder: "Pilih Provinsi",
allowClear: true,
ajax: {
url: "{{ route('admin.provinsi.list') }}",
type: 'POST',
data: function (params) {
var query = {
search: params.term,
page: params.page || 1,
_token:'{{ csrf_token() }}'
}
return query;
},
processResults: function (data) {
var results = $.map(data.data, function (obj) {
obj.id = obj.id;
obj.text = obj.kode + ' - ' + obj.nama;
return obj;
});
return {
results: results,
pagination: {
more: data.last_page > data.current_page
}
};
}
}
});
$('#formCreate').validate({
rules: {
nama: {
required: true,
},
kode: {
required: true,
digits: true,
minlength: 4,
maxlength: 4,
},
provinsi_id: {
required: true,
}
},
messages: {
nama: 'Nama Kabupaten/Kota wajib diisi',
kode: 'Kode Kabupaten/Kota wajib diisi dengan angka 4 digit',
provinsi_id: 'Provinsi wajib diisi'
}
});
});
</script>
@endpush
@@ -0,0 +1,124 @@
@extends('template.admin.base')
@push('css')
<link href="{{ asset('assets/admin/vendor/libs/select2/select2.css') }}" rel="stylesheet" />
@endpush
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="card-title m-0">Edit Kabupaten/Kota</h5>
<div id="buttons">
<a href="{{ route('admin.kabupaten-kota.index') }}" class="btn btn-dark">
<i class="icon-base ti tabler-arrow-left me-sm-1"></i> Kembali ke Daftar
</a>
</div>
</div>
<div class="card-body">
@if ($errors->any())
<div class="alert alert-danger d-flex align-items-baseline" role="alert">
<span class="alert-icon rounded">
<i class="icon-base ti tabler-ban icon-md w-px-30"></i>
</span>
<div class="d-flex flex-column ps-1">
<h5 class="alert-heading mb-2">Edit data gagal tervalidasi</h5>
<ul class="mb-0">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
@endif
<form id="formCreate" action="{{ route('admin.kabupaten-kota.update', $kabupatenKota->id) }}" method="POST">
@method('PUT')
@csrf
<div class="row mb-3">
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="nama" class="form-label">Nama Kabupaten/Kota</label>
<input type="text" class="form-control" id="nama" name="nama" value="{{ old('nama', $kabupatenKota->nama) }}" />
</div>
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="kode" class="form-label">Kode Kabupaten/Kota</label>
<input type="text" class="form-control" id="kode" name="kode" value="{{ old('kode', $kabupatenKota->kode) }}" />
</div>
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="provinsi_id" class="form-label">Provinsi</label>
<select class="select2 form-select" data-allow-clear="true" id="provinsi_id" name="provinsi_id">
<option value="{{ old('provinsi_id', $kabupatenKota->provinsi_id) }}" selected="selected">
{{ $kabupatenKota->provinsi->kode }} - {{ $kabupatenKota->provinsi->nama }}</option>
</select>
</div>
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
</div>
@endsection
@push('js')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.21.0/jquery.validate.min.js"
integrity="sha512-KFHXdr2oObHKI9w4Hv1XPKc898mE4kgYx58oqsc/JqqdLMDI4YjOLzom+EMlW8HFUd0QfjfAvxSL6sEq/a42fQ=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="{{ asset('assets/admin/vendor/libs/select2/select2.js') }}"></script>
<script>
$(function () {
$("#provinsi_id").select2({
placeholder: "Pilih Provinsi",
allowClear: true,
ajax: {
url: "{{ route('admin.provinsi.list') }}",
type: 'POST',
data: function (params) {
var query = {
search: params.term,
page: params.page || 1,
_token:'{{ csrf_token() }}'
}
return query;
},
processResults: function (data) {
var results = $.map(data.data, function (obj) {
obj.id = obj.id;
obj.text = obj.kode + ' - ' + obj.nama;
return obj;
});
return {
results: results,
pagination: {
more: data.last_page > data.current_page
}
};
}
}
});
$('#formCreate').validate({
rules: {
nama: {
required: true,
},
kode: {
required: true,
digits: true,
minlength: 4,
maxlength: 4,
},
provinsi_id: {
required: true,
}
},
messages: {
nama: 'Nama Kabupaten/Kota wajib diisi',
kode: 'Kode Kabupaten/Kota wajib diisi dengan angka 4 digit',
provinsi_id: 'Provinsi wajib diisi'
}
});
});
</script>
@endpush
@@ -0,0 +1,148 @@
@extends('template.admin.base')
@push('css')
<link rel="stylesheet" href="{{ asset('assets/admin/vendor/libs/datatables-bs5/datatables.bootstrap5.css') }}" />
<link rel="stylesheet" href="{{ asset('assets/admin/vendor/libs/datatables-responsive-bs5/responsive.bootstrap5.css') }}" />
@endpush
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="card-title m-0">Daftar Kabupaten/Kota</h5>
<div id="buttons">
<a href="{{ route('admin.kabupaten-kota.create') }}" class="btn btn-primary">
<i class="icon-base ti tabler-plus me-sm-1"></i> Kabupaten/Kota Baru
</a>
</div>
</div>
<div class="card-datatable table-responsive pt-0">
@if (session('success'))
<div class="alert alert-dismissible alert-success d-flex align-items-center" role="alert">
<span class="alert-icon rounded me-2">
<i class="icon-base ti tabler-check icon-md w-px-30"></i>
</span>
{{ session('success') }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
@endif
<table class="datatables-basic table" id="table">
<thead>
<tr>
<th>Nama</th>
<th>Kode</th>
<th>Provinsi</th>
<th>Aksi</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>
</div>
<div class="modal fade" id="deleteConfirmModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form id="formDelete" action="{{ route('admin.kabupaten-kota.destroy', ':id') }}" method="POST">
@csrf
@method('DELETE')
<div class="modal-header">
<h5 class="modal-title" id="deleteConfirmModalLabel">Konfirmasi Menghapus Data</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<p>Apakah data tersebut benar akan dihapus?</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-label-secondary" data-bs-dismiss="modal">
Batal
</button>
<button type="submit" class="btn btn-danger">Hapus</button>
</div>
</form>
</div>
</div>
</div>
@endsection
@push('js')
<script src="{{ asset('assets/admin/vendor/libs/datatables-bs5/datatables-bootstrap5.js') }}"></script>
<script>
$(function () {
$('#table').DataTable({
'responsive': true,
'lengthChange': true,
'autoWidth': false,
'processing': true,
'serverSide': true,
'ajax': function(data, callback, settings) {
var order = '';
if (data.order.length > 0) {
order = data.order[0].dir == 'desc' ? '-' : '';
order = order + data.columns[data.order[0].column].data;
}
$.ajax({
url: "{{ route('admin.kabupaten-kota.list') }}",
data: {
size: data.length,
page: (data.start / data.length) + 1,
search: data.search.value,
sort: order,
_token:'{{ csrf_token() }}'
},
type: "POST",
success: function(res) {
callback({
recordsTotal: res.total,
recordsFiltered: res.total,
data: res.data
});
}
});
},
'columns': [
{ data: 'nama' },
{ data: 'kode' },
{ data: 'provinsi.nama' },
{
data: 'id',
orderable: false,
searchable: false,
targets: -1,
render: function (data, type, full, meta) {
var urlEdit = '{{ route("admin.kabupaten-kota.edit", ":id") }}';
urlEdit = urlEdit.replace(':id', data);
var renderValue =
'<a href="' + urlEdit + '" class="btn btn-sm btn-icon">' +
' <i class="text-primary icon-base ti tabler-pencil"></i>' +
'</a>' +
'<button type="button" class="btn btn-sm btn-icon delete" data-id="' + data + '">' +
' <i class="text-danger icon-base ti tabler-trash"></i>' +
'</button>';
return renderValue;
}
}
],
});
$('#table tbody').on( 'click', 'button.delete', function (e) {
e.preventDefault();
var form = $('#formDelete');
var action = form.attr('action');
action = action.replace(':id', $(this).data('id'));
form.attr('action', action);
$('#deleteConfirmModal').modal('show');
});
});
</script>
@endpush
@@ -0,0 +1,79 @@
@extends('template.admin.base')
@push('css')
@endpush
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="card-title m-0">Provinsi Baru</h5>
<div id="buttons">
<a href="{{ route('admin.provinsi.index') }}" class="btn btn-dark">
<i class="icon-base ti tabler-arrow-left me-sm-1"></i> Kembali ke Daftar
</a>
</div>
</div>
<div class="card-body">
@if ($errors->any())
<div class="alert alert-danger d-flex align-items-baseline" role="alert">
<span class="alert-icon rounded">
<i class="icon-base ti tabler-ban icon-md w-px-30"></i>
</span>
<div class="d-flex flex-column ps-1">
<h5 class="alert-heading mb-2">Input data gagal tervalidasi</h5>
<ul class="mb-0">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
@endif
<form id="formCreate" action="{{ route('admin.provinsi.store') }}" method="POST">
@csrf
<div class="row mb-3">
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="nama" class="form-label">Nama Provinsi</label>
<input type="text" class="form-control" id="nama" name="nama" value="{{ old('nama') }}" />
</div>
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="kode" class="form-label">Kode Provinsi</label>
<input type="text" class="form-control" id="kode" name="kode" value="{{ old('kode') }}" />
</div>
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
</div>
@endsection
@push('js')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.21.0/jquery.validate.min.js"
integrity="sha512-KFHXdr2oObHKI9w4Hv1XPKc898mE4kgYx58oqsc/JqqdLMDI4YjOLzom+EMlW8HFUd0QfjfAvxSL6sEq/a42fQ=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
$(function () {
$('#formCreate').validate({
rules: {
nama: {
required: true,
},
kode: {
required: true,
digits: true,
minlength: 2,
maxlength: 2,
},
},
messages: {
nama: 'Nama Provinsi wajib diisi',
kode: 'Kode Provinsi wajib diisi dengan angka 2 digit',
}
});
});
</script>
@endpush
@@ -0,0 +1,80 @@
@extends('template.admin.base')
@push('css')
@endpush
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="card-title m-0">Edit Provinsi</h5>
<div id="buttons">
<a href="{{ route('admin.provinsi.index') }}" class="btn btn-dark">
<i class="icon-base ti tabler-arrow-left me-sm-1"></i> Kembali ke Daftar
</a>
</div>
</div>
<div class="card-body">
@if ($errors->any())
<div class="alert alert-danger d-flex align-items-baseline" role="alert">
<span class="alert-icon rounded">
<i class="icon-base ti tabler-ban icon-md w-px-30"></i>
</span>
<div class="d-flex flex-column ps-1">
<h5 class="alert-heading mb-2">Edit data gagal tervalidasi</h5>
<ul class="mb-0">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
@endif
<form id="formCreate" action="{{ route('admin.provinsi.update', $provinsi->id) }}" method="POST">
@method('PUT')
@csrf
<div class="row mb-3">
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="nama" class="form-label">Nama Provinsi</label>
<input type="text" class="form-control" id="nama" name="nama" value="{{ old('nama', $provinsi->nama) }}" />
</div>
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="kode" class="form-label">Kode Provinsi</label>
<input type="text" class="form-control" id="kode" name="kode" value="{{ old('kode', $provinsi->kode) }}" />
</div>
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
</div>
@endsection
@push('js')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.21.0/jquery.validate.min.js"
integrity="sha512-KFHXdr2oObHKI9w4Hv1XPKc898mE4kgYx58oqsc/JqqdLMDI4YjOLzom+EMlW8HFUd0QfjfAvxSL6sEq/a42fQ=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
$(function () {
$('#formCreate').validate({
rules: {
nama: {
required: true,
},
kode: {
required: true,
digits: true,
minlength: 2,
maxlength: 2,
},
},
messages: {
nama: 'Nama Provinsi wajib diisi',
kode: 'Kode Provinsi wajib diisi dengan angka 2 digit',
}
});
});
</script>
@endpush
@@ -0,0 +1,146 @@
@extends('template.admin.base')
@push('css')
<link rel="stylesheet" href="{{ asset('assets/admin/vendor/libs/datatables-bs5/datatables.bootstrap5.css') }}" />
<link rel="stylesheet" href="{{ asset('assets/admin/vendor/libs/datatables-responsive-bs5/responsive.bootstrap5.css') }}" />
@endpush
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="card-title m-0">Daftar Provinsi</h5>
<div id="buttons">
<a href="{{ route('admin.provinsi.create') }}" class="btn btn-primary">
<i class="icon-base ti tabler-plus me-sm-1"></i> Provinsi Baru
</a>
</div>
</div>
<div class="card-datatable table-responsive pt-0">
@if (session('success'))
<div class="alert alert-dismissible alert-success d-flex align-items-center" role="alert">
<span class="alert-icon rounded me-2">
<i class="icon-base ti tabler-check icon-md w-px-30"></i>
</span>
{{ session('success') }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
@endif
<table class="datatables-basic table" id="table">
<thead>
<tr>
<th>Nama</th>
<th>Kode</th>
<th>Aksi</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>
</div>
<div class="modal fade" id="deleteConfirmModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form id="formDelete" action="{{ route('admin.provinsi.destroy', ':id') }}" method="POST">
@csrf
@method('DELETE')
<div class="modal-header">
<h5 class="modal-title" id="deleteConfirmModalLabel">Konfirmasi Menghapus Data</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<p>Apakah data tersebut benar akan dihapus?</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-label-secondary" data-bs-dismiss="modal">
Batal
</button>
<button type="submit" class="btn btn-danger">Hapus</button>
</div>
</form>
</div>
</div>
</div>
@endsection
@push('js')
<script src="{{ asset('assets/admin/vendor/libs/datatables-bs5/datatables-bootstrap5.js') }}"></script>
<script>
$(function () {
$('#table').DataTable({
'responsive': true,
'lengthChange': true,
'autoWidth': false,
'processing': true,
'serverSide': true,
'ajax': function(data, callback, settings) {
var order = '';
if (data.order.length > 0) {
order = data.order[0].dir == 'desc' ? '-' : '';
order = order + data.columns[data.order[0].column].data;
}
$.ajax({
url: "{{ route('admin.provinsi.list') }}",
data: {
size: data.length,
page: (data.start / data.length) + 1,
search: data.search.value,
sort: order,
_token:'{{ csrf_token() }}'
},
type: "POST",
success: function(res) {
callback({
recordsTotal: res.total,
recordsFiltered: res.total,
data: res.data
});
}
});
},
'columns': [
{ data: 'nama' },
{ data: 'kode' },
{
data: 'id',
orderable: false,
searchable: false,
targets: -1,
render: function (data, type, full, meta) {
var urlEdit = '{{ route("admin.provinsi.edit", ":id") }}';
urlEdit = urlEdit.replace(':id', data);
var renderValue =
'<a href="' + urlEdit + '" class="btn btn-sm btn-icon">' +
' <i class="text-primary icon-base ti tabler-pencil"></i>' +
'</a>' +
'<button type="button" class="btn btn-sm btn-icon delete" data-id="' + data + '">' +
' <i class="text-danger icon-base ti tabler-trash"></i>' +
'</button>';
return renderValue;
}
}
],
});
$('#table tbody').on( 'click', 'button.delete', function (e) {
e.preventDefault();
var form = $('#formDelete');
var action = form.attr('action');
action = action.replace(':id', $(this).data('id'));
form.attr('action', action);
$('#deleteConfirmModal').modal('show');
});
});
</script>
@endpush
@@ -0,0 +1,94 @@
@extends('template.admin.base')
@push('css')
@endpush
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="card-title m-0">UML Baru</h5>
<div id="buttons">
<a href="{{ route('admin.uml.index') }}" class="btn btn-dark">
<i class="icon-base ti tabler-arrow-left me-sm-1"></i> Kembali ke Daftar
</a>
</div>
</div>
<div class="card-body">
@if ($errors->any())
<div class="alert alert-danger d-flex align-items-baseline" role="alert">
<span class="alert-icon rounded">
<i class="icon-base ti tabler-ban icon-md w-px-30"></i>
</span>
<div class="d-flex flex-column ps-1">
<h5 class="alert-heading mb-2">Input data gagal tervalidasi</h5>
<ul class="mb-0">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
@endif
<form id="formCreate" action="{{ route('admin.uml.store') }}" method="POST">
@csrf
<div class="row mb-3">
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="nama" class="form-label">Nama UML</label>
<input type="text" class="form-control" id="nama" name="nama" value="{{ old('nama') }}" />
</div>
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="kode" class="form-label">Kode Daerah</label>
<input type="text" class="form-control" id="kode" name="kode" value="{{ old('kode') }}" />
</div>
</div>
<div class="row mb-3">
<div class="col-xl-6 col-md-12 col-sm-12">
<label for="alamat" class="form-label">Alamat</label>
<input type="text" class="form-control" id="alamat" name="alamat" value="{{ old('alamat') }}" />
</div>
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="email" class="form-label">Email</label>
<input type="email" class="form-control" id="email" name="email" value="{{ old('email') }}" />
</div>
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="telepon" class="form-label">Telepon</label>
<input type="text" class="form-control" id="telepon" name="telepon" value="{{ old('telepon') }}" />
</div>
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
</div>
@endsection
@push('js')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.21.0/jquery.validate.min.js"
integrity="sha512-KFHXdr2oObHKI9w4Hv1XPKc898mE4kgYx58oqsc/JqqdLMDI4YjOLzom+EMlW8HFUd0QfjfAvxSL6sEq/a42fQ=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
$(function () {
$('#formCreate').validate({
rules: {
nama: {
required: true,
},
kode: {
required: true,
},
email: {
email: true,
}
},
messages: {
nama: 'Nama UML wajib diisi',
kode: 'Kode UML wajib diisi',
email: 'Email harus dalam format yang benar'
}
});
});
</script>
@endpush
+95
View File
@@ -0,0 +1,95 @@
@extends('template.admin.base')
@push('css')
@endpush
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="card-title m-0">Edit UML</h5>
<div id="buttons">
<a href="{{ route('admin.uml.index') }}" class="btn btn-dark">
<i class="icon-base ti tabler-arrow-left me-sm-1"></i> Kembali ke Daftar
</a>
</div>
</div>
<div class="card-body">
@if ($errors->any())
<div class="alert alert-danger d-flex align-items-baseline" role="alert">
<span class="alert-icon rounded">
<i class="icon-base ti tabler-ban icon-md w-px-30"></i>
</span>
<div class="d-flex flex-column ps-1">
<h5 class="alert-heading mb-2">Edit data gagal tervalidasi</h5>
<ul class="mb-0">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
@endif
<form id="formCreate" action="{{ route('admin.uml.update', $uml->id) }}" method="POST">
@method('PUT')
@csrf
<div class="row mb-3">
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="nama" class="form-label">Nama UML</label>
<input type="text" class="form-control" id="nama" name="nama" value="{{ old('nama', $uml->nama) }}" />
</div>
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="kode" class="form-label">Kode Daerah</label>
<input type="text" class="form-control" id="kode" name="kode" value="{{ old('kode', $uml->kode) }}" />
</div>
</div>
<div class="row mb-3">
<div class="col-xl-6 col-md-12 col-sm-12">
<label for="alamat" class="form-label">Alamat</label>
<input type="text" class="form-control" id="alamat" name="alamat" value="{{ old('alamat', $uml->alamat) }}" />
</div>
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="email" class="form-label">Email</label>
<input type="email" class="form-control" id="email" name="email" value="{{ old('email', $uml->email) }}" />
</div>
<div class="col-xl-3 col-md-6 col-sm-6">
<label for="telepon" class="form-label">Telepon</label>
<input type="text" class="form-control" id="telepon" name="telepon" value="{{ old('telepon', $uml->telepon) }}" />
</div>
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
</div>
</div>
@endsection
@push('js')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.21.0/jquery.validate.min.js"
integrity="sha512-KFHXdr2oObHKI9w4Hv1XPKc898mE4kgYx58oqsc/JqqdLMDI4YjOLzom+EMlW8HFUd0QfjfAvxSL6sEq/a42fQ=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
$(function () {
$('#formCreate').validate({
rules: {
nama: {
required: true,
},
kode: {
required: true,
},
email: {
email: true,
}
},
messages: {
nama: 'Nama UML wajib diisi',
kode: 'Kode UML wajib diisi',
email: 'Email harus dalam format yang benar'
}
});
});
</script>
@endpush
+146
View File
@@ -0,0 +1,146 @@
@extends('template.admin.base')
@push('css')
<link rel="stylesheet" href="{{ asset('assets/admin/vendor/libs/datatables-bs5/datatables.bootstrap5.css') }}" />
<link rel="stylesheet" href="{{ asset('assets/admin/vendor/libs/datatables-responsive-bs5/responsive.bootstrap5.css') }}" />
@endpush
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="card-title m-0">Daftar UML</h5>
<div id="buttons">
<a href="{{ route('admin.uml.create') }}" class="btn btn-primary">
<i class="icon-base ti tabler-plus me-sm-1"></i> UML Baru
</a>
</div>
</div>
<div class="card-datatable table-responsive pt-0">
@if (session('success'))
<div class="alert alert-dismissible alert-success d-flex align-items-center" role="alert">
<span class="alert-icon rounded me-2">
<i class="icon-base ti tabler-check icon-md w-px-30"></i>
</span>
{{ session('success') }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
@endif
<table class="datatables-basic table" id="table">
<thead>
<tr>
<th>Nama</th>
<th>Kode Daerah</th>
<th>Aksi</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>
</div>
<div class="modal fade" id="deleteConfirmModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form id="formDelete" action="{{ route('admin.uml.destroy', ':id') }}" method="POST">
@csrf
@method('DELETE')
<div class="modal-header">
<h5 class="modal-title" id="deleteConfirmModalLabel">Konfirmasi Menghapus Data</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<p>Apakah data tersebut benar akan dihapus?</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-label-secondary" data-bs-dismiss="modal">
Batal
</button>
<button type="submit" class="btn btn-danger">Hapus</button>
</div>
</form>
</div>
</div>
</div>
@endsection
@push('js')
<script src="{{ asset('assets/admin/vendor/libs/datatables-bs5/datatables-bootstrap5.js') }}"></script>
<script>
$(function () {
$('#table').DataTable({
'responsive': true,
'lengthChange': true,
'autoWidth': false,
'processing': true,
'serverSide': true,
'ajax': function(data, callback, settings) {
var order = '';
if (data.order.length > 0) {
order = data.order[0].dir == 'desc' ? '-' : '';
order = order + data.columns[data.order[0].column].data;
}
$.ajax({
url: "{{ route('admin.uml.list') }}",
data: {
size: data.length,
page: (data.start / data.length) + 1,
search: data.search.value,
sort: order,
_token:'{{ csrf_token() }}'
},
type: "POST",
success: function(res) {
callback({
recordsTotal: res.total,
recordsFiltered: res.total,
data: res.data
});
}
});
},
'columns': [
{ data: 'nama' },
{ data: 'kode' },
{
data: 'id',
orderable: false,
searchable: false,
targets: -1,
render: function (data, type, full, meta) {
var urlEdit = '{{ route("admin.uml.edit", ":id") }}';
urlEdit = urlEdit.replace(':id', data);
var renderValue =
'<a href="' + urlEdit + '" class="btn btn-sm btn-icon">' +
' <i class="text-primary icon-base ti tabler-pencil"></i>' +
'</a>' +
'<button type="button" class="btn btn-sm btn-icon delete" data-id="' + data + '">' +
' <i class="text-danger icon-base ti tabler-trash"></i>' +
'</button>';
return renderValue;
}
}
],
});
$('#table tbody').on( 'click', 'button.delete', function (e) {
e.preventDefault();
var form = $('#formDelete');
var action = form.attr('action');
action = action.replace(':id', $(this).data('id'));
form.attr('action', action);
$('#deleteConfirmModal').modal('show');
});
});
</script>
@endpush