Update Periode Admin

- Memberikan batasan pada penambahan periode semester awal dan akhir
- Memberikan kondisi agar periode yang sudah memiliki kuesioner tidak bisa dihapus
- Memperbaiki error hapus periode ketika periode tersebut dipilih
This commit is contained in:
DimazzP 2023-11-08 15:29:13 +07:00
parent f1be04c906
commit c2b32429ab
2 changed files with 97 additions and 36 deletions

View File

@ -3,6 +3,7 @@
namespace App\Http\Controllers\AdminBackend; namespace App\Http\Controllers\AdminBackend;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Hasil;
use App\Models\Periode; use App\Models\Periode;
use App\Models\PilihPeriode; use App\Models\PilihPeriode;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@ -75,7 +76,11 @@ public function update(Request $request, $id)
public function destroy($id) public function destroy($id)
{ {
$period = Periode::findOrFail($id); $period = Periode::findOrFail($id);
$period->delete(); $result = Hasil::where('id_periode', $id)->first();
return redirect()->route('adminPeriod.index')->with('success', 'Periode tersebut telah dihapus'); if (empty($result)) {
$period->delete();
return redirect()->route('adminPeriod.index')->with('success', 'Periode tersebut telah dihapus');
}
return redirect()->route('adminPeriod.index')->with('error', 'Gagal, periode tersebut memiliki hasil kuesioner');
} }
} }

View File

