From 88ef36d8be9934d7f79d71c4058a8f4cb7f98e36 Mon Sep 17 00:00:00 2001 From: Matt Young Date: Mon, 23 Jun 2025 03:25:10 -0500 Subject: [PATCH] Cleanup on doubler model --- app/Models/Doubler.php | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/app/Models/Doubler.php b/app/Models/Doubler.php index 74d1c56..3c8e370 100644 --- a/app/Models/Doubler.php +++ b/app/Models/Doubler.php @@ -62,29 +62,31 @@ class Doubler extends Model ->havingRaw('COUNT(entries.id) > 1') ->with('entries') ->get(); - + Doubler::where('event_id', $eventId)->delete(); foreach ($studentsWithMultipleEntries as $student) { // Get entries that are not declined. If only one, they're our accepted entry. $entryList = collect(); // List of entry ids for th is student in this event $undecidedEntries = collect(); // List of entry ids that are not declined, no-show, or failed prelim $entryList = $student->entriesForEvent($eventId)->pluck('id'); - $undecidedEntries = $student->entriesForEvent($eventId) - ->whereDoesntHave('flags', function ($query) { - $query->whereIn('flag_name', ['declined', 'no-show', 'failed-prelim']); - }) - ->pluck('id'); + $undecidedEntries = $student->entriesForEvent($eventId)->filter(function ($entry) { + return ! $entry->hasFlag('declined') + && ! $entry->hasFlag('no_show') + && ! $entry->hasFlag('failed_prelim'); + })->pluck('id'); + if ($undecidedEntries->count() < 2) { + $acceptedEntryId = $undecidedEntries->first(); + } else { + $acceptedEntryId = null; + } // Create or update the doubler record - static::updateOrCreate( - [ - 'student_id' => $student->id, - 'event_id' => $eventId, - ], - [ - 'entries' => $entryList, - 'accepted_entry' => $acceptedEntryId, - ] - ); + static::create([ + 'student_id' => $student->id, + 'event_id' => $eventId, + 'entries' => $entryList, + 'accepted_entry' => $acceptedEntryId, + ]); + } // remove doubler records for students who no longer have multiple entries