back()->with('error', $e->getMessage()); } return redirect()->route('seating.audition', [$audition])->with('success', $msg); } public function declineSeat(Audition $audition, Entry $entry) { $decider = app(DoublerDecision::class); try { $decider->decline($entry); } catch (AuditionAdminException $e) { return redirect()->route('seating.audition', ['audition' => $audition->id]) ->with('error', $e->getMessage()); } return redirect()->route('seating.audition', ['audition' => $audition->id])->with('success', $entry->student->full_name().' has declined '.$audition->name); } public function massDecline(Audition $audition) { $decider = app(DoublerDecision::class); $validData = request()->validate([ 'decline-below' => ['required', 'integer', 'min:0'], ]); $ranker = app(RankAuditionEntries::class); // Get scored entries in order try { $scored_entries = $ranker($audition, 'seating'); } catch (AuditionAdminException $e) { return redirect()->route('seating.audition', ['audition' => $audition->id]) ->with('error', $e->getMessage()); } $scored_entries->load(['student.doublers', 'student.school']); foreach ($scored_entries as $entry) { if ($entry->seatingRank < $validData['decline-below']) { continue; } if ($entry->hasFlag('declined')) { continue; } if (! $entry->student->isDoublerInEvent($audition->event_id)) { continue; } if ($entry->student->doublers->where('event_id', $audition->event_id)->first()->accepted_entry) { continue; } try { $decider->decline($entry); } catch (AuditionAdminException $e) { return redirect()->route('seating.audition', ['audition' => $audition->id]) ->with('error', $e->getMessage()); } } Cache::forget('rank_seating_'.$audition->id); return redirect()->route('seating.audition', ['audition' => $audition->id]); } public function acceptSeat(Audition $audition, Entry $entry) { $decider = app(DoublerDecision::class); try { $decider->accept($entry); } catch (AuditionAdminException $e) { return redirect()->route('seating.audition', ['audition' => $audition->id]) ->with('error', $e->getMessage()); } return redirect()->route('seating.audition', ['audition' => $audition->id])->with('success', $entry->student->full_name().' has accepted '.$audition->name); } }