From 082775cdbc159299923f797b07861a8d5157a160 Mon Sep 17 00:00:00 2001 From: myuqinurrohman Date: Tue, 15 Apr 2025 08:15:54 +0700 Subject: [PATCH] chore: add year and created_at column in table airing-proof-theme --- .../Dashboard/AiringProofThemeController.php | 27 ++++++++ .../Dashboard/DatatableController.php | 3 + app/Models/AiringProofTheme.php | 2 + ...84816_create_airing_proof_themes_table.php | 1 + .../airing-proof-themes/create.blade.php | 15 ++++- .../airing-proof-themes/edit.blade.php | 4 +- .../airing-proof-themes/index.blade.php | 2 + .../airing-proof-themes/show.blade.php | 2 +- .../views/partials/app/datatable.blade.php | 62 ++++++++++--------- .../partials/dashboard/sidebar.blade.php | 2 +- routes/web.php | 1 + 11 files changed, 85 insertions(+), 36 deletions(-) diff --git a/app/Http/Controllers/Dashboard/AiringProofThemeController.php b/app/Http/Controllers/Dashboard/AiringProofThemeController.php index 2754e99..45a5b52 100644 --- a/app/Http/Controllers/Dashboard/AiringProofThemeController.php +++ b/app/Http/Controllers/Dashboard/AiringProofThemeController.php @@ -28,6 +28,14 @@ public function store(AiringProofThemeRequest $request){ $validatedData['slug'] = Str::slug($validatedData['name']. ' '. $validatedData['year']); $validatedData['enhancer_id'] = Auth::id(); + $existedData = AiringProofTheme::withTrashed()->where('slug', $validatedData['slug'])->first(); + + if($existedData && filled($existedData->deleted_at)){ + return redirect()->back()->with('data-exists', $validatedData['slug']); + }elseif($existedData){ + return redirect()->back()->with('failed-status', 'Tema dengan nama dan tahun tersebut sudah ada.'); + } + $createdTheme = AiringProofTheme::create($validatedData); if($createdTheme){ @@ -81,4 +89,23 @@ public function destroy($id){ return response()->json(['message' => 'Gagal menghapus tema bukti tayang.'], 500); } } + + public function restore($slug) + { + $airingProofTheme = AiringProofTheme::withTrashed() + ->where('slug', $slug) + ->first(); + + if (!$airingProofTheme) { + return redirect()->back()->with('failed-status', 'Tema tidak ditemukan.'); + } + + if (filled($airingProofTheme->deleted_at)) { + $airingProofTheme->restore(); + return redirect()->back()->with('success-status', 'Tema berhasil dipulihkan.'); + } + + return redirect()->back()->with('info-status', 'Tema sudah aktif.'); + } + } diff --git a/app/Http/Controllers/Dashboard/DatatableController.php b/app/Http/Controllers/Dashboard/DatatableController.php index fc24022..ddcb213 100644 --- a/app/Http/Controllers/Dashboard/DatatableController.php +++ b/app/Http/Controllers/Dashboard/DatatableController.php @@ -643,6 +643,9 @@ public function airingProofTheme(Request $request){ return DataTables::of($data) ->addIndexColumn() + ->addColumn('date_created', function ($data) { + return idn_date($data->created_at, 'l, d F Y'); + }) ->addColumn('action', function ($data) { $showUrl = route('dashboard.airing.proof.themes.show', ['id' => encrypt_id($data->id)]); diff --git a/app/Models/AiringProofTheme.php b/app/Models/AiringProofTheme.php index dbfe3bf..9f41a38 100644 --- a/app/Models/AiringProofTheme.php +++ b/app/Models/AiringProofTheme.php @@ -3,9 +3,11 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; class AiringProofTheme extends Model { + use SoftDeletes; protected $table = 'airing_proof_themes'; protected $fillable = [ diff --git a/database/migrations/2025_02_27_084816_create_airing_proof_themes_table.php b/database/migrations/2025_02_27_084816_create_airing_proof_themes_table.php index 3b137a8..d7fd8cf 100644 --- a/database/migrations/2025_02_27_084816_create_airing_proof_themes_table.php +++ b/database/migrations/2025_02_27_084816_create_airing_proof_themes_table.php @@ -20,6 +20,7 @@ public function up(): void $table->unsignedBigInteger('enhancer_id'); $table->foreign('enhancer_id')->references('id')->on('users'); $table->timestamps(); + $table->softDeletes(); }); } diff --git a/resources/views/dashboard/airing-proof-themes/create.blade.php b/resources/views/dashboard/airing-proof-themes/create.blade.php index 4a040b6..e41556b 100644 --- a/resources/views/dashboard/airing-proof-themes/create.blade.php +++ b/resources/views/dashboard/airing-proof-themes/create.blade.php @@ -7,12 +7,23 @@
+ @if (session()->has('data-exists')) +
+
+ Tema Sudah Ada.
Tema dengan nama dan tahun tersebut sudah ada di database, namun dalam kondisi terhapus. Anda ingin mengembalikannya? +
+ Ya + Tidak +
+
+
+ @endif
{{$title}}
-
+ @csrf
@@ -49,7 +60,7 @@
Kembali - +
diff --git a/resources/views/dashboard/airing-proof-themes/edit.blade.php b/resources/views/dashboard/airing-proof-themes/edit.blade.php index a3d9c91..61c8672 100644 --- a/resources/views/dashboard/airing-proof-themes/edit.blade.php +++ b/resources/views/dashboard/airing-proof-themes/edit.blade.php @@ -12,7 +12,7 @@
{{$title}}
- + @csrf @method('put')
@@ -50,7 +50,7 @@
Kembali - +
diff --git a/resources/views/dashboard/airing-proof-themes/index.blade.php b/resources/views/dashboard/airing-proof-themes/index.blade.php index bf4601e..2b2dcd0 100644 --- a/resources/views/dashboard/airing-proof-themes/index.blade.php +++ b/resources/views/dashboard/airing-proof-themes/index.blade.php @@ -44,6 +44,8 @@ No Nama + Tahun + Tanggal Dibuat diff --git a/resources/views/dashboard/airing-proof-themes/show.blade.php b/resources/views/dashboard/airing-proof-themes/show.blade.php index 4778d4e..7b1d012 100644 --- a/resources/views/dashboard/airing-proof-themes/show.blade.php +++ b/resources/views/dashboard/airing-proof-themes/show.blade.php @@ -35,7 +35,7 @@
-
{!! $airingProofTheme->description !!}
+
{!! filled($airingProofTheme->description) ? $airingProofTheme->description : 'Tidak ada deskripsi' !!}
diff --git a/resources/views/partials/app/datatable.blade.php b/resources/views/partials/app/datatable.blade.php index 6d403a7..3a5502e 100644 --- a/resources/views/partials/app/datatable.blade.php +++ b/resources/views/partials/app/datatable.blade.php @@ -56,7 +56,7 @@ } ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [ [6, 'desc'], @@ -105,7 +105,7 @@ } ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [ [6, 'desc'] @@ -153,7 +153,7 @@ } ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[6, 'desc']], pagingType: "simple", @@ -200,7 +200,7 @@ } ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[6, 'desc']], pagingType: "simple", @@ -242,7 +242,7 @@ } ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[4, 'desc']], pagingType: "simple", @@ -297,7 +297,7 @@ } ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[6, 'desc']], pagingType: "simple", @@ -343,7 +343,7 @@ { targets: 4, width: '5%' }, // Kolom aksi ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [ [5, 'desc'] @@ -393,7 +393,7 @@ { targets: 5, width: '5%' }, // Kolom aksi ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [ [4, 'desc'], @@ -417,14 +417,16 @@ columns: [ { data: 'DT_RowIndex', name: 'DT_RowIndex', orderable: false, searchable: false }, { data: 'name', name: 'name' }, + { data: 'year', name: 'year' }, + { data: 'date_created', name: 'date_created' }, { 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 }, ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, - order: [[3, 'desc']], + order: [[5, 'desc']], pagingType: "simple", lengthMenu: [[10, 25, 50, 100, -1], ['Tampilkan 10 data', 'Tampilkan 25 data', 'Tampilkan 50 data', 'Tampilkan 100 data', 'Tampilkan semua']], scrollX: true @@ -466,7 +468,7 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[10, 'desc']], pagingType: "simple", @@ -512,7 +514,7 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[10, 'desc']], pagingType: "simple", @@ -555,7 +557,7 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[8, 'desc']], pagingType: "simple", @@ -599,7 +601,7 @@ ], @endif language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[6, 'desc']], pagingType: "simple", @@ -630,7 +632,7 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[6, 'desc']], pagingType: "simple", @@ -661,7 +663,7 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[7, 'desc']], pagingType: "simple", @@ -690,7 +692,7 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[7, 'desc']], pagingType: "simple", @@ -722,7 +724,7 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[7, 'desc']], pagingType: "simple", @@ -752,7 +754,7 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[5, 'desc']], pagingType: "simple", @@ -784,7 +786,7 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[7, 'desc']], pagingType: "simple", @@ -813,7 +815,7 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[6, 'desc']], pagingType: "simple", @@ -841,7 +843,7 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[5, 'desc']], pagingType: "simple", @@ -870,7 +872,7 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[7, 'desc']], pagingType: "simple", @@ -900,7 +902,7 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[7, 'desc']], pagingType: "simple", @@ -932,7 +934,7 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[9, 'desc']], pagingType: "simple", @@ -987,7 +989,7 @@ } ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[3, 'desc']], pagingType: "simple", @@ -1023,7 +1025,7 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[6, 'desc']], pagingType: "simple", @@ -1048,7 +1050,7 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[1, 'desc']], pagingType: "simple", @@ -1084,7 +1086,7 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[4, 'desc']], pagingType: "simple", @@ -1121,7 +1123,7 @@ { data: 'id', name: 'id', orderable: true, searchable: false, visible: false }, ], language: datatableLanguage, - responsive: true, + // responsive: true, autoWidth: false, order: [[4, 'desc']], pagingType: "simple", diff --git a/resources/views/partials/dashboard/sidebar.blade.php b/resources/views/partials/dashboard/sidebar.blade.php index 6dad94c..4b9933d 100644 --- a/resources/views/partials/dashboard/sidebar.blade.php +++ b/resources/views/partials/dashboard/sidebar.blade.php @@ -103,7 +103,7 @@
  • - Tema + Tema Bukti Tayang
  • diff --git a/routes/web.php b/routes/web.php index 2642068..3896118 100644 --- a/routes/web.php +++ b/routes/web.php @@ -232,6 +232,7 @@ Route::middleware('role:1')->group(function(){ Route::get('/create', 'create')->name('create'); + Route::get('/create/restore/{slug}', 'restore')->name('restore'); Route::post('/', 'store')->name('store'); Route::get('/{id}/edit', 'edit')->name('edit'); Route::put('/{id}', 'update')->name('update');