59 lines
2.1 KiB
PHP
59 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Events\AuditionChange;
|
|
use App\Events\RoomJudgeChange;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Audition;
|
|
use App\Models\Room;
|
|
use App\Models\User;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use function redirect;
|
|
|
|
class RoomController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
if(! Auth::user()->is_admin) abort(403);
|
|
#$unassignedAuditions = Audition::with('entries')->where('room_id','=','0')->orderBy('score_order')->get();
|
|
$rooms = Room::with('auditions.entries')->orderBy('name')->get();
|
|
return view('admin.rooms.index', ['rooms' => $rooms]);
|
|
}
|
|
|
|
public function judgingAssignment() // Show form for assigning judges
|
|
{
|
|
$usersWithoutRooms = User::doesntHave('rooms')->orderBy('last_name')->orderBy('first_name')->get();
|
|
$usersWithRooms = User::has('rooms')->orderBy('last_name')->orderBy('first_name')->get();
|
|
$rooms = Room::with(['judges.school','auditions'])->get();
|
|
|
|
return view('admin.rooms.judge_assignments', compact('usersWithoutRooms','usersWithRooms','rooms'));
|
|
}
|
|
|
|
public function updateJudgeAssignment(Request $request, Room $room)
|
|
{
|
|
$validData = $request->validate([
|
|
'judge' => 'exists:users,id'
|
|
]);
|
|
$judge = User::find($validData['judge']);
|
|
|
|
if($request->isMethod('post')) {
|
|
// attach judge on post
|
|
$room->addJudge($judge->id);
|
|
$message = "Assigned " . $judge->full_name() . " to " . $room->name;
|
|
} elseif ($request->isMethod('delete')) {
|
|
// detach judge on delete
|
|
$room->removeJudge($judge->id);
|
|
$message = "Removed " . $judge->full_name() . " from " . $room->name;
|
|
} else {
|
|
return redirect('/admin/rooms/judging_assignments')->with('error', 'Invalid request method.');
|
|
}
|
|
return redirect('/admin/rooms/judging_assignments')->with('success',$message);
|
|
}
|
|
|
|
|
|
// TODO need to be able to add new rooms. Dispatch RoomJudgeChange when we do.
|
|
|
|
}
|