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;
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();
}
}

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
{
//
$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);
}
/**

View File

@ -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);