Advancement working.

This commit is contained in:
Matt Young 2025-06-30 00:38:42 -05:00
parent 24e1c3d95e
commit d0bd3f5092
2 changed files with 20 additions and 9 deletions

View File

@ -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)) {

View File

@ -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');