drawService = $drawService; } public function index(Request $request) { $events = Event::with('auditions')->get(); // $drawnAuditionsExist is true if any audition->hasFlag('drawn') is true $drawnAuditionsExist = Audition::whereHas('flags', function ($query) { $query->where('flag_name', 'drawn'); })->exists(); return view('admin.draw.index', compact('events', 'drawnAuditionsExist')); } public function store(RunDrawRequest $request) { $auditions = Audition::with('flags')->findMany(array_keys($request->input('audition', []))); if ($this->drawService->checkCollectionForDrawnAuditions($auditions)) { return to_route('admin.draw.index')->with('error', 'Invalid attempt to draw an audition that has already been drawn'); } $this->drawService->runDrawsOnCollection($auditions); return to_route('admin.draw.index')->with('status', 'Draw completed successfully'); } public function edit(Request $request) { $drawnAuditions = Audition::whereHas('flags', function ($query) { $query->where('flag_name', 'drawn'); })->get(); return view('admin.draw.edit', compact('drawnAuditions')); } }