From 8f41af74f9f856ef291e4eafd6f6ef231b349e59 Mon Sep 17 00:00:00 2001 From: Matt Young Date: Thu, 11 Sep 2025 17:59:37 -0500 Subject: [PATCH 1/2] Fix issue where directors could add students down to first grade if no nomination ensembles were defined. --- app/helpers.php | 22 ++++++++++++++++++++++ resources/views/students/index.blade.php | 4 ++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/app/helpers.php b/app/helpers.php index 47d3e56..bb96421 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -2,8 +2,10 @@ use App\Actions\Tabulation\EnterScore; use App\Exceptions\ScoreEntryException; +use App\Models\Audition; use App\Models\AuditLogEntry; use App\Models\Entry; +use App\Models\NominationEnsemble; use App\Models\User; use App\Settings; use Illuminate\Support\Facades\App; @@ -58,3 +60,23 @@ function enterScore(User $user, Entry $entry, array $scores): \App\Models\ScoreS return $scoreEntry($user, $entry, $scores); } + +function minimumStudentGrade() +{ + $minAuditionGrade = Audition::min('minimum_grade'); + if (auditionSetting('nomination_ensemble_rules') == 'disabled' || NominationEnsemble::count() == 0) { + return $minAuditionGrade; + } + + return min(Audition::min('minimum_grade'), NominationEnsemble::min('minimum_grade')); +} + +function maximumStudentGrade() +{ + $maxAuditionGrade = Audition::max('maximum_grade'); + if (auditionSetting('nomination_ensemble_rules') == 'disabled' || NominationEnsemble::count() == 0) { + return $maxAuditionGrade; + } + + return max(Audition::max('maximum_grade'), NominationEnsemble::max('maximum_grade')); +} diff --git a/resources/views/students/index.blade.php b/resources/views/students/index.blade.php index 5b9bd5f..5ddf451 100644 --- a/resources/views/students/index.blade.php +++ b/resources/views/students/index.blade.php @@ -13,8 +13,8 @@ Grade - @php($n = min(Audition::min('minimum_grade'),NominationEnsemble::min('minimum_grade'))) - @php($maxGrade = max(Audition::max('maximum_grade'), NominationEnsemble::max('maximum_grade'))) + @php($n = minimumStudentGrade()) + @php($maxGrade = maximumStudentGrade()) @while($n <= $maxGrade) @php($n++); From 8a2b2256cfbe400873de2c68a31cd56110a11994 Mon Sep 17 00:00:00 2001 From: Matt Young Date: Thu, 2 Oct 2025 21:02:27 -0500 Subject: [PATCH 2/2] Fix issue where entry observer was taking too long during draw. No need to update doublers just to run the draw. --- app/Observers/EntryObserver.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/Observers/EntryObserver.php b/app/Observers/EntryObserver.php index 9133ec6..c40f971 100644 --- a/app/Observers/EntryObserver.php +++ b/app/Observers/EntryObserver.php @@ -6,6 +6,7 @@ use App\Actions\Tabulation\DoublerSync; use App\Models\Audition; use App\Models\Doubler; use App\Models\Entry; +use Illuminate\Support\Facades\Request; use function auditionSetting; @@ -50,9 +51,11 @@ class EntryObserver */ public function updated(Entry $entry): void { - $syncer = app(DoublerSync::class); - // Update doubler table when an entry is updated - $syncer(); + if (Request::route()->getName() !== 'admin.draw.store') { // Don't update doubler table during draw + $syncer = app(DoublerSync::class); + // Update doubler table when an entry is updated + $syncer(); + } // Log entry changes $message = 'Updated Entry #'.$entry->id;