CRUD Sub Criteria

This commit is contained in:
Ananda Zakia S 2023-12-29 09:46:56 +07:00
parent d3a970cc3e
commit 7fcebe1d95
7 changed files with 337 additions and 12 deletions

View File

@ -1,8 +1,11 @@
<?php <?php
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Models\Criteria;
use App\Models\SubCriteria;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use RealRashid\SweetAlert\Facades\Alert;
use Illuminate\Support\Facades\Validator;
class SubCriteriaController extends Controller class SubCriteriaController extends Controller
{ {
@ -11,7 +14,9 @@ class SubCriteriaController extends Controller
*/ */
public function index() public function index()
{ {
// $subcriterias = Subcriteria::all();
$criterias = Criteria::all();
return view('subkriteria.subkriteria', compact('subcriterias', 'criterias'));
} }
/** /**
@ -27,7 +32,23 @@ public function create()
*/ */
public function store(Request $request) public function store(Request $request)
{ {
// $validator = Validator::make($request->only('criteria_id','nama', 'prioritas'), [
'criteria_id' => 'required',
'nama' => 'required',
'prioritas' => 'required',
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
SubCriteria::create([
'criteria_id' =>$request->criteria_id,
'nama' => $request->nama,
'prioritas' => $request->prioritas,
]);
return redirect()->route('subkriteria.index')->with('success', 'Data Sub Kriteria Berhasil Ditambah!');
} }
/** /**
@ -43,7 +64,8 @@ public function show(string $id)
*/ */
public function edit(string $id) public function edit(string $id)
{ {
// $subkriteria = SubCriteria::findOrFail($id);
return view('subkriteria.edit', compact('subkriteria'));
} }
/** /**
@ -51,7 +73,16 @@ public function edit(string $id)
*/ */
public function update(Request $request, string $id) public function update(Request $request, string $id)
{ {
// $validatedData = $request->validate([
'criteria_id' => 'required',
'nama' => 'required',
'prioritas' => 'required',
]);
$subkriteria = SubCriteria::findOrFail($id);
$subkriteria->update($validatedData);
return redirect()->route('subkriteria.index')->with('success', 'Data SUb Kriteria Berhasil Diperbarui!');
} }
/** /**
@ -59,6 +90,9 @@ public function update(Request $request, string $id)
*/ */
public function destroy(string $id) public function destroy(string $id)
{ {
// $subkriteria = SubCriteria::findorfail($id);
$subkriteria->delete();
return back()->with('info', 'Data Sub Kriteria Berhasil Dihapus!');
} }
} }

View File

