CRUD Ekstrakurikuler

This commit is contained in:
Ananda Zakia S 2023-12-29 11:10:17 +07:00
parent 7fcebe1d95
commit 22c69acd5f
10 changed files with 324 additions and 63 deletions

View File

@ -14,7 +14,7 @@ class CriteriaController extends Controller
public function index()
{
$criterias = Criteria::all();
return view('kriteria.index', compact('criterias'));
return view('kriteria.kriteria', compact('criterias'));
}
/**

View File

@ -3,6 +3,8 @@
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Extracuricullar;
use Illuminate\Support\Facades\Validator;
class ExtracurricularController extends Controller
{
@ -11,7 +13,8 @@ class ExtracurricularController extends Controller
*/
public function index()
{
//
$extracuricullars = Extracuricullar ::all();
return view('ekstrakurikuler.ekstrakurikuler', compact('extracuricullars'));
}
/**
@ -27,7 +30,24 @@ public function create()
*/
public function store(Request $request)
{
//
$validator = Validator::make($request->only('nama', 'kategori', 'deskripsi'), [
'nama' => 'required',
'kategori' => 'required',
'deskripsi' => 'required',
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
Extracuricullar::create([
'nama' => $request->nama,
'kategori' => $request->kategori,
'deskripsi' => $request->deskripsi,
]);
return redirect()->route('ekstrakurikuler.index')->with('success', 'Data Ekstrakurikuler Berhasil Ditambah!');
}
/**
@ -43,7 +63,8 @@ public function show(string $id)
*/
public function edit(string $id)
{
//
$ekstrakurikuler = Extracuricullar::findOrFail($id);
return view('ekstrakurikuler.edit', compact('ekstrakurikuler'));
}
/**
@ -51,7 +72,16 @@ public function edit(string $id)
*/
public function update(Request $request, string $id)
{
//
$validatedData = $request->validate([
'nama' => 'required',
'kategori' => 'required',
'deskripsi' => 'required',
]);
$ekstrakurikuler = Extracuricullar::findOrFail($id);
$ekstrakurikuler->update($validatedData);
return redirect()->route('ekstrakurikuler.index')->with('success', 'Data Ekstrakurikuler Berhasil Diperbarui!');
}
/**
@ -59,6 +89,9 @@ public function update(Request $request, string $id)
*/
public function destroy(string $id)
{
//
$ekstrakurikuler = Extracuricullar::findorfail($id);
$ekstrakurikuler->delete();
return back()->with('info', 'Data Ekstrakurikuler Berhasil Dihapus!');
}
}

View File

@ -7,11 +7,17 @@
class Extracuricullar extends Model
{
protected $fillable = ['nama','kategori'];
protected $fillable = ['nama','kategori','deskripsi'];
protected $rules = [
'kategori' => 'in:olahraga, seni',
];
public $timestamps = false;
protected static $rules = ['kategori' => 'Olahraga, Seni'];
public static function getValidCategories()
{
$rule = static::$rules['kategori'];
return explode(', ', $rule);
}
public function ExtracuricullarSubCriteria() {
return $this->hasMany(ExtracuricullarSubKriteria::class);

View File

@ -15,6 +15,7 @@ public function up(): void
$table->id();
$table->string('nama');
$table->string('kategori');
$table->text('deskripsi');
});
}

View File

