Add student achievements module and improve student admin workflows
This commit is contained in:
@@ -209,6 +209,41 @@ class SchoolClassController extends Controller
|
||||
return redirect()->route('classes.index')->with('success', 'Kelas berhasil dihapus.');
|
||||
}
|
||||
|
||||
public function bulkDestroy(Request $request): RedirectResponse
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'class_ids' => ['required', 'array', 'min:1'],
|
||||
'class_ids.*' => ['integer', 'exists:classes,id'],
|
||||
], [
|
||||
'class_ids.required' => 'Pilih minimal satu kelas untuk dihapus.',
|
||||
]);
|
||||
|
||||
$classes = SchoolClass::withCount(['students', 'academicHistories'])
|
||||
->whereIn('id', $validated['class_ids'])
|
||||
->get();
|
||||
|
||||
$blocked = $classes->filter(fn (SchoolClass $class) => $class->students_count > 0 || $class->academic_histories_count > 0);
|
||||
|
||||
if ($blocked->isNotEmpty()) {
|
||||
Alert::error('Tidak bisa dihapus', 'Sebagian kelas masih dipakai oleh siswa aktif atau histori akademik.');
|
||||
|
||||
return redirect()->route('classes.index')->withErrors([
|
||||
'delete' => 'Beberapa kelas tidak bisa dihapus karena masih dipakai oleh data siswa atau histori akademik.',
|
||||
]);
|
||||
}
|
||||
|
||||
$deletedCount = 0;
|
||||
|
||||
foreach ($classes as $class) {
|
||||
$class->delete();
|
||||
$deletedCount++;
|
||||
}
|
||||
|
||||
Alert::success('Berhasil', $deletedCount . ' kelas berhasil dihapus.');
|
||||
|
||||
return redirect()->route('classes.index')->with('success', $deletedCount . ' kelas berhasil dihapus.');
|
||||
}
|
||||
|
||||
protected function nextLevel(?string $level): ?string
|
||||
{
|
||||
return match (strtoupper((string) $level)) {
|
||||
|
||||
Reference in New Issue
Block a user