diff --git a/app/Http/Controllers/ResultsPage.php b/app/Http/Controllers/ResultsPage.php index ba2ddf0..32fcbd3 100644 --- a/app/Http/Controllers/ResultsPage.php +++ b/app/Http/Controllers/ResultsPage.php @@ -8,6 +8,7 @@ use App\Models\Ensemble; use App\Models\Entry; use App\Models\Seat; use App\Services\AuditionService; +use Illuminate\Database\Eloquent\Model; use Illuminate\Http\Request; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\View; @@ -28,6 +29,7 @@ class ResultsPage extends Controller */ public function __invoke(Request $request) { + Model::preventLazyLoading(false); $cacheKey = 'publicResultsPage'; if (Cache::has($cacheKey)) { diff --git a/app/Http/Controllers/Tabulation/AdvancementController.php b/app/Http/Controllers/Tabulation/AdvancementController.php index de0498f..10bbb7c 100644 --- a/app/Http/Controllers/Tabulation/AdvancementController.php +++ b/app/Http/Controllers/Tabulation/AdvancementController.php @@ -6,7 +6,7 @@ use App\Actions\Tabulation\CalculateAuditionScores; use App\Actions\Tabulation\RankAuditionEntries; use App\Http\Controllers\Controller; use App\Models\Audition; -use App\Models\Entry; +use App\Models\EntryFlag; use Illuminate\Http\Request; use Illuminate\Support\Facades\Cache; @@ -81,16 +81,24 @@ class AdvancementController extends Controller public function setAuditionPassers(Request $request, Audition $audition) { $passingEntries = $request->input('pass'); + $audition->addFlag('advancement_published'); if (! is_null($passingEntries)) { - $passingEntries = array_keys($passingEntries); - $entries = Entry::whereIn('id', $passingEntries)->get(); - foreach ($entries as $entry) { - $entry->addFlag('will_advance'); - } + $passEntries = collect(array_keys($passingEntries)); + EntryFlag::insert( + $passEntries + ->map(fn ($entryId) => [ + 'entry_id' => $entryId, + 'flag_name' => 'will_advance', + 'created_at' => now(), + 'updated_at' => now(), + ])->toArray() + ); + } Cache::forget('audition'.$audition->id.'advancement'); Cache::forget('publicResultsPage'); + Cache::forget('rank_advancement_'.$audition->id); return redirect()->route('advancement.ranking', ['audition' => $audition->id])->with('success', 'Passers have been set successfully'); @@ -99,9 +107,10 @@ class AdvancementController extends Controller public function clearAuditionPassers(Request $request, Audition $audition) { $audition->removeFlag('advancement_published'); - foreach ($audition->entries as $entry) { - $entry->removeFlag('will_advance'); - } + $audition->entries + ->filter(fn ($entry) => $entry->hasFlag('will_advance')) + ->each(fn ($entry) => $entry->removeFlag('will_advance')); + Cache::forget('audition'.$audition->id.'advancement'); Cache::forget('publicResultsPage');