From 220dbbcd52e631b1bcfa41e75c915726b0a4da3b Mon Sep 17 00:00:00 2001 From: Matt Young Date: Fri, 31 May 2024 23:37:38 -0500 Subject: [PATCH] Cleanup on entries page --- app/Http/Controllers/EntryController.php | 12 ++++++++++ app/Policies/StudentPolicy.php | 3 ++- .../views/components/layout/navbar.blade.php | 5 +++-- resources/views/entries/index.blade.php | 22 +++++++++---------- resources/views/students/index.blade.php | 20 ++++++++--------- routes/web.php | 3 --- 6 files changed, 37 insertions(+), 28 deletions(-) diff --git a/app/Http/Controllers/EntryController.php b/app/Http/Controllers/EntryController.php index cc2c9db..1c1d86f 100644 --- a/app/Http/Controllers/EntryController.php +++ b/app/Http/Controllers/EntryController.php @@ -4,14 +4,18 @@ namespace App\Http\Controllers; use App\Models\Audition; use App\Models\Entry; +use App\Models\School; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +use function abort; +use function sendMessage; class EntryController extends Controller { // TODO authorization policies public function index() { + $entries = Auth::user()->entries()->with(['student','audition'])->get(); $auditions = Audition::all(); $students = Auth::user()->students; @@ -21,6 +25,7 @@ class EntryController extends Controller public function store(Request $request) { + if ($request->user()->cannot('create', Entry::class)) abort(403); // TODO write custom rule to verify the combination of student and audition is unique $request->validate([ 'student_id' => ['required', 'exists:students,id'], @@ -34,4 +39,11 @@ class EntryController extends Controller return redirect('/entries'); } + + public function destroy(Request $request, Entry $entry) + { + $entry->delete(); + sendMessage('The ' . $entry->audition->name . 'entry for ' . $entry->student->full_name(). 'has been deleted.','success'); + return redirect('/entries'); + } } diff --git a/app/Policies/StudentPolicy.php b/app/Policies/StudentPolicy.php index 2e0fcf0..ae8e619 100644 --- a/app/Policies/StudentPolicy.php +++ b/app/Policies/StudentPolicy.php @@ -40,7 +40,7 @@ class StudentPolicy */ public function update(User $user, Student $student): bool { - if (Entry::where('student_id','=',$student->id)->exists()) return false; // Don't allow deletion of a student with entries + if($user->is_admin) return true; return $user->school_id == $student->school_id; } @@ -50,6 +50,7 @@ class StudentPolicy */ public function delete(User $user, Student $student): bool { + if (Entry::where('student_id','=',$student->id)->exists()) return false; // Don't allow deletion of a student with entries return $user->school_id == $student->school_id; } diff --git a/resources/views/components/layout/navbar.blade.php b/resources/views/components/layout/navbar.blade.php index b17e9d7..daac20e 100644 --- a/resources/views/components/layout/navbar.blade.php +++ b/resources/views/components/layout/navbar.blade.php @@ -14,10 +14,11 @@