remove list trashed data in classification

This commit is contained in:
myuqinurrohman 2025-03-24 09:21:44 +07:00
parent 8de64a00dd
commit 01a8b500a4
10 changed files with 123 additions and 66 deletions

View File

@ -11,9 +11,10 @@
class ClassificationController extends Controller
{
public function index(){
public function index(Request $request){
return view('dashboard.classifications.index', [
'title' => 'Klasifikasi'
'title' => 'Klasifikasi',
'filter' => $request->input('filter', null)
]);
}
@ -60,7 +61,7 @@ public function update(ClassificationRequest $request, $id){
}
public function show($id){
$classification = Classification::find(decrypt_id($id));
$classification = Classification::withTrashed()->find(decrypt_id($id));
return view('dashboard.classifications.show', [
'title' => 'Detail Klasifikasi',

View File

@ -36,12 +36,19 @@ class DatatableController extends Controller
public function classification(Request $request){
if ($request->ajax()) {
$data = Classification::with(['subClassifications'])->get();
if($request->input('filter') === 'deleted'){
$data = Classification::with(['subClassifications'])->onlyTrashed()->get();
}else{
$data = Classification::with(['subClassifications'])->get();
}
return DataTables::of($data)
->addIndexColumn()
->addColumn('status', function ($data) {
if ($data->status == '0') {
if(filled($data->deleted_at)){
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Dihapus</span>';
}else if ($data->status == '0') {
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Nonaktif</span>';
}else{
return '<span class="badge bg-primary" style="display:inline-block;font-size:0.8rem;">Aktif</span>';
@ -82,15 +89,15 @@ public function classification(Request $request){
<ul class="link-list-opt">
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
if (is_role([1])) {
if (is_role([1]) && !filled($data->deleted_at)) {
$dropdown .= '<li><a href="'.$addSubClassificationUrl.'"><em class="icon ni ni-plus"></em><span>Tambah Sub Klasifikasi</span></a></li>';
}
if (is_role([1])) {
if (is_role([1]) && !filled($data->deleted_at)) {
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
}
if (is_role([1])) {
if (is_role([1]) && !filled($data->deleted_at)) {
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus klasifikasi '.$data->name.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
}
@ -113,7 +120,10 @@ public function classification(Request $request){
public function subClassification(Request $request){
if ($request->ajax()) {
$classificationParam = $request->input('classification', null);
if($request->input('filter') === 'deleted'){
$data = SubClassification::with(['classification'])->onlyTrashed()->get();
}else{
$classificationParam = $request->input('classification', null);
if ($classificationParam) {
$classification = Classification::where('id', '=', decrypt_id($classificationParam))->first();
@ -130,6 +140,7 @@ public function subClassification(Request $request){
$query->withTrashed();
}])->get();
}
}
return DataTables::of($data)
@ -138,7 +149,9 @@ public function subClassification(Request $request){
return $data->classification->name;
})
->addColumn('status', function ($data) {
if ($data->status == '0') {
if(filled($data->deleted_at)){
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Dihapus</span>';
}else if ($data->status == '0') {
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Nonaktif</span>';
}else{
return '<span class="badge bg-primary" style="display:inline-block;font-size:0.8rem;">Aktif</span>';
@ -167,14 +180,17 @@ public function subClassification(Request $request){
<ul class="link-list-opt">
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
if (is_role([1])) {
if (is_role([1]) && !filled($data->deleted_at)) {
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
}
if (is_role([1])) {
if (is_role([1]) && !filled($data->deleted_at)) {
$dropdown .= '<li><a href="javascript:void(0);" onclick="deleteItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin menghapus sub klasifikasi '.$data->name.'? Item ini akan dihapus secara permanen!\')"><em class="icon ni ni-trash"></em><span>Hapus</span></a></li>';
}
// else{
// $dropdown .= '<li><a href="javascript:void(0);" onclick="restoreItem(\''.$deleteUrl.'\', \'Apakah Anda yakin ingin mengembalikan sub klasifikasi '.$data->name.'? Item ini akan dipulihkan!\')"><em class="icon ni ni-unarchive"></em><span>Pulihkan</span></a></li>';
// }
$dropdown .= '</ul>
</div>

View File

@ -17,6 +17,7 @@ public function index(Request $request){
$viewData = [
'title' => 'Sub Klasifikasi',
'classification' => $request->input('classification', null),
'filter' => $request->input('filter', null)
];
return view('dashboard.sub-classifications.index', $viewData);
@ -78,7 +79,7 @@ public function update(SubClassificationRequest $request, $id){
}
public function show($id){
$subClassification = SubClassification::with(['classification'])->find(decrypt_id($id));
$subClassification = SubClassification::with(['classification'])->withTrashed()->find(decrypt_id($id));
return view('dashboard.sub-classifications.show', [
'title' => 'Detail Sub Klasifikasi',

View File

@ -3,9 +3,12 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class SubClassification extends Model
{
use SoftDeletes;
protected $table = 'sub_classifications';
protected $fillable = [
@ -17,7 +20,7 @@ class SubClassification extends Model
];
public function classification(){
return $this->belongsTo(Classification::class, 'classification_id', 'id');
return $this->belongsTo(Classification::class, 'classification_id', 'id')->withTrashed();
}
public function issues(){

View File

@ -17,18 +17,6 @@
<a href="#" class="btn btn-icon btn-trigger toggle-expand me-n1" data-target="pageMenu"><em class="icon ni ni-more-v"></em></a>
<div class="toggle-expand-content" data-content="pageMenu">
<ul class="nk-block-tools g-3">
{{-- <li>
<div class="drodown">
<a href="#" class="dropdown-toggle btn btn-white btn-dim btn-outline-light" data-bs-toggle="dropdown"><em class="d-none d-sm-inline icon ni ni-calender-date"></em><span><span class="d-none d-md-inline">Last</span> 30 Days</span><em class="dd-indc icon ni ni-chevron-right"></em></a>
<div class="dropdown-menu dropdown-menu-end">
<ul class="link-list-opt no-bdr">
<li><a href="#"><span>Last 30 Days</span></a></li>
<li><a href="#"><span>Last 6 Months</span></a></li>
<li><a href="#"><span>Last 1 Years</span></a></li>
</ul>
</div>
</div>
</li> --}}
<li class="nk-block-tools-opt"><a href="{{route('dashboard.classifications.create')}}" class="btn btn-primary"><em class="icon ni ni-plus"></em><span>Tambah</span></a></li>
</ul>
</div>
@ -46,9 +34,9 @@
<tr>
<th>No</th>
<th>Nama</th>
<th>Status</th>
<th>Sub Klasifikasi</th>
<th>Isu</th>
<th>Status</th>
<th></th>
</tr>
</thead>

View File

@ -31,18 +31,16 @@
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Status</span>
@switch($classification->status)
@case(0)
<span class="profile-ud-value"><span class="badge bg-warning">Nonaktif</span></span>
@break
@case(1)
<span class="profile-ud-value"><span class="badge bg-success">Aktif</span></span>
@break
@default
<span class="profile-ud-value"><span class="badge bg-secondary">Tidak Diketahui</span></span>
@endswitch
@if (filled($classification->deleted_at))
<span class="profile-ud-value"><span class="badge bg-danger">Dihapus</span></span>
@elseif ($classification->status == 0)
<span class="profile-ud-value"><span class="badge bg-warning">Nonaktif</span></span>
@elseif ($classification->status == 1)
<span class="profile-ud-value"><span class="badge bg-success">Aktif</span></span>
@else
<span class="profile-ud-value"><span class="badge bg-secondary">Tidak Diketahui</span></span>
@endif
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
@ -68,6 +66,12 @@
</span>
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Dibuat Pada</span>
<span class="profile-ud-value">{{idn_date($classification->created_at, 'l, d F Y')}}</span>
</div>
</div>
</div><!-- .profile-ud-list -->
</div><!-- .nk-block -->
{{-- <div class="nk-divider divider md"></div> --}}
@ -86,7 +90,9 @@
<hr>
<div class="nk-block d-flex justify-content-end">
<a href="{{route('dashboard.classifications.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
@if (!filled($classification->deleted_at))
<a href="{{route('dashboard.classifications.edit', ['id' => encrypt_id($classification->id), 'show' => true])}}" class="btn btn-warning"><span>Ubah</span></a>
@endif
</div><!-- .nk-block -->
</div><!-- .card-inner -->
</div><!-- .card-content -->

View File

@ -17,18 +17,6 @@
<a href="#" class="btn btn-icon btn-trigger toggle-expand me-n1" data-target="pageMenu"><em class="icon ni ni-more-v"></em></a>
<div class="toggle-expand-content" data-content="pageMenu">
<ul class="nk-block-tools g-3">
{{-- <li>
<div class="drodown">
<a href="#" class="dropdown-toggle btn btn-white btn-dim btn-outline-light" data-bs-toggle="dropdown"><em class="d-none d-sm-inline icon ni ni-calender-date"></em><span><span class="d-none d-md-inline">Last</span> 30 Days</span><em class="dd-indc icon ni ni-chevron-right"></em></a>
<div class="dropdown-menu dropdown-menu-end">
<ul class="link-list-opt no-bdr">
<li><a href="#"><span>Last 30 Days</span></a></li>
<li><a href="#"><span>Last 6 Months</span></a></li>
<li><a href="#"><span>Last 1 Years</span></a></li>
</ul>
</div>
</div>
</li> --}}
<li class="nk-block-tools-opt"><a href="{{route('dashboard.sub.classifications.create')}}" class="btn btn-primary"><em class="icon ni ni-plus"></em><span>Tambah</span></a></li>
</ul>
</div>

View File

@ -49,18 +49,22 @@
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Status</span>
@switch($subClassification->status)
@case(0)
<span class="profile-ud-value"><span class="badge bg-warning">Nonaktif</span></span>
@break
@case(1)
<span class="profile-ud-value"><span class="badge bg-success">Aktif</span></span>
@break
@default
<span class="profile-ud-value"><span class="badge bg-secondary">Tidak Diketahui</span></span>
@endswitch
@if (filled($subClassification->deleted_at))
<span class="profile-ud-value"><span class="badge bg-danger">Dihapus</span></span>
@elseif ($subClassification->status == 0)
<span class="profile-ud-value"><span class="badge bg-warning">Nonaktif</span></span>
@elseif ($subClassification->status == 1)
<span class="profile-ud-value"><span class="badge bg-success">Aktif</span></span>
@else
<span class="profile-ud-value"><span class="badge bg-secondary">Tidak Diketahui</span></span>
@endif
</div>
</div>
<div class="profile-ud-item">
<div class="profile-ud wider">
<span class="profile-ud-label">Dibuat Pada</span>
<span class="profile-ud-value">{{idn_date($subClassification->created_at, 'l, d F Y')}}</span>
</div>
</div>
</div><!-- .profile-ud-list -->
</div><!-- .nk-block -->
@ -80,7 +84,9 @@
<hr>
<div class="nk-block d-flex justify-content-end">
<a href="{{route('dashboard.sub.classifications.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
@if (!filled($subClassification->deleted_at))
<a href="{{route('dashboard.sub.classifications.edit', ['id' => encrypt_id($subClassification->id), 'show' => true])}}" class="btn btn-warning"><span>Ubah</span></a>
@endif
</div><!-- .nk-block -->
</div><!-- .card-inner -->
</div><!-- .card-content -->

View File

@ -27,22 +27,22 @@
$('#classificationsTable').DataTable({
processing: true,
serverSide: true,
ajax: '{{ route('dashboard.classifications.data') }}',
ajax: '{{ route('dashboard.classifications.data', ["filter" => $filter]) }}',
columns: [
{ data: 'DT_RowIndex', name: 'DT_RowIndex', orderable: false, searchable: false },
{ data: 'name', name: 'name' },
{ data: 'status', name: 'status' },
{ data: 'sub_classifications', name: 'sub_classifications' },
{ data: 'issues', name: 'issues' },
{ data: 'status', name: 'status' },
{ data: 'action', name: 'action', orderable: false, searchable: false },
{ data: 'created_at', name: 'created_at', visible: false },
{ data: 'id', name: 'id', orderable: true, searchable: false, visible: false },
],
columnDefs: [
{ targets: 0, width: 'auto' },
{ targets: 2, width: '7%' },
{ targets: 2, width: '10%' },
{ targets: 3, width: '10%' },
{ targets: 4, width: '10%' },
{ targets: 4, width: '7%' },
{ targets: 5, width: 'auto' },
{
targets: [1],
@ -75,7 +75,7 @@
$('#subClassificationsTable').DataTable({
processing: true,
serverSide: true,
ajax: '{{ route('dashboard.sub.classifications.data', ["classification" => $classification]) }}',
ajax: '{{ route('dashboard.sub.classifications.data', ["classification" => $classification, "filter" => $filter]) }}',
columns: [
{ data: 'DT_RowIndex', name: 'DT_RowIndex', orderable: false, searchable: false },
{ data: 'classification', name: 'classification' },

View File

@ -46,6 +46,54 @@ function deleteItem(url, message) {
}
</script>
<script>
$(document).ready(function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
});
function restoreItem(url, message) {
Swal.fire({
title: 'Apakah Anda yakin?',
text: message,
icon: 'question',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: 'Ya, pulihkan!',
cancelButtonText: 'Batal',
reverseButtons: true
}).then((result) => {
if (result.isConfirmed) {
$.ajax({
type: "POST",
url: url,
success: function(response) {
$('#usersTable').DataTable().ajax.reload();
Swal.fire(
'Terhapus!',
response.message,
'success'
).then(() => {
location.reload();
});
},
error: function(xhr) {
Swal.fire(
'Terjadi kesalahan!',
xhr.responseText,
'error'
);
}
});
}
});
}
</script>
<script>
$(document).ready(function() {
$.ajaxSetup({