From: Daniel Karbach Date: Fri, 21 Nov 2025 16:36:50 +0000 (+0100) Subject: fix group self assignment X-Git-Url: https://git.localhorst.tv/?a=commitdiff_plain;h=102a8e0984e7b3bb655644a645af736d2551a346;p=alttp.git fix group self assignment --- diff --git a/app/Http/Controllers/TournamentController.php b/app/Http/Controllers/TournamentController.php index 2f88af7..d0641e6 100644 --- a/app/Http/Controllers/TournamentController.php +++ b/app/Http/Controllers/TournamentController.php @@ -198,13 +198,13 @@ class TournamentController extends Controller 'round_number' => $pick['number'], 'group' => $pick['group'], ]); - Protocol::groupAssignment($tournament, $user, $picks, $user); } + Protocol::groupAssignment($tournament, $user, $picks, $user); } return GroupAssignment::query() ->whereBelongsTo($tournament) - ->whereBelongsTo($$user) + ->whereBelongsTo($user) ->get() ->toJson(); } diff --git a/app/Models/GroupAssignment.php b/app/Models/GroupAssignment.php index fd12c72..a0fdfa2 100644 --- a/app/Models/GroupAssignment.php +++ b/app/Models/GroupAssignment.php @@ -14,4 +14,15 @@ class GroupAssignment extends Model { return $this->belongsTo(User::class); } + protected $casts = [ + 'user_id' => 'string', + ]; + + protected $fillable = [ + 'group', + 'round_number', + 'tournament_id', + 'user_id', + ]; + } diff --git a/app/Models/Tournament.php b/app/Models/Tournament.php index a317c5c..ed38368 100644 --- a/app/Models/Tournament.php +++ b/app/Models/Tournament.php @@ -70,7 +70,7 @@ class Tournament extends Model { } public function pickGroup($number, User $user) { - $available_rounds = $this->round()->where('number', '=', $number)->get(); + $available_rounds = $this->rounds()->where('number', '=', $number)->get(); $assigned_groups = $this->group_assignments()->where('round_number', '=', $number)->get(); $weights = array(); foreach ($available_rounds as $round) { diff --git a/resources/js/components/protocol/Item.jsx b/resources/js/components/protocol/Item.jsx index eb875df..29bec88 100644 --- a/resources/js/components/protocol/Item.jsx +++ b/resources/js/components/protocol/Item.jsx @@ -31,6 +31,13 @@ const getEntryResultComment = entry => { return entry.details.result.comment; }; +const getEntryDetailsPicks = entry => { + if (!entry?.details?.picks?.length) { + return ''; + } + return entry.details.picks.map(p => `${p.number}${p.group}`).join(', '); +} + const getEntryResultTime = entry => { if (!entry || !entry.details || !entry.details.result) return 'ERROR'; const result = entry.details.result; @@ -50,6 +57,15 @@ const getEntryDescription = (entry, t) => { username: getEntryDetailsUsername(entry), }, ); + case 'group.assign': + return t( + `protocol.description.${entry.type}`, + { + ...entry, + picks: getEntryDetailsPicks(entry), + username: getEntryDetailsUsername(entry), + }, + ); case 'result.comment': { const comment = getEntryResultComment(entry); const number = getEntryRoundNumber(entry); diff --git a/resources/js/helpers/Tournament.js b/resources/js/helpers/Tournament.js index 93657ff..6b77588 100644 --- a/resources/js/helpers/Tournament.js +++ b/resources/js/helpers/Tournament.js @@ -109,8 +109,8 @@ const unique = (value, index, array) => array.indexOf(value) === index; export const missingGroupAssignment = (tournament, user) => { if (!user) return true; - if (!tournament?.group_assignments?.length) return false; if (!tournament.rounds?.length) return false; + if (!tournament?.group_assignments?.length) return true; const gas = tournament.group_assignments; const rns = tournament.rounds.map(r => r.number).filter(unique); for (let i = 0; i < rns.length; ++i) { diff --git a/resources/js/i18n/de.js b/resources/js/i18n/de.js index dfe73e0..1ddeee4 100644 --- a/resources/js/i18n/de.js +++ b/resources/js/i18n/de.js @@ -563,6 +563,9 @@ export default { received: 'Anmeldung von {{username}} erhalten', rejected: 'Anmeldung von {{username}} abgelehnt', }, + group: { + assign: 'Gruppen {{picks}} für {{username}} zugewiesen', + }, result: { comment: 'Ergebnis von Runde {{number}} kommentiert: <1>{{comment}}', report: 'Ergebnis von <1>{{time}} bei Runde {{number}} eingetragen', diff --git a/resources/js/i18n/en.js b/resources/js/i18n/en.js index abdd40e..c3d4268 100644 --- a/resources/js/i18n/en.js +++ b/resources/js/i18n/en.js @@ -563,6 +563,9 @@ export default { received: 'Application from {{username}} received', rejected: 'Application from {{username}} rejected', }, + group: { + assign: 'Assigned groups {{picks}} for {{username}}', + }, result: { comment: 'Result of round {{number}} commented: <1>{{comment}}', report: 'Result of <1>{{time}} reported for round {{number}}',