chore: change show UI
This commit is contained in:
parent
eec001e8b5
commit
b4f5aa1a2b
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -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 '<span class="badge bg-info" style="display:inline-block;font-size:0.8rem; margin-right:0.5rem;">Baru</span>'. $data->name;
|
||||
}else{
|
||||
return $data->name;
|
||||
}
|
||||
})
|
||||
->addColumn('status', function ($data) {
|
||||
if(filled($data->deleted_at)){
|
||||
return '<span class="badge bg-danger" style="display:inline-block;font-size:0.8rem;">Dihapus</span>';
|
||||
@ -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 '<span class="badge bg-info" style="display:inline-block;font-size:0.8rem; margin-right:0.5rem;">Baru</span>'. $data->name;
|
||||
}else{
|
||||
return $data->name;
|
||||
}
|
||||
})
|
||||
->addColumn('classification', function ($data) {
|
||||
return $data->classification->name;
|
||||
return '<a href="'.route('dashboard.classifications.show', ['id' => encrypt_id($data->classification->id), 'sub_classification' => true]).'" class="text-dark">'.$data->classification->name.'</a>';
|
||||
})
|
||||
->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);
|
||||
}
|
||||
|
||||
|
||||
@ -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.']);
|
||||
|
||||
@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
@ -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');
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,16 +10,19 @@
|
||||
<div class="card card-bordered card-preview">
|
||||
<div class="card-inner">
|
||||
<div class="card-head">
|
||||
<h5 class="card-title">{{$title}}</h5>
|
||||
<div class="nk-block-head">
|
||||
<h5 class="title">Buat Klasifikasi Baru</h5>
|
||||
<p>Masukkan informasi yang diperlukan untuk membuat klasifikasi.</p>
|
||||
</div>
|
||||
</div>
|
||||
<form action="{{route('dashboard.classifications.store')}}" method="post" id="myForm">
|
||||
@csrf
|
||||
<div class="row g-4">
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="name">Nama Klasifikasi<span class="required-input">*</span></label>
|
||||
<label class="form-label" for="name">Nama<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('name') border-danger @enderror" id="name" name="name" placeholder="Masukan nama klasifikasi" value="{{old('name')}}">
|
||||
<input type="text" class="form-control" id="name" name="name" placeholder="Contoh: Pendidikan, Kesehatan, Konflik" value="{{old('name')}}">
|
||||
</div>
|
||||
@error('name')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@ -31,10 +34,14 @@
|
||||
<label class="form-label">Status<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<select class="form-select js-select2" name="status">
|
||||
<option value="null" selected disabled>Pilih Status</option>
|
||||
<option value="1" {{old('status') == '1' ? 'selected' : ''}}>Aktif</option>
|
||||
<option value="0" {{old('status') == '0' ? 'selected' : ''}}>Tidak Aktif</option>
|
||||
</select>
|
||||
</div>
|
||||
@error('status')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
@ -44,6 +51,9 @@
|
||||
<textarea class="tinymce-basic form-control" name="description">{!!old('description')!!}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
@error('description')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<hr>
|
||||
|
||||
@ -10,7 +10,10 @@
|
||||
<div class="card card-bordered card-preview">
|
||||
<div class="card-inner">
|
||||
<div class="card-head">
|
||||
<h5 class="card-title">{{$title}}</h5>
|
||||
<div class="nk-block-head">
|
||||
<h5 class="title">Ubah Klasifikasi</h5>
|
||||
<p>Perbarui informasi klasifikasi ini.</p>
|
||||
</div>
|
||||
</div>
|
||||
<form action="{{route('dashboard.classifications.update', ['id' => encrypt_id($classification->id)])}}" method="post" id="myForm">
|
||||
@csrf
|
||||
@ -18,9 +21,9 @@
|
||||
<div class="row g-4">
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="name">Nama Klasifikasi<span class="required-input">*</span></label>
|
||||
<label class="form-label" for="name">Nama<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('name') border-danger @enderror" id="name" name="name" placeholder="Masukan nama klasifikasi" value="{{ $classification->name}}">
|
||||
<input type="text" class="form-control" id="name" name="name" placeholder="Contoh: Pendidikan, Kesehatan, Konflik" value="{{ $classification->name}}">
|
||||
</div>
|
||||
@error('name')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@ -36,6 +39,9 @@
|
||||
<option value="0" {{$classification->status == '0' ? 'selected' : ''}}>Tidak Aktif</option>
|
||||
</select>
|
||||
</div>
|
||||
@error('status')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
@ -44,6 +50,9 @@
|
||||
<div class="form-control-wrap">
|
||||
<textarea class="tinymce-basic form-control" name="description">{!!$classification->description!!}</textarea>
|
||||
</div>
|
||||
@error('description')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
|
||||
@ -34,8 +34,8 @@
|
||||
<tr>
|
||||
<th>No</th>
|
||||
<th>Nama</th>
|
||||
<th>Sub Klasifikasi</th>
|
||||
<th>Isu</th>
|
||||
<th>Jumlah Sub Klasifikasi</th>
|
||||
<th>Jumlah Isu</th>
|
||||
<th>Status</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
|
||||
@ -6,13 +6,40 @@
|
||||
<div class="container-fluid">
|
||||
<div class="nk-content-inner">
|
||||
<div class="nk-content-body">
|
||||
<div class="nk-block-head nk-block-head-sm">
|
||||
<div class="nk-block-between g-3">
|
||||
<div class="nk-block-head-content">
|
||||
<h3 class="nk-block-title page-title">Detail Klasifikasi</h3>
|
||||
<div class="nk-block-des text-soft">
|
||||
<ul class="list-inline">
|
||||
<li>Detail klasifikasi dapat dilihat di sini.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="nk-block-head-content">
|
||||
@if (request()->query('sub_classification') && request()->query('sub_classification') === '1')
|
||||
<a href="{{route('dashboard.sub.classifications.index')}}" class="btn btn-icon btn-outline-light bg-white d-inline-flex d-sm-none"><em class="icon ni ni-arrow-left"></em></a>
|
||||
<a href="{{route('dashboard.sub.classifications.index')}}" class="btn btn-outline-light bg-white d-none d-sm-inline-flex"><em class="icon ni ni-arrow-left"></em><span>Kembali</span></a>
|
||||
@elseif (request()->query('sub_classification') && request()->query('sub_classification') !== 1)
|
||||
<a href="{{route('dashboard.sub.classifications.show', ['id' => request()->query('sub_classification')])}}" class="btn btn-icon btn-outline-light bg-white d-inline-flex d-sm-none"><em class="icon ni ni-arrow-left"></em></a>
|
||||
<a href="{{route('dashboard.sub.classifications.show', ['id' => request()->query('sub_classification')])}}" class="btn btn-outline-light bg-white d-none d-sm-inline-flex"><em class="icon ni ni-arrow-left"></em><span>Kembali</span></a>
|
||||
@else
|
||||
<a href="{{route('dashboard.classifications.index')}}" class="btn btn-icon btn-outline-light bg-white d-inline-flex d-sm-none"><em class="icon ni ni-arrow-left"></em></a>
|
||||
<a href="{{route('dashboard.classifications.index')}}" class="btn btn-outline-light bg-white d-none d-sm-inline-flex"><em class="icon ni ni-arrow-left"></em><span>Kembali</span></a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- .nk-block-head -->
|
||||
<div class="nk-block nk-block-lg">
|
||||
<div class="card">
|
||||
<div class="card-aside-wrap">
|
||||
<div class="card-content">
|
||||
<ul class="nav nav-tabs nav-tabs-mb-icon nav-tabs-card">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-primary" href="#"><em class="icon ni ni-info"></em><span>Detail Klasifikasi</span></a>
|
||||
<a class="nav-link text-primary" href="javascript:void(0);"><em class="icon ni ni-info"></em><span>Detail Informasi</span></a>
|
||||
</li>
|
||||
<li class="nav-item nav-item-trigger d-xxl-none">
|
||||
<a href="{{route('dashboard.classifications.edit', ['id' => encrypt_id($classification->id), 'show' => true])}}" class="btn btn-icon btn-trigger"><em class="icon ni ni-edit"></em></a>
|
||||
</li>
|
||||
</ul><!-- .nav-tabs -->
|
||||
<div class="card-inner">
|
||||
@ -72,6 +99,12 @@
|
||||
<span class="profile-ud-value">{{idn_date($classification->created_at, 'l, d F Y')}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="profile-ud-item">
|
||||
<div class="profile-ud wider">
|
||||
<span class="profile-ud-label">Dibuat Oleh</span>
|
||||
<span class="profile-ud-value">{{$classification->enhancer->name}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- .profile-ud-list -->
|
||||
</div><!-- .nk-block -->
|
||||
{{-- <div class="nk-divider divider md"></div> --}}
|
||||
@ -87,13 +120,6 @@
|
||||
</div><!-- .bq-note-item -->
|
||||
</div><!-- .bq-note -->
|
||||
</div><!-- .nk-block -->
|
||||
<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 -->
|
||||
</div><!-- .card-aside-wrap -->
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
<div class="card-head">
|
||||
<div class="nk-block-head">
|
||||
<h5 class="title">Buat Berita Baru</h5>
|
||||
<p>Masukkan informasi untuk membuat berita/pengumuman baru.</p>
|
||||
<p>Masukkan informasi yang diperlukan untuk membuat berita atau pengumuman.</p>
|
||||
</div>
|
||||
</div>
|
||||
<form action="{{route('dashboard.news.store')}}" method="post" enctype="multipart/form-data" id="myForm">
|
||||
|
||||
@ -10,16 +10,19 @@
|
||||
<div class="card card-bordered card-preview">
|
||||
<div class="card-inner">
|
||||
<div class="card-head">
|
||||
<h5 class="card-title">{{$title}}</h5>
|
||||
<div class="nk-block-head">
|
||||
<h5 class="title">Buat Sub Klasifikasi Baru</h5>
|
||||
<p>Masukkan informasi yang diperlukan untuk membuat sub klasifikasi.</p>
|
||||
</div>
|
||||
</div>
|
||||
<form action="{{route('dashboard.sub.classifications.store')}}" method="post" id="myForm">
|
||||
@csrf
|
||||
<div class="row g-4">
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="name">Nama Sub Klasifikasi<span class="required-input">*</span></label>
|
||||
<label class="form-label" for="name">Nama<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('name') border-danger @enderror" id="name" name="name" placeholder="Masukan nama sub klasifikasi" value="{{old('name')}}">
|
||||
<input type="text" class="form-control" id="name" name="name" placeholder="Contoh: Bisnis, Sosial, Kiriminal" value="{{old('name')}}">
|
||||
</div>
|
||||
@error('name')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@ -36,12 +39,16 @@
|
||||
</select>
|
||||
@else
|
||||
<select class="form-select js-select2" data-search="on" name="classification_id">
|
||||
<option value="select" selected disabled>Pilih Klasifikasi</option>
|
||||
@foreach ($classifications as $classification)
|
||||
<option value="{{$classification->id}}" {{old('classification_id') == $classification->id ? 'selected' : ''}}>{{$classification->name}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@endif
|
||||
</div>
|
||||
@error('classification_id')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
@ -49,10 +56,14 @@
|
||||
<label class="form-label">Status<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<select class="form-select js-select2" name="status">
|
||||
<option value="select" selected disabled>Pilih Status</option>
|
||||
<option value="1" {{old('status') == '1' ? 'selected' : ''}}>Aktif</option>
|
||||
<option value="0" {{old('status') == '0' ? 'selected' : ''}}>Tidak Aktif</option>
|
||||
</select>
|
||||
</div>
|
||||
@error('status')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-12">
|
||||
@ -62,11 +73,14 @@
|
||||
<textarea class="tinymce-basic form-control" name="description">{!!old('description')!!}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
@error('description')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
@enderror
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<hr>
|
||||
<div class="form-group 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>
|
||||
<a href="{{request()->query('classification') ? route('dashboard.classifications.index') : route('dashboard.sub.classifications.index')}}" class="btn btn-white btn-dim btn-outline-light mx-2"><span>Kembali</span></a>
|
||||
<button type="button" class="btn btn-md btn-primary" id="submitButton">Tambahkan</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -10,7 +10,10 @@
|
||||
<div class="card card-bordered card-preview">
|
||||
<div class="card-inner">
|
||||
<div class="card-head">
|
||||
<h5 class="card-title">{{$title}}</h5>
|
||||
<div class="nk-block-head">
|
||||
<h5 class="title">Ubah Sub Klasifikasi</h5>
|
||||
<p>Perbarui informasi sub klasifikasi ini.</p>
|
||||
</div>
|
||||
</div>
|
||||
<form action="{{route('dashboard.sub.classifications.update', ['id' => encrypt_id($subClassification->id)])}}" method="post" id="myForm">
|
||||
@csrf
|
||||
@ -18,9 +21,9 @@
|
||||
<div class="row g-4">
|
||||
<div class="col-lg-6">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="name">Nama Sub Klasifikasi<span class="required-input">*</span></label>
|
||||
<label class="form-label" for="name">Nama<span class="required-input">*</span></label>
|
||||
<div class="form-control-wrap">
|
||||
<input type="text" class="form-control @error('name') border-danger @enderror" id="name" name="name" placeholder="Masukan nama sub klasifikasi" value="{{$subClassification->name}}">
|
||||
<input type="text" class="form-control @error('name') border-danger @enderror" id="name" name="name" placeholder="Contoh: Bisnis, Sosial, Kiriminal" value="{{$subClassification->name}}">
|
||||
</div>
|
||||
@error('name')
|
||||
<span class="validation-error">{{$message}}</span>
|
||||
|
||||
@ -33,9 +33,9 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th>No</th>
|
||||
<th>Klasifikasi</th>
|
||||
<th>Nama</th>
|
||||
<th>Isu</th>
|
||||
<th>Klasifikasi</th>
|
||||
<th>Jumlah Isu</th>
|
||||
<th>Status</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
|
||||
@ -6,13 +6,32 @@
|
||||
<div class="container-fluid">
|
||||
<div class="nk-content-inner">
|
||||
<div class="nk-content-body">
|
||||
<div class="nk-block-head nk-block-head-sm">
|
||||
<div class="nk-block-between g-3">
|
||||
<div class="nk-block-head-content">
|
||||
<h3 class="nk-block-title page-title">Detail Sub Klasifikasi</h3>
|
||||
<div class="nk-block-des text-soft">
|
||||
<ul class="list-inline">
|
||||
<li>Detail sub klasifikasi dapat dilihat di sini.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="nk-block-head-content">
|
||||
<a href="{{route('dashboard.sub.classifications.index')}}" class="btn btn-outline-light bg-white d-none d-sm-inline-flex"><em class="icon ni ni-arrow-left"></em><span>Kembali</span></a>
|
||||
<a href="{{route('dashboard.sub.classifications.index')}}" class="btn btn-icon btn-outline-light bg-white d-inline-flex d-sm-none"><em class="icon ni ni-arrow-left"></em></a>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- .nk-block-head -->
|
||||
<div class="nk-block nk-block-lg">
|
||||
<div class="card">
|
||||
<div class="card-aside-wrap">
|
||||
<div class="card-content">
|
||||
<ul class="nav nav-tabs nav-tabs-mb-icon nav-tabs-card">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-primary" href="#"><em class="icon ni ni-info"></em><span>Detail Sub Klasifikasi</span></a>
|
||||
<a class="nav-link text-primary" href="javascript:void(0);"><em class="icon ni ni-info"></em><span>Detail Informasi</span></a>
|
||||
</li>
|
||||
<li class="nav-item nav-item-trigger d-xxl-none">
|
||||
<a href="{{route('dashboard.sub.classifications.edit', ['id' => encrypt_id($subClassification->id), 'show' => true])}}" class="btn btn-icon btn-trigger"><em class="icon ni ni-edit"></em></a>
|
||||
</li>
|
||||
</ul><!-- .nav-tabs -->
|
||||
<div class="card-inner">
|
||||
@ -24,14 +43,16 @@
|
||||
<div class="profile-ud-list">
|
||||
<div class="profile-ud-item">
|
||||
<div class="profile-ud wider">
|
||||
<span class="profile-ud-label">Nama Sub Klasifikasi</span>
|
||||
<span class="profile-ud-label">Nama</span>
|
||||
<span class="profile-ud-value">{{$subClassification->name}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="profile-ud-item">
|
||||
<div class="profile-ud wider">
|
||||
<span class="profile-ud-label">Nama Klasifikasi</span>
|
||||
<span class="profile-ud-value">{{$subClassification->classification->name}}</span>
|
||||
<span class="profile-ud-label">Klasifikasi</span>
|
||||
<span class="profile-ud-value">
|
||||
<a href="{{route('dashboard.classifications.show', ['id' => encrypt_id($subClassification->classification->id), 'sub_classification' => encrypt_id($subClassification->id)])}}">{{$subClassification->classification->name}}</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="profile-ud-item">
|
||||
@ -66,6 +87,12 @@
|
||||
<span class="profile-ud-value">{{idn_date($subClassification->created_at, 'l, d F Y')}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="profile-ud-item">
|
||||
<div class="profile-ud wider">
|
||||
<span class="profile-ud-label">Dibuat Oleh</span>
|
||||
<span class="profile-ud-value">{{$subClassification->enhancer->name}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- .profile-ud-list -->
|
||||
</div><!-- .nk-block -->
|
||||
{{-- <div class="nk-divider divider md"></div> --}}
|
||||
@ -81,13 +108,6 @@
|
||||
</div><!-- .bq-note-item -->
|
||||
</div><!-- .bq-note -->
|
||||
</div><!-- .nk-block -->
|
||||
<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 -->
|
||||
</div><!-- .card-aside-wrap -->
|
||||
|
||||
@ -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',
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -53,6 +53,82 @@ function deleteItem(url, message) {
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$.ajaxSetup({
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function deleteUndoItem(urlDelete, route, message) {
|
||||
Swal.fire({
|
||||
title: 'Apakah Anda yakin?',
|
||||
text: message,
|
||||
icon: 'warning',
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#3085d6',
|
||||
cancelButtonColor: '#d33',
|
||||
confirmButtonText: 'Ya, hapus!',
|
||||
cancelButtonText: 'Batal',
|
||||
reverseButtons: true
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
$.ajax({
|
||||
type: "DELETE",
|
||||
url: urlDelete,
|
||||
success: function(response) {
|
||||
if (response.status === 'failed') {
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Gagal',
|
||||
text: response.message ?? 'Terjadi kesalahan saat menghapus.',
|
||||
confirmButtonText: 'OK'
|
||||
});
|
||||
} else {
|
||||
Swal.fire({
|
||||
icon: 'success',
|
||||
title: 'Berhasil',
|
||||
text: 'Data berhasil dihapus.',
|
||||
showCancelButton: true,
|
||||
confirmButtonText: 'Undo',
|
||||
cancelButtonText: 'Tutup',
|
||||
}).then((res) => {
|
||||
if (res.isConfirmed) {
|
||||
if (!route || !response.id) {
|
||||
return Swal.fire('Gagal!', 'Tidak dapat mengembalikan data (data tidak lengkap).', 'error');
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: `/dashboard/${route}/${response.id}/restore`,
|
||||
success: function(res) {
|
||||
Swal.fire('Dikembalikan!', res.message ?? 'Data berhasil dikembalikan.', 'success').then(() => location.reload());
|
||||
},
|
||||
error: function() {
|
||||
Swal.fire('Gagal!', 'Tidak dapat mengembalikan data.', 'error');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
location.reload();
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function(xhr) {
|
||||
Swal.fire(
|
||||
'Terjadi kesalahan!',
|
||||
xhr.responseText ?? 'Server tidak merespon.',
|
||||
'error'
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$.ajaxSetup({
|
||||
|
||||
@ -86,7 +86,9 @@
|
||||
Route::post('/', 'store')->name('store');
|
||||
Route::get('/{id}/edit', 'edit')->name('edit');
|
||||
Route::put('/{id}', 'update')->name('update');
|
||||
|
||||
Route::delete('/{id}', 'destroy')->name('destroy');
|
||||
Route::post('/{id}/restore', 'restore')->name('restore');
|
||||
});
|
||||
});
|
||||
|
||||
@ -181,7 +183,6 @@
|
||||
Route::get('/{id}/edit', 'edit')->name('edit');
|
||||
Route::put('/{id}', 'update')->name('update');
|
||||
Route::delete('/{id}', 'destroy')->name('destroy');
|
||||
Route::delete('/{id}', 'destroy')->name('destroy');
|
||||
|
||||
Route::post('/export', 'export')->name('export');
|
||||
Route::post('/filter', 'filter')->name('filter');
|
||||
|
||||
Loading…
Reference in New Issue
Block a user