@ -0,0 +1,267 @@
@extends('layout.main')
@section('body')
@php
$menu = 'Data Master';
$pageTitle = 'Data Ekstrakurikuler';
@endphp
@include('layout.navbar')
@include('layout.sidebar')
{{-- Main Content --}}
<div class="main-container">
<div class="pd-ltr-20 xs-pd-20-10">
<div class="min-height-200px">
<div class="page-header">
<div class="row">
<div class="col-md-6 col-sm-12">
<div class="title">
<h4>{{ $menu }}</h4>
</div>
<nav aria-label="breadcrumb" role="navigation">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{{ route('dashboard.index') }}">Dashboard</a></li>
@if (isset($pageTitle))
<li class="breadcrumb-item active" aria-current="page">{{ $pageTitle }}</li>
@else
<li class="breadcrumb-item active" aria-current="page"></li>
@endif
</ol>
</nav>
</div>
</div>
</div>
<div class="card-box mb-30">
<div class="pd-20">
<h4 class="text-blue h4 mb-0">Data Ekstrakurikuler</h4>
</div>
<div class="card-header d-flex align-items-center">
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary mx-2" data-toggle="modal" data-target="#add-extracuricullar">
<i class="icon dw dw-add"></i> Tambah Ekstrakurikuler</button>
<form class="form-inline ml-auto" action="{{ route('ekstrakurikuler.index') }}" method="GET">
<div class="input-group">
<input type="text" class="form-control" name="search" placeholder="Search">
<div class="input-group-append">
<button class="btn btn-primary" type="submit">
<i class="icon dw dw-search"></i>
</button>
</div>
</div>
</form>
</div>
<div class="pb-10">
<div class="table-responsive">
<table class="data-table table stripe hover nowrap">
<thead>
<tr>
<th>#</th>
<th>Nama Ekstrakurikuler</th>
<th>Kategori</th>
<th>Deskripsi</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
@forelse ($extracuricullars as $extracuricullar)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $extracuricullar->nama }}</td>
<td>{{ $extracuricullar->kategori }}</td>
<td>{{ $extracuricullar->deskripsi }}</td>
<td>
<a href="{{ route('ekstrakurikuler.edit', $extracuricullar->id) }}"
class="badge btn-primary" data-toggle="modal"
data-target="#edit-extracuricullar-{{ $extracuricullar->id }}" title="Edit">
<i class="icon dw dw-edit2"></i>
</a>
<a href="{{ route('ekstrakurikuler.destroy', $extracuricullar->id) }}"
class="badge btn-danger" data-toggle="modal"
data-target="#delete-extracuricullar" title="Delete">
<i class="icon dw dw-delete-3"></i>
</a>
</td>
</tr>
@empty
<tr>
<td colspan="5" class="text-center">Tidak ada data.</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="footer-wrap pd-20 mb-20 card-box">
<strong>Sistem Pendukung Keputusan Pemilihan Ekstrakurikuler Metode SMARTER</strong>
</div>
</div>
</div>
{{-- Modal Add --}}
<div class="modal fade" id="add-extracuricullar" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel"
style="display: none;" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
@if (session('error'))
<div class="alert alert-danger">{{ session('error') }}</div>
@endif
<div class="modal-header">
<h4 class="modal-title" id="myLargeModalLabel">
Tambah Ekstrakurikuler
</h4>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
</div>
<div class="modal-body">
<form action="{{ route('ekstrakurikuler.store') }}" class="needs-validation" novalidate="" method="POST">
@csrf
<div class="card-body">
<div class="form-group row">
<label class="col-sm-2 col-form-label">Nama</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="nama" name="nama" required="">
<div class="invalid-feedback">
Tolong isi Nama Ekstrakurikuler!
</div>
</div>
</div>
@if ($errors->has('nama'))
<div class="alert alert-danger">{{ $errors->first('nama') }}</div>
@endif
<div class="form-group row">
<label class="col-sm-2 col-form-label">Kategori</label>
<div class="col-sm-10">
<select class="form-control" id="kategori" name="kategori" required>
<option value="" selected disabled>Pilih Kategori</option>
@foreach(\App\Models\Extracuricullar::getValidCategories() as $category)
<option value="{{ $category }}">{{ ucfirst($category) }}</option>
@endforeach
</select>
<div class="invalid-feedback">
Tolong pilih Kategori ekstrakurikuler!
</div>
</div>
</div>
@if ($errors->has('kategori'))
<div class="alert alert-danger">{{ $errors->first('kategori') }}</div>
@endif
<div class="form-group row">
<label class="col-sm-2 col-form-label">Deskipsi</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="deskripsi" name="deskripsi"
required="">
<div class="valid-feedback">
Lengkap!
</div>
</div>
</div>
@if ($errors->has('deskripsi'))
<div class="alert alert-danger">{{ $errors->first('deskripsi') }}</div>
@endif
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Batal</button>
<button type="submit" class="btn btn-primary">Simpan</button>
</div>
</form>
</div>
</div>
</div>
</div>
{{-- Modal Edit --}}
@foreach ($extracuricullars as $extracuricullar)
<div class="modal fade" id="edit-extracuricullar-{{ $extracuricullar->id }}" tabindex="-1" role="dialog"
aria-labelledby="myLargeModalLabel" style="display: none;" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myLargeModalLabel">
Edit Kriteria
</h4>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
</div>
<div class="modal-body">
<form action="{{ route('ekstrakurikuler.update', $extracuricullar->id) }}" class="needs-validation"
novalidate="" method="POST">
@csrf
@method('PUT')
<div class="card-body">
<div class="form-group row">
<label class="col-sm-2 col-form-label">Nama</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="nama" name="nama"
required="" value="{{ $extracuricullar->nama }}">
<div class="invalid-feedback">
Tolong isi Nama Ekstrakurikuler!
</div>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label">Kategori</label>
<div class="col-sm-10">
<select class="form-control" id="kategori" name="kategori" required>
<option value="" selected disabled>Pilih Kategori</option>
@foreach(\App\Models\Extracuricullar::getValidCategories() as $category)
<option value="{{ $category }}" {{ old('kategori', $extracuricullar->kategori) == $category ? 'selected' : '' }}>
{{ ucfirst($category) }}
</option>
@endforeach
</select>
</div>
</div>
@if ($errors->has('kategori'))
<div class="alert alert-danger">{{ $errors->first('kategori') }}</div>
@endif
<div class="form-group row">
<label class="col-sm-2 col-form-label">Deskripsi</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="deskripsi" name="deskripsi"
required="" value="{{ $extracuricullar->deskripsi }}">
<div class="valid-feedback">
Lengkap!
</div>
</div>
</div>
@if ($errors->has('deskripsi'))
<div class="alert alert-danger">{{ $errors->first('deskripsi') }}</div>
@endif
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Batal</button>
<button type="submit" class="btn btn-primary">Simpan</button>
</div>
</form>
</div>
</div>
</div>
</div>
<!-- Modal Delete -->
<div class="modal fade" id="delete-extracuricullar" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel"
style="display: none;" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myLargeModalLabel">
Konfirmasi Hapus Data Ekstrakurikuler
</h4>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
</div>
<div class="modal-body">
<p>Apakah Anda yakin ingin menghapus data ekstrakurikuler ini?</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Batal</button>
<form action="{{ route('ekstrakurikuler.destroy', $extracuricullar->id) }}" method="POST">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger">Hapus</button>
</form>
</div>
</div>
</div>
</div>
@endforeach
@endsection