@ -1,5 +1,10 @@
@extends('admin_backend/layouts.template') @extends('admin_backend/layouts.template')
@section('content') @section('content')
@php
$thisYear = date("Y");
$lastYear = $thisYear-1;
$nextYear = $thisYear + 1;
@endphp
<main id="main" class="main"> <main id="main" class="main">
<div class="bg-white p-3"> <div class="bg-white p-3">
{{--! start header --}} {{--! start header --}}
@ -52,18 +57,18 @@
<i class="bi bi-pencil"></i> Edit <i class="bi bi-pencil"></i> Edit
</button> </button>
<span class="p-1"></span> <span class="p-1"></span>
<form action="{{ route('adminPeriod.destroy', ['admin_period'=>$period->id]) }}" class="d-inline delete-form" method="POST"> <form action="{{ route('adminPeriod.destroy', ['admin_period'=>$period->id]) }}" data-id="{{ $period->id }}" class="d-inline delete-form" method="POST">
@csrf @csrf
@method('DELETE') @method('DELETE')
<button class="btn btn-outline-danger btn-sm mt-1 mt-sm-0"><i class="bi bi-trash"></i>Hapus</button> <button id="hapus" class="btn btn-outline-danger btn-sm mt-1 mt-sm-0"><i class="bi bi-trash"></i>Hapus</button>
</form> </form>
</td> </td>
<td> <td>
<form action="{{ route('adminSelectPeriod') }}" method="POST" class="edit-periode"> <form action="{{ route('adminSelectPeriod') }}" data-id="{{ $period->id }}" method="POST" class="edit-periode">
@csrf @csrf
<input type="text" class="form-control d-none" name="id_periode" value="{{ $period->id }}"> <input type="text" class="form-control d-none" name="id_periode" value="{{ $period->id }}">
@if ($period->id==$selectPeriod->id_periode) @if ($period->id==$selectPeriod->id_periode)
<button type="submit" class="btn btn-primary btn-sm" disabled><i class="bi bi-check-all bi-lg me-1"></i> Pilih</button> <button type="button" class="btn btn-primary btn-sm"><i class="bi bi-check-all bi-lg me-1"></i> Pilih</button>
@else @else
<button type="submit" class="btn btn-light btn-sm border"><i class="bi bi-check-lg me-1"></i> Pilih</button> <button type="submit" class="btn btn-light btn-sm border"><i class="bi bi-check-lg me-1"></i> Pilih</button>
@endif @endif
@ -95,18 +100,22 @@
<option value="2">2. Genap</option> <option value="2">2. Genap</option>
</select> </select>
</div> </div>
@php
$thisYear = date("Y"); // Mengambil tahun saat ini
$nextYear = $thisYear + 1;
@endphp
<div class="form-group mb-4"> <div class="form-group mb-4">
<label class="col-form-label" for="create-tahun_awal">Tahun awal:</label> <label class="col-form-label" for="create-tahun_awal">Tahun awal:</label>
<input type="number" class="form-control" id="create-tahun_awal" name="tahun_awal" min="2000" max="2050" value="{{ $thisYear }}"> <select class="form-select" name="tahun_awal" id="create-tahun_awal">
<option value="{{ $lastYear }}">{{ $lastYear }}</option>
<option value="{{ $thisYear }}" selected>{{ $thisYear }}</option>
</select>
{{-- <input type="number" class="form-control" id="create-tahun_awal" name="tahun_awal" min="2000" max="2050" value="{{ $thisYear }}"> --}}
<div class="invalid-feedback"><i class="bi bi-exclamation-circle-fill"></i> Tahun tidak valid</div> <div class="invalid-feedback"><i class="bi bi-exclamation-circle-fill"></i> Tahun tidak valid</div>
</div> </div>
<div class="form-group mb-4"> <div class="form-group mb-4">
<label class="col-form-label" for="create-tahun_akhir">Tahun akhir:</label> <label class="col-form-label" for="create-tahun_akhir">Tahun akhir:</label>
<input type="number" class="form-control" id="create-tahun_akhir" name="tahun_akhir" min="2000" max="2050" value="{{ $nextYear }}"> <select class="form-select" id="create-tahun_akhir" name="tahun_akhir">
<option value="{{ $thisYear }}">{{ $thisYear }}</option>
<option value="{{ $nextYear }}" selected>{{ $nextYear }}</option>
</select>
{{-- <input type="number" class="form-control" id="create-tahun_akhir" name="tahun_akhir" min="2000" max="2050" value="{{ $nextYear }}"> --}}
<div class="invalid-feedback"><i class="bi bi-exclamation-circle-fill"></i> Tahun tidak valid</div> <div class="invalid-feedback"><i class="bi bi-exclamation-circle-fill"></i> Tahun tidak valid</div>
</div> </div>
</div> </div>
@ -139,17 +148,21 @@
<option value="2">2. Genap</option> <option value="2">2. Genap</option>
</select> </select>
</div> </div>
@php
$thisYear = date("Y"); // Mengambil tahun saat ini
$nextYear = $thisYear + 1;
@endphp
<div class="form-group mb-4"> <div class="form-group mb-4">
<label class="col-form-label" for="edit-tahun_awal">Tahun awal:</label> <label class="col-form-label" for="edit-tahun_awal">Tahun awal:</label>
{{-- <select class="form-select" id="edit-tahun_awal" name="tahun_awal">
<option value="{{ $lastYear }}">{{ $lastYear }}</option>
<option value="{{ $thisYear }}" selected>{{ $thisYear }}</option>
</select> --}}
<input type="number" class="form-control" id="edit-tahun_awal" name="tahun_awal" min="2000" max="2050"> <input type="number" class="form-control" id="edit-tahun_awal" name="tahun_awal" min="2000" max="2050">
<div class="invalid-feedback"><i class="bi bi-exclamation-circle-fill"></i> Tahun tidak valid</div> <div class="invalid-feedback"><i class="bi bi-exclamation-circle-fill"></i> Tahun tidak valid</div>
</div> </div>
<div class="form-group mb-4"> <div class="form-group mb-4">
<label class="col-form-label" for="edit-tahun_akhir">Tahun akhir:</label> <label class="col-form-label" for="edit-tahun_akhir">Tahun akhir:</label>
{{-- <select class="form-select" id="edit-tahun_akhir" name="tahun_akhir">
<option value="{{ $thisYear }}">{{ $thisYear }}</option>
<option value="{{ $nextYear }}" selected>{{ $nextYear }}</option>
</select> --}}
<input type="number" class="form-control" id="edit-tahun_akhir" name="tahun_akhir" min="2000" max="2050" > <input type="number" class="form-control" id="edit-tahun_akhir" name="tahun_akhir" min="2000" max="2050" >
<div class="invalid-feedback"><i class="bi bi-exclamation-circle-fill"></i> Tahun tidak valid</div> <div class="invalid-feedback"><i class="bi bi-exclamation-circle-fill"></i> Tahun tidak valid</div>
</div> </div>
@ -236,33 +249,55 @@
// hapus // hapus
$('.delete-form').click(function(event){ $('.delete-form').click(function(event){
event.preventDefault(); event.preventDefault();
if($(this).data('id')=={{ $selectPeriod->id_periode }}){
Swal.fire({ Swal.fire({
title: 'Yakin untuk dihapus?', icon: "error",
text: "Kamu tidak akan bisa mengembalikan ini!", title: "Oops...",
icon: 'warning', text: "Periode yang terpilih tidak bisa dihapus!",
showCancelButton: true, confirmButtonColor: '#0d6efd',
confirmButtonColor: '#dc3545', confirmButtonText: 'Tutup',
cancelButtonColor: '#6c757d', });
confirmButtonText: 'Ya, hapus ini!', }
cancelButtonText: 'Batalkan', else{
reverseButtons: true Swal.fire({
}).then((result) => { title: 'Yakin untuk dihapus?',
if (result.isConfirmed) { text: "Kamu tidak akan bisa mengembalikan ini!",
$(this).submit(); icon: 'warning',
} showCancelButton: true,
}) confirmButtonColor: '#dc3545',
}); cancelButtonColor: '#6c757d',
confirmButtonText: 'Ya, hapus ini!',
cancelButtonText: 'Batalkan',
reverseButtons: true
}).then((result) => {
if (result.isConfirmed) {
$(this).submit();
}
})
}
});
// ubah periode terpilih // ubah periode terpilih
$('.edit-periode').click(function(event){ $('.edit-periode').click(function(event){
event.preventDefault(); event.preventDefault();
event.preventDefault();
if($(this).data('id')=={{ $selectPeriod->id_periode }}){
Swal.fire({
icon: "error",
title: "Oops...",
text: "Periode tersebut sudah dipilih!",
confirmButtonColor: '#0d6efd',
confirmButtonText: 'Tutup',
});
}else{
Swal.fire({ Swal.fire({
title: 'Ganti Periode?', title: 'Ganti Periode?',
text: "Periode baru akan dibuka, ini akan membuat user bisa mengisi kuesioner baru!", text: "Periode baru akan dibuka, ini akan membuat user bisa mengisi kuesioner baru!",
icon: 'warning', icon: 'warning',
showCancelButton: true, showCancelButton: true,
confirmButtonColor: '#ffc107', confirmButtonColor: '#0d6efd',
cancelButtonColor: '#6c757d', cancelButtonColor: '#6c757d',
confirmButtonText: 'Ya, ubah periode!', confirmButtonText: 'Ya, ubah periode!',
cancelButtonText: 'Batalkan', cancelButtonText: 'Batalkan',
@ -271,10 +306,31 @@
if (result.isConfirmed) { if (result.isConfirmed) {
$(this).submit(); $(this).submit();
} }
}) });
}); }
});
$(document).ready(function() { $(document).ready(function() {
$("#sidebar-period").removeClass("collapsed"); $("#sidebar-period").removeClass("collapsed");
firstYear($('#create-tahun_awal'), $('#create-tahun_akhir'));
secondYear($('#create-tahun_akhir'), $('#create-tahun_awal'));
firstYear($('#edit-tahun_awal'), $('#edit-tahun_akhir'));
secondYear($('#edit-tahun_akhir'), $('#edit-tahun_awal'));
}); });
// event select year
function firstYear($selectTahunAwal, $selectTahunAkhir) {
$selectTahunAwal.on('change', function() {
const selectedValue = $selectTahunAwal.val();
$selectTahunAkhir.val(parseInt(selectedValue)+1);
});
}
function secondYear($selectTahunAwal, $selectTahunAkhir) {
$selectTahunAwal.on('change', function() {
const selectedValue = $selectTahunAwal.val();
$selectTahunAkhir.val(parseInt(selectedValue)-1);
});
}
</script> </script>
@endsection @endsection