validate([ 'entry_id' => 'required|exists:entries,id', ]); $entry = Entry::with('flags')->withCount('scoreSheets')->find($validData['entry_id']); // If any results are published, get gone if ($entry->audition->hasFlag('seats_published')) { return to_route('entry-flags.noShowSelect')->with('error', 'Cannot enter a no-show or failed-prelim for an entry in an audition where seats are published'); } if ($entry->audition->hasFlag('advancement_published')) { return to_route('entry-flags.noShowSelect')->with('error', 'Cannot enter a no-show or failed-prelim for an entry in an audition where advancement is published'); } if ($entry->hasFlag('no_show')) { $formId = 'no-show-cancellation-form'; $buttonName = 'Remove No Show'; $submitRouteName = 'entry-flags.undoNoShow'; $cardHeading = 'Undo No-Show'; $method = 'DELETE'; } elseif ($entry->hasFlag('failed_prelim')) { $formId = 'no-show-cancellation-form'; $buttonName = 'Remove Failed Prelim'; $submitRouteName = 'entry-flags.undoNoShow'; $cardHeading = 'Undo Failed-Prelim'; $method = 'DELETE'; } else { $formId = 'no-show-confirmation-form'; $buttonName = 'Confirm No Show'; $submitRouteName = 'entry-flags.enterNoShow'; $cardHeading = 'Confirm No-Show'; $method = 'POST'; } $scores = []; if ($entry->score_sheets_count > 0) { $scores = $entry->scoreSheets; $scores->load('judge'); } return view('tabulation.no_show_confirm', compact('entry', 'formId', 'buttonName', 'submitRouteName', 'cardHeading', 'method', 'scores')); } /** * @throws AuditionAdminException */ public function enterNoShow(Entry $entry) { $recorder = app('App\Actions\Tabulation\EnterNoShow'); try { $msg = $recorder($entry, request()->input('noshow-type')); } catch (AuditionAdminException $e) { return to_route('entry-flags.noShowSelect')->with('error', $e->getMessage()); } return to_route('entry-flags.noShowSelect')->with('success', $msg); } public function undoNoShow(Entry $entry) { if ($entry->audition->hasFlag('seats_published')) { return to_route('entry-flags.noShowSelect')->with('error', 'Cannot undo a no-show or failed-prelim for an entry in an audition where seats are published'); } if ($entry->audition->hasFlag('advancement_published')) { return to_route('entry-flags.noShowSelect')->with('error', 'Cannot undo a no-show or failed-prelim for an entry in an audition where advancement is published'); } $entry->removeFlag('no_show'); $entry->removeFlag('failed_prelim'); return to_route('entry-flags.noShowSelect')->with('success', $entry->audition->name.' #'.$entry->draw_number.' (ID: '.$entry->id.') may now be scored.'); } public function undoDecline(Entry $entry) { if ($entry->audition->hasFlag('seats_published')) { return redirect()->back() ->with('error', 'Cannot undo a decline for an entry in an audition where seats are published'); } if ($entry->audition->hasFlag('advancement_published')) { return redirect()->back() ->with('error', 'Cannot undo a no-show or failed-prelim for an entry in an audition where advancement is published'); } $entry->removeFlag('declined'); return redirect()->back()->with('success', 'Decline cleared'); } }