@ -11,7 +11,7 @@ class SubCriteria extends Model
public function Criteria() public function Criteria()
{ {
return $this->belongsTo(Criteria::class); return $this->belongsTo(Criteria::class, 'criteria_id', 'id');
} }
public function ExtracuricullarSubCriteria() { public function ExtracuricullarSubCriteria() {

View File

@ -16,7 +16,7 @@ public function up(): void
$table->unsignedBigInteger('criteria_id'); $table->unsignedBigInteger('criteria_id');
$table->string('nama'); $table->string('nama');
$table->string('prioritas'); $table->string('prioritas');
$table->string('bobot'); $table->string('bobot')->nullable();
$table->timestamps(); $table->timestamps();
$table->foreign('criteria_id')->references('id')->on('criterias'); $table->foreign('criteria_id')->references('id')->on('criterias');

View File

@ -27,7 +27,7 @@
</a> </a>
<ul class="submenu"> <ul class="submenu">
<li><a href="{{ route('kriteria.index') }}">Data Kriteria</a></li> <li><a href="{{ route('kriteria.index') }}">Data Kriteria</a></li>
<li><a href="">Data Sub 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 User</a></li>
<li><a href="">Data Ekstrakurikuler</a></li> <li><a href="">Data Ekstrakurikuler</a></li>
</ul> </ul>

View File

@ -0,0 +1,289 @@
@extends('layout.main')
@section('body')
@php
$menu = 'Data Master';
$pageTitle = 'Data Sub Kriteria';
@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 Sub Kriteria</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-subcriteria">
<i class="icon dw dw-add"></i> Tambah Sub Kriteria</button>
<button type="button" class="btn btn-primary mx-2" data-toggle="modal" data-target="">
<i class="icon dw dw-calculator"></i> Hitung Bobot</button>
<form class="form-inline ml-auto" action="{{ route('subkriteria.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>Kriteria</th>
<th>Sub Kriteria</th>
<th>Prioritas</th>
<th>Bobot</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
@forelse ($subcriterias as $subcriteria)
<tr>
<td>{{ $loop->iteration }}</td>
<td>{{ $subcriteria->criteria->nama }}</td>
<td>{{ $subcriteria->nama }}</td>
<td>{{ $subcriteria->prioritas }}</td>
<td>{{ $subcriteria->bobot }}</td>
<td>
<a href="{{ route('subkriteria.edit', $subcriteria->id) }}"
class="badge btn-primary" data-toggle="modal"
data-target="#edit-subcriteria-{{ $subcriteria->id }}" title="Edit">
<i class="icon dw dw-edit2"></i>
</a>
{{-- <form action="{{ route('kriteria.destroy', $criteria->id) }}" method="POST">
@csrf
@method('DELETE')
<button type="submit" class="badge btn-danger" title="Delete">
<i class="icon dw dw-delete-3"></i>
</button>
</form> --}}
<a href="{{ route('subkriteria.destroy', $subcriteria->id) }}"
class="badge btn-danger" data-toggle="modal"
data-target="#delete-subcriteria" 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-subcriteria" 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 Sub Kriteria
</h4>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
</div>
<div class="modal-body">
<form action="{{ route('subkriteria.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">Kriteria</label>
<div class="col-sm-10">
{{-- <input type="text" class="form-control" id="kriteria_nama" name="kriteria_nama" required="">
<div class="invalid-feedback">
Tolong isi Nama Kriteria!
</div> --}}
<select class="form-control" id="criteria_id" name="criteria_id" required>
<option value="" selected disabled>Pilih Kriteria</option>
@foreach ($criterias as $criteria)
<option value="{{ $criteria->id }}">{{ $criteria->nama }}</option>
@endforeach
</select>
<div class="invalid-feedback">
Tolong pilih Kriteria!
</div>
</div>
</div>
@if ($errors->has('criteria_id'))
<div class="alert alert-danger">{{ $errors->first('criteria_id') }}</div>
@endif
<div class="form-group row">
<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="">
<div class="valid-feedback">
Lengkap!
</div>
</div>
</div>
@if ($errors->has('prioritas'))
<div class="alert alert-danger">{{ $errors->first('prioritas') }}</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="">
<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 Edit --}}
@foreach ($subcriterias as $subcriteria)
<div class="modal fade" id="edit-subcriteria-{{ $subcriteria->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 Sub Kriteria
</h4>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
</div>
<div class="modal-body">
<form action="{{ route('subkriteria.update', $subcriteria->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">Kriteria</label>
<div class="col-sm-10">
<select class="form-control" id="criteria_id" name="criteria_id" required>
<option value="" selected disabled>Pilih Kriteria</option>
@foreach ($criterias as $criteria)
<option value="{{ $criteria->id }}" {{ old('criteria_id', $subcriteria->criteria_id) == $criteria->id ? 'selected' : '' }}>
{{ $criteria->nama }}
</option>
@endforeach
</select>
<div class="invalid-feedback">
Tolong pilih Kriteria!
</div>
</div>
</div>
@if ($errors->has('kriteria_nama'))
<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>
<div class="col-sm-10">
<input type="text" class="form-control" id="nama" name="nama"
required="" value="{{ $subcriteria->nama }}">
<div class="invalid-feedback">
Tolong isi Nama Sub 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="{{ $subcriteria->prioritas }}">
<div class="invalid-feedback">
Tolong isi Urutan Prioritas!
</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-subcriteria" 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 Sub Kriteria
</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 sub kriteria ini?</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Batal</button>
<form action="{{ route('subkriteria.destroy', $subcriteria->id) }}" method="POST">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger">Hapus</button>
</form>
</div>
</div>
</div>
</div>
@endforeach
@endsection

View File

@ -48,13 +48,12 @@
<div class="modal-dialog modal-dialog-centered" role="document"> <div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-body pd-5"> <div class="modal-body pd-5">
<form action="{{ '/update-profile-picture' }}" method="post" <form action="{{ '/update-profile-picture' }}" method="post" enctype="multipart/form-data">
enctype="multipart/form-data">
@csrf @csrf
<div class="img-container text-center"> <div class="img-container text-center">
@if (Auth::user()->profile_picture) @if (Auth::user()->profile_picture)
<img <img
src="{{ asset('storage/' . Auth::user()->profile_picture) }}" class="img-fluid mx-auto mt-2" style="max-width: 100%; max-height: 200px;"> src="{{ asset('storage/' . Auth::user()->profile_picture) }}" class="img-fluid mx-auto mt-2 rounded-profile-picture" style="max-width: 100%; max-height: 200px;">
@else @else
<img src="{{ asset('vendors/images/user.png') }}" class="img-fluid mx-auto mt-2" style="max-width: 100%; max-height: 200px;"> <img src="{{ asset('vendors/images/user.png') }}" class="img-fluid mx-auto mt-2" style="max-width: 100%; max-height: 200px;">
@endif @endif

View File

@ -6,6 +6,7 @@
use App\Http\Controllers\UserController; use App\Http\Controllers\UserController;
use App\Http\Controllers\SiswaController; use App\Http\Controllers\SiswaController;
use App\Http\Controllers\CriteriaController; use App\Http\Controllers\CriteriaController;
use App\Http\Controllers\SubCriteriaController;
use App\Http\Controllers\WakilKepalaController; use App\Http\Controllers\WakilKepalaController;
/* /*
@ -97,6 +98,8 @@
Route::resource('kriteria', CriteriaController::class); Route::resource('kriteria', CriteriaController::class);
Route::resource('subkriteria', SubCriteriaController::class);
Route::get('/logout', [AuthController::class, 'logout'])->name('logout'); Route::get('/logout', [AuthController::class, 'logout'])->name('logout');
Route::post('/logout', [AuthController::class, 'logout'])->name('logout'); Route::post('/logout', [AuthController::class, 'logout'])->name('logout');