diff --git a/app/Actions/Tabulation/TotalEntryScores.php b/app/Actions/Tabulation/TotalEntryScores.php index 448e650..196d04f 100644 --- a/app/Actions/Tabulation/TotalEntryScores.php +++ b/app/Actions/Tabulation/TotalEntryScores.php @@ -2,6 +2,7 @@ namespace App\Actions\Tabulation; +use App\Models\BonusScore; use App\Models\Entry; use App\Models\EntryTotalScore; use App\Models\ScoreSheet; @@ -75,6 +76,11 @@ class TotalEntryScores $total_advancement_subscores[] = $runningTotal / $scoreSheets->count(); } $newTotaledScore->advancement_subscore_totals = $total_advancement_subscores; + + // pull in bonus scores + $bonusScores = BonusScore::where('entry_id', $entry->id)->sum('score'); + $newTotaledScore->bonus_score = $bonusScores; + $newTotaledScore->save(); } } diff --git a/app/Observers/BonusScoreObserver.php b/app/Observers/BonusScoreObserver.php new file mode 100644 index 0000000..79878fd --- /dev/null +++ b/app/Observers/BonusScoreObserver.php @@ -0,0 +1,52 @@ +entry, true); + } + + /** + * Handle the ScoreSheet "updated" event. + */ + public function updated(BonusScore $bonusScore): void + { + $calculator = app(TotalEntryScores::class); + $calculator($bonusScore->entry, true); + } + + /** + * Handle the ScoreSheet "deleted" event. + */ + public function deleted(BonusScore $bonusScore): void + { + $calculator = app(TotalEntryScores::class); + $calculator($bonusScore->entry, true); + } + + /** + * Handle the ScoreSheet "restored" event. + */ + public function restored(BonusScore $bonusScore): void + { + // + } + + /** + * Handle the ScoreSheet "force deleted" event. + */ + public function forceDeleted(BonusScore $bonusScore): void + { + // + } +} diff --git a/app/Observers/ScoreSheetObserver.php b/app/Observers/ScoreSheetObserver.php index 0b419af..5ade31e 100644 --- a/app/Observers/ScoreSheetObserver.php +++ b/app/Observers/ScoreSheetObserver.php @@ -21,7 +21,8 @@ class ScoreSheetObserver */ public function updated(ScoreSheet $scoreSheet): void { - // + $calculator = app(TotalEntryScores::class); + $calculator($scoreSheet->entry, true); } /** @@ -29,7 +30,8 @@ class ScoreSheetObserver */ public function deleted(ScoreSheet $scoreSheet): void { - // + $calculator = app(TotalEntryScores::class); + $calculator($scoreSheet->entry, true); } /** diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 4d3a795..09e5005 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -18,6 +18,7 @@ use App\Http\Controllers\NominationEnsembles\ScobdaNominationEnsembleController; use App\Http\Controllers\NominationEnsembles\ScobdaNominationEnsembleEntryController; use App\Http\Controllers\NominationEnsembles\ScobdaNominationSeatingController; use App\Models\Audition; +use App\Models\BonusScore; use App\Models\Entry; use App\Models\EntryFlag; use App\Models\Room; @@ -30,6 +31,7 @@ use App\Models\Student; use App\Models\SubscoreDefinition; use App\Models\User; use App\Observers\AuditionObserver; +use App\Observers\BonusScoreObserver; use App\Observers\EntryFlagObserver; use App\Observers\EntryObserver; use App\Observers\RoomObserver; @@ -83,6 +85,7 @@ class AppServiceProvider extends ServiceProvider */ public function boot(): void { + BonusScore::observe(BonusScoreObserver::class); Entry::observe(EntryObserver::class); Audition::observe(AuditionObserver::class); Room::observe(RoomObserver::class);