View File

@ -217,56 +217,6 @@ class="badge btn-danger" data-toggle="modal"
</div>
</div>
{{-- <div class="modal fade" id="edit-criteria" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel"
style="display: none;" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myLargeModalLabel">
Edit Kriteria
</h4>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
</div>
<div class="modal-body">
<form action="{{ route('kriteria.update', $criteria->id) }}" class="needs-validation" novalidate="" method="POST">
@csrf
@method('PUT')
<div class="card-body">
<div class="form-group row">
<label class="col-sm-2 col-form-label">Nama</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="nama" name="nama" required="" value="{{ old('nama', $criteria->nama) }}">
<div class="invalid-feedback">
Tolong isi Nama Kriteria!
</div>
</div>
</div>
@if ($errors->has('nama'))
<div class="alert alert-danger">{{ $errors->first('nama') }}</div>
@endif
<div class="form-group row">
<label class="col-sm-2 col-form-label">Prioritas</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="prioritas" name="prioritas" required="" value="{{ old('prioritas', $criteria->prioritas) }}">
<div class="valid-feedback">
Lengkap!
</div>
</div>
</div>
@if ($errors->has('prioritas'))
<div class="alert alert-danger">{{ $errors->first('prioritas') }}</div>
@endif
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Batal</button>
<button type="submit" class="btn btn-primary">Simpan</button>
</div>
</form>
</div>
</div>
</div>
</div> --}}
<!-- Modal Delete -->
<div class="modal fade" id="delete-criteria" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel"
style="display: none;" aria-hidden="true">

View File

@ -23,13 +23,13 @@
</li>
<li class="dropdown">
<a class="dropdown-toggle">
<span class="micon bi bi-textarea-resize"></span><span class="mtext">Master</span>
<span class="micon bi bi-textarea-resize"></span><span class="mtext">Data Master</span>
</a>
<ul class="submenu">
<li><a href="{{ route('ekstrakurikuler.index') }}">Data Ekstrakurikuler</a></li>
<li><a href="{{ route('kriteria.index') }}">Data Kriteria</a></li>
<li><a href="{{ route('subkriteria.index') }}">Data Sub Kriteria</a></li>
<li><a href="">Data User</a></li>
<li><a href="">Data Ekstrakurikuler</a></li>
</ul>
</li>
<li class="dropdown">

View File

@ -224,7 +224,7 @@ class="badge btn-danger" data-toggle="modal"
<div class="alert alert-danger">{{ $errors->first('kriteria_nama') }}</div>
@endif
<div class="form-group row">
<label class="col-sm-2 col-form-label">nama</label>
<label class="col-sm-2 col-form-label">Sub Kriteria</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="nama" name="nama"
required="" value="{{ $subcriteria->nama }}">

View File

View File

@ -1,5 +1,6 @@
<?php
use App\Models\Extracuricullar;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;
@ -8,6 +9,7 @@
use App\Http\Controllers\CriteriaController;
use App\Http\Controllers\SubCriteriaController;
use App\Http\Controllers\WakilKepalaController;
use App\Http\Controllers\ExtracurricularController;
/*
|--------------------------------------------------------------------------
@ -96,6 +98,8 @@
Route::post('/update-password', [UserController::class, 'updatePassword'])->name('update-password');
Route::resource('ekstrakurikuler', ExtracurricularController::class);
Route::resource('kriteria', CriteriaController::class);
Route::resource('subkriteria', SubCriteriaController::class);