From e28002a956d547e0d509a1cf997eb1c6b5052591 Mon Sep 17 00:00:00 2001 From: Mateu Hunter Date: Sun, 5 Apr 2026 11:40:23 -0600 Subject: [PATCH] fix: make final4 pick count resilient to game id drift --- lib/Bracket/Model/DBIC.pm | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/lib/Bracket/Model/DBIC.pm b/lib/Bracket/Model/DBIC.pm index 597aea8..b78c0c0 100644 --- a/lib/Bracket/Model/DBIC.pm +++ b/lib/Bracket/Model/DBIC.pm @@ -581,21 +581,26 @@ sub count_final4_picks { my ($self, $player_id) = @_; return 0 if !defined $player_id; my $final4_game_ids = Bracket::Service::BracketStructure->final4_game_ids($self->schema) || []; + my $where = { + 'me.player' => $player_id, + 'game.round' => { '>=' => 5 }, + }; + if (@{$final4_game_ids}) { - return $self->schema->resultset('Pick')->search({ - player => $player_id, - game => { -in => $final4_game_ids }, - })->count; + # Keep structure-derived IDs, but also allow round-derived final4 games + # so this count remains correct when game IDs/topology drift. + $where = { + 'me.player' => $player_id, + -or => [ + 'me.game' => { -in => $final4_game_ids }, + 'game.round' => { '>=' => 5 }, + ], + }; } return $self->schema->resultset('Pick')->search( - { - 'me.player' => $player_id, - 'game.round' => { '>=' => 5 }, - }, - { - join => 'game', - } + $where, + { join => 'game' } )->count; }