diff --git a/app/Http/Controllers/Judging/PrelimJudgingController.php b/app/Http/Controllers/Judging/PrelimJudgingController.php index ef6ede4..21fd1e0 100644 --- a/app/Http/Controllers/Judging/PrelimJudgingController.php +++ b/app/Http/Controllers/Judging/PrelimJudgingController.php @@ -24,7 +24,8 @@ class PrelimJudgingController extends Controller $prelimScoresheets = PrelimScoreSheet::where('user_id', Auth::id())->get()->keyBy('entry_id'); - return view('judging.prelim_entry_list', compact('prelimDefinition', 'entries', 'subscores', 'published', 'prelimScoresheets')); + return view('judging.prelim_entry_list', + compact('prelimDefinition', 'entries', 'subscores', 'published', 'prelimScoresheets')); } public function prelimScoreEntryForm(Entry $entry) @@ -70,4 +71,33 @@ class PrelimJudgingController extends Controller return redirect()->route('judging.prelimEntryList', $entry->audition->prelimDefinition)->with('success', 'Entered prelim scores for '.$entry->audition->name.' '.$entry->draw_number); } + + public function updatePrelimScoreSheet(Entry $entry, Request $request, EnterPrelimScore $scribe) + { + if (auth()->user()->cannot('judge', $entry->audition->prelimDefinition)) { + return redirect()->route('dashboard')->with('error', 'You are not assigned to judge that prelim audition.'); + } + + // Validate form data + $subscores = $entry->audition->prelimDefinition->scoringGuide->subscores; + $validationChecks = []; + foreach ($subscores as $subscore) { + $validationChecks['score'.'.'.$subscore->id] = 'required|integer|max:'.$subscore->max_score; + } + $validatedData = $request->validate($validationChecks); + + // Get the existing score + $scoreSheet = PrelimScoreSheet::where('user_id', auth()->user()->id)->where('entry_id', $entry->id)->first(); + + if (! $scoreSheet) { + return redirect()->back()->with('error', 'No score sheet exists.'); + } + + // Update the score + $scribe(auth()->user(), $entry, $validatedData['score'], $scoreSheet); + + return redirect()->route('judging.prelimEntryList', $entry->audition->prelimDefinition)->with('success', + 'Updated prelim scores for '.$entry->audition->name.' '.$entry->draw_number); + + } } diff --git a/resources/views/judging/prelim_entry_list.blade.php b/resources/views/judging/prelim_entry_list.blade.php index 6cfaa81..1c308ad 100644 --- a/resources/views/judging/prelim_entry_list.blade.php +++ b/resources/views/judging/prelim_entry_list.blade.php @@ -5,7 +5,8 @@ {{ $prelimDefinition->audition->name }} Prelims @if($published) - Results are published. Scores cannot be changed. + Results are published. Scores cannot be changed. + @endif @@ -13,7 +14,7 @@ Entry @foreach($subscores as $subscore) - + @endforeach Timestamp @@ -23,14 +24,17 @@ {{-- @continue($entry->hasFlag('no_show'))--}} - @if(! $published && ! $entry->hasFlag('no_show')) + @if(! $published && ! $entry->hasFlag('no_show') && $entry->scoreSheets()->count() < 1) @endif {{ $prelimDefinition->audition->name }} {{ $entry->draw_number }} @if($entry->hasFlag('no_show'))

No Show

@endif - @if(! $published && ! $entry->hasFlag('no_show')) + @if($entry->scoreSheets()->count() > 0) +

Has Finals Scores

+ @endif + @if(! $published && ! $entry->hasFlag('no_show') && $entry->scoreSheets()->count() < 1)
@endif
diff --git a/routes/judging.php b/routes/judging.php index 6776fb7..b4b6d78 100644 --- a/routes/judging.php +++ b/routes/judging.php @@ -22,6 +22,7 @@ Route::middleware(['auth', 'verified', CheckIfCanJudge::class])->prefix('judging Route::get('/{prelimDefinition}', 'prelimEntryList')->name('judging.prelimEntryList'); route::get('/enterScore/{entry}', 'prelimScoreEntryForm')->name('judging.prelimScoreEntryForm'); route::post('/enterScore/{entry}', 'savePrelimScoreSheet')->name('judging.savePrelimScoreSheet'); + route::patch('/enterScore/{entry}', 'updatePrelimScoreSheet')->name('judging.savePrelimScoreSheet'); }); // Bonus score judging routes