61 lines
2.0 KiB
PHP
61 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Tabulation;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Audition;
|
|
use App\Models\Entry;
|
|
use App\Services\TabulationService;
|
|
use Illuminate\Http\Request;
|
|
|
|
class AdvancementController extends Controller
|
|
{
|
|
protected TabulationService $tabulationService;
|
|
|
|
public function __construct(TabulationService $tabulationService)
|
|
{
|
|
$this->tabulationService = $tabulationService;
|
|
}
|
|
|
|
public function status()
|
|
{
|
|
$auditions = $this->tabulationService->getAuditionsWithStatus('advancement');
|
|
|
|
return view('tabulation.advancement.status', compact('auditions'));
|
|
}
|
|
|
|
public function ranking(Request $request, Audition $audition)
|
|
{
|
|
$entries = $this->tabulationService->auditionEntries($audition->id, 'advancement');
|
|
|
|
$scoringComplete = $entries->every(function ($entry) {
|
|
return $entry->scoring_complete;
|
|
});
|
|
|
|
return view('tabulation.advancement.ranking', compact('audition', 'entries', 'scoringComplete'));
|
|
}
|
|
|
|
public function setAuditionPassers(Request $request, Audition $audition)
|
|
{
|
|
$passingEntries = $request->input('pass');
|
|
$passingEntries = array_keys($passingEntries);
|
|
$audition->addFlag('advancement_published');
|
|
$entries = Entry::whereIn('id', $passingEntries)->get();
|
|
foreach ($entries as $entry) {
|
|
$entry->addFlag('will_advance');
|
|
}
|
|
|
|
return redirect()->route('advancement.ranking', ['audition' => $audition->id])->with('success', 'Passers have been set successfully');
|
|
}
|
|
|
|
public function clearAuditionPassers(Request $request, Audition $audition)
|
|
{
|
|
$audition->removeFlag('advancement_published');
|
|
foreach ($audition->entries as $entry) {
|
|
$entry->removeFlag('will_advance');
|
|
}
|
|
|
|
return redirect()->route('advancement.ranking', ['audition' => $audition->id])->with('success', 'Passers have been cleared successfully');
|
|
}
|
|
}
|