middleware('auth','verified'); Route::view('/','welcome')->middleware('guest')->name('home'); // Judging Routes Route::middleware(['auth','verified',CheckIfCanJudge::class])->prefix('judging')->controller(JudgingController::class)->group(function() { Route::get('/','index'); Route::get('/audition/{audition}','auditionEntryList'); Route::get('/entry/{entry}','entryScoreSheet'); Route::post('/entry/{entry}','saveScoreSheet'); Route::patch('/entry/{entry}','updateScoreSheet'); }); // Tabulation Routes Route::middleware(['auth','verified',CheckIfCanTab::class])->group(function() { // Score Management Route::prefix('scores/')->controller(\App\Http\Controllers\Tabulation\ScoreController::class)->group(function() { Route::get('/choose_entry','chooseEntry')->name('scores.chooseEntry'); Route::get('/entry','entryScoreSheet')->name('scores.entryScoreSheet'); Route::post('/entry/{entry}','saveEntryScoreSheet')->name('scores.saveEntryScoreSheet'); Route::delete('/{score}',[\App\Http\Controllers\Tabulation\ScoreController::class,'destroyScore'])->name('scores.destroy'); }); // Generic Tabulation Routes Route::prefix('tabulation/')->controller(\App\Http\Controllers\Tabulation\TabulationController::class)->group(function() { Route::get('/status','status'); Route::get('/auditions/{audition}','auditionSeating'); }); }); // Admin Routes Route::middleware(['auth','verified',CheckIfAdmin::class])->prefix('admin/')->group(function() { Route::view('/','admin.dashboard'); Route::post('/auditions/roomUpdate',[\App\Http\Controllers\Admin\AuditionController::class,'roomUpdate']); // Endpoint for JS assigning auditions to rooms Route::post('/scoring/assign_guide_to_audition',[\App\Http\Controllers\Admin\AuditionController::class,'scoringGuideUpdate']); // Endpoint for JS assigning scoring guides to auditions // Admin Ensemble Routes Route::prefix('ensembles')->controller(\App\Http\Controllers\Admin\EnsembleController::class)->group(function() { Route::get('/','index')->name('admin.ensembles.index'); Route::post('/','store')->name('admin.ensembles.store'); Route::post('/updateEnsembleRank','updateEnsembleRank')->name('admin.ensembles.updateEnsembleRank'); }); // Admin Event Routes Route::prefix('events')->controller(\App\Http\Controllers\Admin\EventController::class)->group(function() { Route::get('/','index')->name('admin.events.index'); Route::post('/','store')->name('admin.events.store'); Route::delete('/{event}','destroy')->name('admin.events.destroy'); }); // Admin Rooms Routes Route::prefix('rooms')->controller(\App\Http\Controllers\Admin\RoomController::class)->group(function() { Route::get('/','index'); Route::get('/create','create'); Route::post('/','store'); Route::post('/{room}/edit','edit'); Route::patch('/{room}','update'); Route::delete('/{room}','destroy'); Route::get('/judging_assignments','judgingAssignment'); // Screen to assign judges to rooms Route::match(['post', 'delete'], '/{room}/judge', 'updateJudgeAssignment'); }); // Admin Scoring Guides Route::prefix('scoring')->controller(\App\Http\Controllers\Admin\ScoringGuideController::class)->group(function() { Route::get('/','index'); // Scoring Setup Homepage Route::post('/guides','store'); // Save a new scoring guide Route::get('/guides/{guide}/edit','edit'); // Edit scoring guide Route::patch('/guides/{guide}/edit','update'); // Save changes to audition guide (rename) Route::post('/guides/{guide}/subscore','subscore_store'); // Save a new subscore Route::post('/reorder-display','reorder_display'); Route::post('/reorder-tiebreak','reorder_tiebreak'); }); // Admin Auditions Routes Route::prefix('auditions')->controller(\App\Http\Controllers\Admin\AuditionController::class)->group(function() { Route::get('/','index')->name('adminAuditionIndex'); Route::get('/create','create'); Route::post('/','store'); Route::get('/{audition}/edit','edit'); Route::patch('/{audition}','update'); Route::post('/reorder','reorder'); Route::delete('/{audition}','destroy'); Route::get('/run_draw','prepareDraw'); Route::post('/run_draw','runDraw'); }); // Admin Entries Routes Route::prefix('entries')->controller(\App\Http\Controllers\Admin\EntryController::class)->group(function() { Route::get('/','index'); Route::get('/create','create'); Route::post('/','store'); Route::get('/{entry}/edit','edit'); Route::patch('/{entry}','update'); }); // Admin Student Routes Route::prefix('students')->controller(\App\Http\Controllers\Admin\StudentController::class)->group(function() { Route::get('/','index'); Route::get('/create','create'); Route::post('/','store'); Route::get('/{student}/edit','edit'); Route::patch('/{student}','update'); }); // Admin School Routes Route::prefix('schools')->controller(\App\Http\Controllers\Admin\SchoolController::class)->group(function() { Route::post('/{school}/add_domain','add_domain'); Route::get('/','index'); Route::get('/create','create'); Route::get('/{school}/edit','edit'); Route::patch('/{school}','update'); Route::post('/','store'); Route::delete('/domain/{domain}','destroy_domain'); }); // Admin User Routes Route::prefix('users')->controller(\App\Http\Controllers\Admin\UserController::class)->group(function() { Route::get('/','index'); Route::get('/create','create'); Route::post('/','store'); Route::get('/{user}/edit','edit'); Route::patch('/{user}','update'); Route::delete('/{user}','destroy'); }); }); // Dashboard Related Routes Route::middleware(['auth','verified'])->group(function () { Route::get('/dashboard', [DashboardController::class, 'dashboard'])->name('dashboard'); Route::get('/profile', [DashboardController::class, 'profile']); Route::get('/my_school', [DashboardController::class, 'my_school']); }); // Entry Related Routes Route::middleware(['auth','verified','can:create,App\Models\Entry'])->controller(EntryController::class)->group(function() { Route::get('/entries','index'); Route::get('/entries/create','create'); Route::post('/entries', 'store'); Route::delete('/entries/{entry}', 'destroy'); }); // User Related Routes Route::middleware(['auth','verified'])->controller(UserController::class)->group(function() { Route::patch('/users/{user}/set_school', 'set_school'); Route::patch('/users/{$user}', 'update'); }); // Student Related Routes Route::middleware(['auth','verified','can:create,App\Models\Student'])->controller(StudentController::class)->group(function() { Route::get('/students','index'); Route::post('students', 'store'); Route::get('/students/{student}/edit','edit'); Route::patch('/students/{student}','update'); Route::delete('/students/{student}', 'destroy'); }); // School Related Routes Route::middleware(['auth','verified'])->controller(SchoolController::class)->group(function() { Route::get('/schools/create', 'create'); Route::post('/schools','store'); Route::get('/schools/{school}/edit','edit'); Route::get('/schools/{school}','show'); Route::patch('/schools/{school}','update'); }); // Filter Related Routes Route::prefix('filters')->middleware(['auth','verified'])->controller(FilterController::class)->group(function() { Route::post('/admin_entry_filter','adminEntryFilter'); Route::get('/admin_entry_filter/clear','clearAdminEntryFilter'); }); //Route::get('/my_school', [SchoolController::class, 'my_school'])->middleware('auth','verified'); //Route::get('/schools/create', [SchoolController::class, 'create'])->middleware('auth','verified'); //Route::post('/schools', [SchoolController::class, 'store'])->middleware('auth','verified'); //Route::get('/schools/{school}/edit', [SchoolController::class, 'edit'])->middleware('auth','verified'); //Route::get('/schools/{school}', [SchoolController::class, 'show'])->middleware('auth','verified'); //Route::patch('/schools/{school}', [SchoolController::class, 'update'])->middleware('auth','verified');