chore: add year and created_at column in table airing-proof-theme

This commit is contained in:
myuqinurrohman 2025-04-15 08:15:54 +07:00
parent 9ce357c394
commit 082775cdbc
11 changed files with 85 additions and 36 deletions

View File

@ -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.');
}
}

View File

@ -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)]);

View File

@ -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 = [

View File

@ -20,6 +20,7 @@ public function up(): void
$table->unsignedBigInteger('enhancer_id');
$table->foreign('enhancer_id')->references('id')->on('users');
$table->timestamps();
$table->softDeletes();
});
}

View File

@ -7,12 +7,23 @@
<div class="nk-content-inner">
<div class="nk-content-body">
<div class="nk-block nk-block-lg">
@if (session()->has('data-exists'))
<div class="example-alert mb-3">
<div class="alert alert-warning alert-icon">
<em class="icon ni ni-alert-circle"></em> <strong>Tema Sudah Ada.</strong><br>Tema dengan nama dan tahun tersebut sudah ada di database, namun dalam kondisi <span class="text-danger">terhapus</span>. Anda ingin mengembalikannya?
<div class="text-center mt-1">
<a href="{{route('dashboard.airing.proof.themes.restore', ['slug' => session()->get('data-exists')])}}" class="btn btn-sm btn-primary mx-1">Ya</a>
<a href="{{route('dashboard.airing.proof.themes.create')}}" class="btn btn-sm btn-warning">Tidak</a>
</div>
</div>
</div>
@endif
<div class="card card-bordered card-preview">
<div class="card-inner">
<div class="card-head">
<h5 class="card-title">{{$title}}</h5>
</div>
<form action="{{route('dashboard.airing.proof.themes.store')}}" method="post">
<form action="{{route('dashboard.airing.proof.themes.store')}}" method="post" id="myForm">
@csrf
<div class="row g-4">
<div class="col-lg-6">
@ -49,7 +60,7 @@
<hr>
<div class="form-group d-flex justify-content-end">
<a href="{{route('dashboard.airing.proof.themes.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
<button type="submit" class="btn btn-md btn-primary">Tambahkan</button>
<button type="button" class="btn btn-md btn-primary" id="submitButton">Tambahkan</button>
</div>
</div>
</div>

View File

@ -12,7 +12,7 @@
<div class="card-head">
<h5 class="card-title">{{$title}}</h5>
</div>
<form action="{{route('dashboard.airing.proof.themes.update', ['id' => encrypt_id($airingProofTheme->id)])}}" method="post">
<form action="{{route('dashboard.airing.proof.themes.update', ['id' => encrypt_id($airingProofTheme->id)])}}" method="post" id="myForm">
@csrf
@method('put')
<div class="row g-4">
@ -50,7 +50,7 @@
<hr>
<div class="form-group d-flex justify-content-end">
<a href="{{route('dashboard.airing.proof.themes.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
<button type="submit" class="btn btn-md btn-primary">Simpan</button>
<button type="button" class="btn btn-md btn-primary" id="submitButton">Simpan</button>
</div>
</div>
</div>

View File

@ -44,6 +44,8 @@
<tr>
<th style="width: 10% !important;">No</th>
<th>Nama</th>
<th>Tahun</th>
<th>Tanggal Dibuat</th>
<th style="width: 10% !important;"></th>
</tr>
</thead>

View File

@ -35,7 +35,7 @@
<div class="form-group">
<label class="form-label" for="phone-no-1">Deskripsi</label>
<div class="form-control-wrap">
<div class="description-content">{!! $airingProofTheme->description !!}</div>
<div class="description-content">{!! filled($airingProofTheme->description) ? $airingProofTheme->description : '<i>Tidak ada deskripsi</i>' !!}</div>
</div>
</div>
</div>

View File

@ -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",

View File

@ -103,7 +103,7 @@
<li class="nk-menu-item">
<a href="{{route('dashboard.airing.proof.themes.index')}}" class="nk-menu-link {{$page === 'airing_proof_themes' ? 'active-page' : ''}}">
<span class="nk-menu-icon"><em class="icon ni ni-puzzle"></em></span>
<span class="nk-menu-text">Tema</span>
<span class="nk-menu-text">Tema Bukti Tayang</span>
</a>
</li><!-- .nk-menu-item -->
<li class="nk-menu-item">

View File

@ -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');