From b4f5aa1a2b5562b8d4e96871127b245b0b1dad7b Mon Sep 17 00:00:00 2001 From: myuqinurrohman Date: Wed, 16 Apr 2025 13:31:25 +0700 Subject: [PATCH] chore: change show UI --- .../Dashboard/ClassificationController.php | 76 ++++++++++++++----- .../Dashboard/DatatableController.php | 51 +++++++++---- .../Dashboard/SubClassificationController.php | 31 ++++---- app/Models/Classification.php | 4 + app/Models/SubClassification.php | 4 + .../classifications/create.blade.php | 16 +++- .../dashboard/classifications/edit.blade.php | 15 +++- .../dashboard/classifications/index.blade.php | 4 +- .../dashboard/classifications/show.blade.php | 42 ++++++++-- .../views/dashboard/news/create.blade.php | 2 +- .../sub-classifications/create.blade.php | 22 +++++- .../sub-classifications/edit.blade.php | 9 ++- .../sub-classifications/index.blade.php | 4 +- .../sub-classifications/show.blade.php | 42 +++++++--- .../views/partials/app/datatable.blade.php | 59 +++++++++----- .../views/partials/app/sweetalert.blade.php | 76 +++++++++++++++++++ routes/web.php | 3 +- 17 files changed, 353 insertions(+), 107 deletions(-) diff --git a/app/Http/Controllers/Dashboard/ClassificationController.php b/app/Http/Controllers/Dashboard/ClassificationController.php index c757eca..3ab4a40 100644 --- a/app/Http/Controllers/Dashboard/ClassificationController.php +++ b/app/Http/Controllers/Dashboard/ClassificationController.php @@ -5,6 +5,7 @@ use App\Http\Controllers\Controller; use App\Http\Requests\ClassificationRequest; use App\Models\Classification; +use Exception; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Str; @@ -13,14 +14,15 @@ class ClassificationController extends Controller { public function index(Request $request){ return view('dashboard.classifications.index', [ - 'title' => 'Klasifikasi', - 'filter' => $request->input('filter', null) + 'title' => 'Data Klasifikasi', + 'filter' => $request->input('filter', null), + 'new_data' => session()->get('new_data', null), ]); } public function create(){ return view('dashboard.classifications.create', [ - 'title' => 'Tambah Klasifikasi' + 'title' => 'Buat Klasifikasi Baru' ]); } @@ -28,12 +30,14 @@ public function store(ClassificationRequest $request){ $validatedData = $request->validated(); $validatedData['enhancer_id'] = Auth::id(); - $createdClassification = Classification::create($validatedData); + try{ + $createdClassification = Classification::create($validatedData); + + return redirect()->route('dashboard.classifications.index')->with('success-status', 'Berhasil membuat klasifikasi baru.') + ->with('new_data', $createdClassification->id); + }catch (\Exception $e){ + return redirect()->back()->with('failed-status', 'Gagal membuat klasifikasi baru.'); - if($createdClassification){ - return redirect()->route('dashboard.classifications.index')->with('success-status', 'Berhasil menambahkan klasifikasi.'); - }else{ - return redirect()->back()->with('failed-status', 'Gagal menambahkan klasifikasi.'); } } @@ -50,18 +54,18 @@ public function update(ClassificationRequest $request, $id){ $validatedData = $request->validated(); $validatedData['enhancer_id'] = Auth::id(); - $classification = Classification::findOrFail(decrypt_id($id)); - $updatedClassification = $classification->update($validatedData); + try{ + $classification = Classification::findOrFail(decrypt_id($id)); + $classification->update($validatedData); - if($updatedClassification){ - return redirect()->back()->with('success-status', 'Berhasil mengubah klasifikasi.'); - }else{ + return redirect()->route('dashboard.classifications.show', ['id' => encrypt_id($classification->id)])->with('success-status', 'Berhasil mengubah klasifikasi.'); + }catch(\Exception $e){ return redirect()->back()->with('failed-status', 'Gagal mengubah klasifikasi.'); } } public function show($id){ - $classification = Classification::withTrashed()->find(decrypt_id($id)); + $classification = Classification::withTrashed()->findOrFail(decrypt_id($id)); return view('dashboard.classifications.show', [ 'title' => 'Detail Klasifikasi', @@ -69,15 +73,51 @@ public function show($id){ ]); } - public function destroy($id){ + public function destroy($id) + { try { $classification = Classification::findOrFail(decrypt_id($id)); - $classification->delete(); - return response()->json(['message' => 'Berhasil menghapus klasifikasi.']); + return response()->json([ + 'status' => 'success', + 'message' => 'Berhasil menghapus klasifikasi.', + 'id' => encrypt_id($classification->id), // untuk digunakan saat Undo + ]); } catch (\Exception $e) { - return response()->json(['message' => 'Gagal menghapus klasifikasi.'], 500); + return response()->json([ + 'status' => 'failed', + 'message' => 'Gagal menghapus klasifikasi.', + ], 500); } } + + + public function restore($id) + { + try { + $classification = Classification::withTrashed()->findOrFail(decrypt_id($id)); + + if (!$classification->trashed()) { + return response()->json([ + 'status' => 'failed', + 'message' => 'Klasifikasi belum dihapus.', + ], 400); + } + + $classification->restore(); + + return response()->json([ + 'status' => 'success', + 'message' => 'Klasifikasi berhasil dikembalikan.', + ]); + } catch (\Exception $e) { + return response()->json([ + 'status' => 'failed', + 'message' => 'Gagal mengembalikan klasifikasi.', + ], 500); + } + } + + } diff --git a/app/Http/Controllers/Dashboard/DatatableController.php b/app/Http/Controllers/Dashboard/DatatableController.php index ab4f79f..a12c2b4 100644 --- a/app/Http/Controllers/Dashboard/DatatableController.php +++ b/app/Http/Controllers/Dashboard/DatatableController.php @@ -45,9 +45,19 @@ public function classification(Request $request){ $data = Classification::with(['subClassifications'])->get(); } + $newData = $request->input('new_data', null); + return DataTables::of($data) ->addIndexColumn() + ->addColumn('name', function ($data) use ($newData) { + + if(filled($newData) && $newData == $data->id){ + return 'Baru'. $data->name; + }else{ + return $data->name; + } + }) ->addColumn('status', function ($data) { if(filled($data->deleted_at)){ return 'Dihapus'; @@ -112,7 +122,7 @@ public function classification(Request $request){ return $dropdown; }) - ->rawColumns(['sub_classifications', 'issues', 'status', 'action']) + ->rawColumns(['name', 'sub_classifications', 'issues', 'status', 'action']) ->make(true); } @@ -127,29 +137,40 @@ public function subClassification(Request $request){ $data = SubClassification::with(['classification'])->onlyTrashed()->get(); }else{ $classificationParam = $request->input('classification', null); - if ($classificationParam) { - $classification = Classification::where('id', '=', decrypt_id($classificationParam))->first(); + if ($classificationParam) { + $classification = Classification::where('id', '=', decrypt_id($classificationParam))->first(); - // Tambahkan pengecekan apakah classification ditemukan - if ($classification) { + // Tambahkan pengecekan apakah classification ditemukan + if ($classification) { + $data = SubClassification::with(['classification' => function($query) { + $query->withTrashed(); + }])->where('classification_id', '=', $classification->id)->get(); + } else { + return response()->json(['error' => 'Classification not found'], 404); + } + } else { $data = SubClassification::with(['classification' => function($query) { $query->withTrashed(); - }])->where('classification_id', '=', $classification->id)->get(); - } else { - return response()->json(['error' => 'Classification not found'], 404); + }])->get(); } - } else { - $data = SubClassification::with(['classification' => function($query) { - $query->withTrashed(); - }])->get(); - } } + $newData = $request->input('new_data', null); + + return DataTables::of($data) ->addIndexColumn() + ->addColumn('name', function ($data) use ($newData) { + + if(filled($newData) && $newData == $data->id){ + return 'Baru'. $data->name; + }else{ + return $data->name; + } + }) ->addColumn('classification', function ($data) { - return $data->classification->name; + return ''.$data->classification->name.''; }) ->addColumn('status', function ($data) { if(filled($data->deleted_at)){ @@ -202,7 +223,7 @@ public function subClassification(Request $request){ return $dropdown; }) - ->rawColumns(['issues', 'status', 'action']) + ->rawColumns(['name', 'classification', 'issues', 'status', 'action']) ->make(true); } diff --git a/app/Http/Controllers/Dashboard/SubClassificationController.php b/app/Http/Controllers/Dashboard/SubClassificationController.php index b7423b1..fa25b42 100644 --- a/app/Http/Controllers/Dashboard/SubClassificationController.php +++ b/app/Http/Controllers/Dashboard/SubClassificationController.php @@ -15,9 +15,10 @@ class SubClassificationController extends Controller public function index(Request $request){ $viewData = [ - 'title' => 'Sub Klasifikasi', + 'title' => 'Data Sub Klasifikasi', 'classification' => $request->input('classification', null), - 'filter' => $request->input('filter', null) + 'filter' => $request->input('filter', null), + 'new_data' => session()->get('new_data', null), ]; return view('dashboard.sub-classifications.index', $viewData); @@ -26,7 +27,7 @@ public function index(Request $request){ public function create(Request $request){ $viewData = [ - 'title' => 'Tambah Sub Klasifikasi', + 'title' => 'Buat Sub Klasifikasi Baru', 'fromClassification' => false ]; @@ -45,12 +46,13 @@ public function store(SubClassificationRequest $request){ $validatedData = $request->validated(); $validatedData['enhancer_id'] = Auth::id(); - $createdSubClassification = SubClassification::create($validatedData); + try{ + $createdSubClassification = SubClassification::create($validatedData); - if($createdSubClassification){ - return redirect()->route('dashboard.sub.classifications.index')->with('success-status', 'Berhasil menambahkan sub klasifikasi.'); - }else{ - return redirect()->back()->with('failed-status', 'Gagal menambahkan sub klasifikasi.'); + return redirect()->route('dashboard.sub.classifications.index')->with('success-status', 'Berhasil membuat sub klasifikasi baru.') + ->with('new_data', $createdSubClassification->id); + }catch(\Exception $e){ + return redirect()->back()->with('failed-status', 'Gagal membuat sub klasifikasi baru.'); } } @@ -68,18 +70,18 @@ public function update(SubClassificationRequest $request, $id){ $validatedData = $request->validated(); $validatedData['enhancer_id'] = Auth::id(); - $subClassification = SubClassification::findOrFail(decrypt_id($id)); - $updatedSubClassification = $subClassification->update($validatedData); + try{ + $subClassification = SubClassification::findOrFail(decrypt_id($id)); + $subClassification->update($validatedData); - if($updatedSubClassification){ - return redirect()->back()->with('success-status', 'Berhasil mengubah sub klasifikasi.'); - }else{ + return redirect()->route('dashboard.sub.classifications.show', ['id' => encrypt_id($subClassification->id)])->with('success-status', 'Berhasil mengubah sub klasifikasi.'); + }catch(\Exception $e){ return redirect()->back()->with('failed-status', 'Gagal mengubah sub klasifikasi.'); } } public function show($id){ - $subClassification = SubClassification::with(['classification'])->withTrashed()->find(decrypt_id($id)); + $subClassification = SubClassification::with(['classification'])->withTrashed()->findOrFail(decrypt_id($id)); return view('dashboard.sub-classifications.show', [ 'title' => 'Detail Sub Klasifikasi', @@ -90,7 +92,6 @@ public function show($id){ public function destroy($id){ try { $subClassification = SubClassification::findOrFail(decrypt_id($id)); - $subClassification->delete(); return response()->json(['message' => 'Berhasil menghapus sub klasifikasi.']); diff --git a/app/Models/Classification.php b/app/Models/Classification.php index 9506ce2..667beb5 100644 --- a/app/Models/Classification.php +++ b/app/Models/Classification.php @@ -24,4 +24,8 @@ public function subClassifications(){ public function issues(){ return $this->hasMany(IssueManagement::class, 'classification_id', 'id'); } + + public function enhancer(){ + return $this->belongsTo(User::class, 'enhancer_id', 'id'); + } } diff --git a/app/Models/SubClassification.php b/app/Models/SubClassification.php index 325054b..1be6531 100644 --- a/app/Models/SubClassification.php +++ b/app/Models/SubClassification.php @@ -26,4 +26,8 @@ public function classification(){ public function issues(){ return $this->hasMany(IssueManagement::class, 'sub_classification_id', 'id'); } + + public function enhancer(){ + return $this->belongsTo(User::class, 'enhancer_id', 'id'); + } } diff --git a/resources/views/dashboard/classifications/create.blade.php b/resources/views/dashboard/classifications/create.blade.php index 8a0d9e3..431d1dd 100644 --- a/resources/views/dashboard/classifications/create.blade.php +++ b/resources/views/dashboard/classifications/create.blade.php @@ -10,16 +10,19 @@
-
{{$title}}
+
+
Buat Klasifikasi Baru
+

Masukkan informasi yang diperlukan untuk membuat klasifikasi.

+
@csrf
- +
- +
@error('name') {{$message}} @@ -31,10 +34,14 @@
+ @error('status') + {{$message}} + @enderror
@@ -44,6 +51,9 @@
+ @error('description') + {{$message}} + @enderror

diff --git a/resources/views/dashboard/classifications/edit.blade.php b/resources/views/dashboard/classifications/edit.blade.php index 1375578..099ba06 100644 --- a/resources/views/dashboard/classifications/edit.blade.php +++ b/resources/views/dashboard/classifications/edit.blade.php @@ -10,7 +10,10 @@
-
{{$title}}
+
+
Ubah Klasifikasi
+

Perbarui informasi klasifikasi ini.

+
@csrf @@ -18,9 +21,9 @@
- +
- +
@error('name') {{$message}} @@ -36,6 +39,9 @@
+ @error('status') + {{$message}} + @enderror
@@ -44,6 +50,9 @@
+ @error('description') + {{$message}} + @enderror
diff --git a/resources/views/dashboard/classifications/index.blade.php b/resources/views/dashboard/classifications/index.blade.php index 7b1076b..53323d5 100644 --- a/resources/views/dashboard/classifications/index.blade.php +++ b/resources/views/dashboard/classifications/index.blade.php @@ -34,8 +34,8 @@ No Nama - Sub Klasifikasi - Isu + Jumlah Sub Klasifikasi + Jumlah Isu Status diff --git a/resources/views/dashboard/classifications/show.blade.php b/resources/views/dashboard/classifications/show.blade.php index 7211deb..6dfd9a6 100644 --- a/resources/views/dashboard/classifications/show.blade.php +++ b/resources/views/dashboard/classifications/show.blade.php @@ -6,13 +6,40 @@
+
+
+
+

Detail Klasifikasi

+
+
    +
  • Detail klasifikasi dapat dilihat di sini.
  • +
+
+
+
+ @if (request()->query('sub_classification') && request()->query('sub_classification') === '1') + + Kembali + @elseif (request()->query('sub_classification') && request()->query('sub_classification') !== 1) + + Kembali + @else + + Kembali + @endif +
+
+
@@ -72,6 +99,12 @@ {{idn_date($classification->created_at, 'l, d F Y')}}
+
+
+ Dibuat Oleh + {{$classification->enhancer->name}} +
+
{{--
--}} @@ -87,13 +120,6 @@
-
-
- Kembali - @if (!filled($classification->deleted_at)) - Ubah - @endif -
diff --git a/resources/views/dashboard/news/create.blade.php b/resources/views/dashboard/news/create.blade.php index 738b010..a5cb511 100644 --- a/resources/views/dashboard/news/create.blade.php +++ b/resources/views/dashboard/news/create.blade.php @@ -12,7 +12,7 @@
Buat Berita Baru
-

Masukkan informasi untuk membuat berita/pengumuman baru.

+

Masukkan informasi yang diperlukan untuk membuat berita atau pengumuman.

diff --git a/resources/views/dashboard/sub-classifications/create.blade.php b/resources/views/dashboard/sub-classifications/create.blade.php index c2a827f..e8be3fa 100644 --- a/resources/views/dashboard/sub-classifications/create.blade.php +++ b/resources/views/dashboard/sub-classifications/create.blade.php @@ -10,16 +10,19 @@
-
{{$title}}
+
+
Buat Sub Klasifikasi Baru
+

Masukkan informasi yang diperlukan untuk membuat sub klasifikasi.

+
@csrf
- +
- +
@error('name') {{$message}} @@ -36,12 +39,16 @@ @else @endif
+ @error('classification_id') + {{$message}} + @enderror
@@ -49,10 +56,14 @@
+ @error('status') + {{$message}} + @enderror
@@ -62,11 +73,14 @@
+ @error('description') + {{$message}} + @enderror

- Kembali + Kembali
diff --git a/resources/views/dashboard/sub-classifications/edit.blade.php b/resources/views/dashboard/sub-classifications/edit.blade.php index 9a27716..d92c893 100644 --- a/resources/views/dashboard/sub-classifications/edit.blade.php +++ b/resources/views/dashboard/sub-classifications/edit.blade.php @@ -10,7 +10,10 @@
-
{{$title}}
+
+
Ubah Sub Klasifikasi
+

Perbarui informasi sub klasifikasi ini.

+
@csrf @@ -18,9 +21,9 @@
- +
- +
@error('name') {{$message}} diff --git a/resources/views/dashboard/sub-classifications/index.blade.php b/resources/views/dashboard/sub-classifications/index.blade.php index 5e3a030..95af9c5 100644 --- a/resources/views/dashboard/sub-classifications/index.blade.php +++ b/resources/views/dashboard/sub-classifications/index.blade.php @@ -33,9 +33,9 @@ No - Klasifikasi Nama - Isu + Klasifikasi + Jumlah Isu Status diff --git a/resources/views/dashboard/sub-classifications/show.blade.php b/resources/views/dashboard/sub-classifications/show.blade.php index 4332c6d..3dd3b0b 100644 --- a/resources/views/dashboard/sub-classifications/show.blade.php +++ b/resources/views/dashboard/sub-classifications/show.blade.php @@ -6,13 +6,32 @@
+
+
+
+

Detail Sub Klasifikasi

+
+
    +
  • Detail sub klasifikasi dapat dilihat di sini.
  • +
+
+
+
+ Kembali + +
+
+
@@ -24,14 +43,16 @@
- Nama Sub Klasifikasi + Nama {{$subClassification->name}}
- Nama Klasifikasi - {{$subClassification->classification->name}} + Klasifikasi + + {{$subClassification->classification->name}} +
@@ -66,6 +87,12 @@ {{idn_date($subClassification->created_at, 'l, d F Y')}}
+
+
+ Dibuat Oleh + {{$subClassification->enhancer->name}} +
+
{{--
--}} @@ -81,13 +108,6 @@
-
-
- Kembali - @if (!filled($subClassification->deleted_at)) - Ubah - @endif -
diff --git a/resources/views/partials/app/datatable.blade.php b/resources/views/partials/app/datatable.blade.php index 228d433..5bb02e0 100644 --- a/resources/views/partials/app/datatable.blade.php +++ b/resources/views/partials/app/datatable.blade.php @@ -27,7 +27,14 @@ $('#classificationsTable').DataTable({ processing: true, serverSide: true, - ajax: '{{ route('dashboard.classifications.data', ["filter" => $filter]) }}', + ajax: { + url: '{{ route('dashboard.classifications.data') }}', + type: 'GET', + data: function(d) { + d.filter = '{{ $filter }}'; + d.new_data = '{{ $new_data }}'; + } + }, columns: [ { data: 'DT_RowIndex', name: 'DT_RowIndex', orderable: false, searchable: false }, { data: 'name', name: 'name' }, @@ -39,18 +46,19 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], columnDefs: [ - { targets: 0, width: 'auto' }, - { targets: 2, width: '10%' }, - { targets: 3, width: '10%' }, - { targets: 4, width: '7%' }, - { targets: 5, width: 'auto' }, + { targets: 0, width: '3%' }, // Index + { targets: 1, width: '40%' }, // Name + { targets: 2, width: '8%' }, // Sub Classification + { targets: 3, width: '8%' }, // Issue + { targets: 4, width: '5%' }, // Status + { targets: 5, width: '2%', className: 'text-center' }, // Action button + { - targets: [1], - createdCell: function(td, cellData, rowData, row, col) { + targets: [1], // Title & Link + createdCell: function(td) { $(td).css({ - 'word-wrap': 'break-word', 'white-space': 'normal', - 'overflow-wrap': 'break-word' + 'word-break': 'break-word', }); } } @@ -76,11 +84,19 @@ $('#subClassificationsTable').DataTable({ processing: true, serverSide: true, - ajax: '{{ route('dashboard.sub.classifications.data', ["classification" => $classification, "filter" => $filter]) }}', + ajax: { + url: '{{ route('dashboard.sub.classifications.data') }}', + type: 'GET', + data: function(d) { + d.classification = '{{ $classification }}'; + d.filter = '{{ $filter }}'; + d.new_data = '{{ $new_data }}'; + } + }, columns: [ { data: 'DT_RowIndex', name: 'DT_RowIndex', orderable: false, searchable: false }, - { data: 'classification', name: 'classification' }, { data: 'name', name: 'name' }, + { data: 'classification', name: 'classification' }, { data: 'issues', name: 'issues' }, { data: 'status', name: 'status' }, { data: 'action', name: 'action', orderable: false, searchable: false }, @@ -88,18 +104,19 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], columnDefs: [ - { targets: 0, width: 'auto' }, - { targets: 1, width: '10%' }, - { targets: 3, width: '10%' }, - { targets: 4, width: '10%' }, - { targets: 5, width: 'auto' }, + { targets: 0, width: '3%' }, // Index + { targets: 1, width: '20%' }, // Classification + { targets: 2, width: '20%' }, // Name + { targets: 3, width: '5%' }, // Issue + { targets: 4, width: '5%' }, // Status + { targets: 5, width: '2%', className: 'text-center' }, // Action button + { - targets: [2], - createdCell: function(td, cellData, rowData, row, col) { + targets: [1, 2], // Title & Link + createdCell: function(td) { $(td).css({ - 'word-wrap': 'break-word', 'white-space': 'normal', - 'overflow-wrap': 'break-word' + 'word-break': 'break-word', }); } } diff --git a/resources/views/partials/app/sweetalert.blade.php b/resources/views/partials/app/sweetalert.blade.php index f631ae2..eb2919a 100644 --- a/resources/views/partials/app/sweetalert.blade.php +++ b/resources/views/partials/app/sweetalert.blade.php @@ -53,6 +53,82 @@ function deleteItem(url, message) { } + +