diff --git a/app/Console/Commands/UserSeasonScoresRecalculate.php b/app/Console/Commands/UserSeasonScoresRecalculate.php index 7ed541c50b1..4629b5a6be4 100644 --- a/app/Console/Commands/UserSeasonScoresRecalculate.php +++ b/app/Console/Commands/UserSeasonScoresRecalculate.php @@ -50,7 +50,7 @@ protected function recalculate(Season $season): void ->firstOrNew(); $seasonScore->season_id = $season->getKey(); - $seasonScore->calculate(); + $seasonScore->calculate(false); $seasonScore->save(); $bar->advance(); diff --git a/app/Models/UserSeasonScoreAggregate.php b/app/Models/UserSeasonScoreAggregate.php index 5e2739b0733..bf8db9abfcc 100644 --- a/app/Models/UserSeasonScoreAggregate.php +++ b/app/Models/UserSeasonScoreAggregate.php @@ -24,7 +24,7 @@ class UserSeasonScoreAggregate extends Model protected $primaryKey = ':composite'; protected $primaryKeys = ['user_id', 'season_id']; - public function calculate(): void + public function calculate(bool $muteExceptions = true): void { $rooms = $this->season->rooms() ->withPivot('group_indicator') @@ -38,7 +38,12 @@ public function calculate(): void $roomsGrouped = $rooms->groupBy('pivot.group_indicator'); if ($roomsGrouped->count() > count($factors)) { - throw new InvariantException(osu_trans('rankings.seasons.validation.not_enough_factors')); + // don't interrupt Room::completePlay() and throw exception only for recalculation command + if ($muteExceptions) { + return; + } else { + throw new InvariantException(osu_trans('rankings.seasons.validation.not_enough_factors')); + } } foreach ($roomsGrouped as $rooms) {