auditionadmin/app/Http/Controllers/EntryController.php

62 lines
1.9 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Audition;
use App\Models\Entry;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use function abort;
class EntryController extends Controller
{
public function index()
{
$entries = Auth::user()->entries()->with(['student', 'audition'])->get();
$entries = $entries->sortBy(function ($entry) {
return $entry->student->last_name.$entry->student->first_name.$entry->audition->score_order;
});
$auditions = Audition::open()->get();
$students = Auth::user()->students;
$students->load('school');
return view('entries.index', ['entries' => $entries, 'students' => $students, 'auditions' => $auditions]);
}
public function store(Request $request)
{
if ($request->user()->cannot('create', Entry::class)) {
abort(403);
}
$validData = $request->validate([
'student_id' => ['required', 'exists:students,id'],
'audition_id' => ['required', 'exists:auditions,id'],
]);
$validData['for_seating'] = $request->get('for_seating') ? 1 : 0;
$validData['for_advancement'] = $request->get('for_advancement') ? 1 : 0;
$entry = Entry::create([
'student_id' => $validData['student_id'],
'audition_id' => $validData['audition_id'],
'for_seating' => $validData['for_seating'],
'for_advancement' => $validData['for_advancement'],
]);
return redirect('/entries');
}
public function destroy(Request $request, Entry $entry)
{
if ($request->user()->cannot('delete', $entry)) {
abort(403);
}
$entry->delete();
return redirect()->route('entries.index')->with('success', 'The '.$entry->audition->name.'entry for '.$entry->student->full_name().'has been deleted.');
}
}