auditionadmin/app/Http/Controllers/Admin/EntryController.php

70 lines
2.1 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Audition;
use App\Models\Entry;
use App\Models\School;
use App\Models\Student;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class EntryController extends Controller
{
public function index()
{
if(! Auth::user()->is_admin) abort(403);
$entries = Entry::with(['student.school','audition'])->orderBy('created_at','DESC')->paginate(10);
return view('admin.entries.index', ['entries' => $entries] );
}
public function create()
{
if(! Auth::user()->is_admin) abort(403);
$students = Student::with('school')->orderBy('last_name')->orderBy('first_name')->get();
$auditions = Audition::orderBy('name')->get();
return view('admin.entries.create', ['students' => $students, 'auditions' => $auditions]);
}
public function store()
{
if(! Auth::user()->is_admin) abort(403);
request()->validate([
'student_id' => ['required', 'exists:students,id'],
'audition_id' => ['required', 'exists:auditions,id'],
]);
Entry::create([
'student_id' => request('student_id'),
'audition_id' => request('audition_id'),
]);
return redirect('/admin/entries');
}
public function edit(Entry $entry)
{
if(! Auth::user()->is_admin) abort(403);
$students = Student::with('school')->orderBy('last_name')->orderBy('first_name')->get();
$auditions = Audition::orderBy('name')->get();
return view('admin.entries.edit', ['entry' => $entry, 'students' => $students, 'auditions' => $auditions]);
}
public function update(Entry $entry)
{
if(! Auth::user()->is_admin) abort(403);
request()->validate([
'student_id' => ['required', 'exists:students,id'],
'audition_id' => ['required', 'exists:auditions,id'],
]);
$entry->update([
'student_id' => request('student_id'),
'audition_id' => request('audition_id'),
]);
return redirect('/admin/entries');
}
}