Deal with bonus scores when calculating total scores.

This commit is contained in:
Matt Young 2025-06-26 09:32:06 -05:00
parent ee45499e7a
commit 86ec4f4062
4 changed files with 65 additions and 2 deletions

View File

@ -2,6 +2,7 @@
namespace App\Actions\Tabulation; namespace App\Actions\Tabulation;
use App\Models\BonusScore;
use App\Models\Entry; use App\Models\Entry;
use App\Models\EntryTotalScore; use App\Models\EntryTotalScore;
use App\Models\ScoreSheet; use App\Models\ScoreSheet;
@ -75,6 +76,11 @@ class TotalEntryScores
$total_advancement_subscores[] = $runningTotal / $scoreSheets->count(); $total_advancement_subscores[] = $runningTotal / $scoreSheets->count();
} }
$newTotaledScore->advancement_subscore_totals = $total_advancement_subscores; $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(); $newTotaledScore->save();
} }
} }

View File

@ -0,0 +1,52 @@
<?php
namespace App\Observers;
use App\Actions\Tabulation\TotalEntryScores;
use App\Models\BonusScore;
class BonusScoreObserver
{
/**
* Handle the ScoreSheet "created" event.
*/
public function created(BonusScore $bonusScore): void
{
$calculator = app(TotalEntryScores::class);
$calculator($bonusScore->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
{
//
}
}

View File

@ -21,7 +21,8 @@ class ScoreSheetObserver
*/ */
public function updated(ScoreSheet $scoreSheet): void 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 public function deleted(ScoreSheet $scoreSheet): void
{ {
// $calculator = app(TotalEntryScores::class);
$calculator($scoreSheet->entry, true);
} }
/** /**

View File

@ -18,6 +18,7 @@ use App\Http\Controllers\NominationEnsembles\ScobdaNominationEnsembleController;
use App\Http\Controllers\NominationEnsembles\ScobdaNominationEnsembleEntryController; use App\Http\Controllers\NominationEnsembles\ScobdaNominationEnsembleEntryController;
use App\Http\Controllers\NominationEnsembles\ScobdaNominationSeatingController; use App\Http\Controllers\NominationEnsembles\ScobdaNominationSeatingController;
use App\Models\Audition; use App\Models\Audition;
use App\Models\BonusScore;
use App\Models\Entry; use App\Models\Entry;
use App\Models\EntryFlag; use App\Models\EntryFlag;
use App\Models\Room; use App\Models\Room;
@ -30,6 +31,7 @@ use App\Models\Student;
use App\Models\SubscoreDefinition; use App\Models\SubscoreDefinition;
use App\Models\User; use App\Models\User;
use App\Observers\AuditionObserver; use App\Observers\AuditionObserver;
use App\Observers\BonusScoreObserver;
use App\Observers\EntryFlagObserver; use App\Observers\EntryFlagObserver;
use App\Observers\EntryObserver; use App\Observers\EntryObserver;
use App\Observers\RoomObserver; use App\Observers\RoomObserver;
@ -83,6 +85,7 @@ class AppServiceProvider extends ServiceProvider
*/ */
public function boot(): void public function boot(): void
{ {
BonusScore::observe(BonusScoreObserver::class);
Entry::observe(EntryObserver::class); Entry::observe(EntryObserver::class);
Audition::observe(AuditionObserver::class); Audition::observe(AuditionObserver::class);
Room::observe(RoomObserver::class); Room::observe(RoomObserver::class);