79 lines
4.3 KiB
PHP
79 lines
4.3 KiB
PHP
<?php
|
|
|
|
use Illuminate\Support\Facades\Route;
|
|
use App\Http\Controllers\Api\V1\EventController;
|
|
use App\Http\Controllers\Api\V1\RegistrationController;
|
|
use App\Http\Controllers\Api\V1\GroupController;
|
|
use App\Http\Controllers\Api\V1\PaymentController;
|
|
use App\Http\Controllers\Api\V1\PairingController;
|
|
use App\Http\Controllers\Api\V1\WebhookController;
|
|
use App\Http\Controllers\Api\V1\Admin\AuthController as AdminAuthController;
|
|
use App\Http\Controllers\Api\V1\Admin\DashboardController;
|
|
use App\Http\Controllers\Api\V1\Admin\RegistrationsController as AdminRegistrationsController;
|
|
use App\Http\Controllers\Api\V1\Admin\FlightsController as AdminFlightsController;
|
|
use App\Http\Controllers\Api\V1\Admin\PaymentsController as AdminPaymentsController;
|
|
use App\Http\Controllers\Api\V1\Admin\PairingAdminController;
|
|
use App\Http\Controllers\Api\V1\Admin\EventAdminController;
|
|
use App\Http\Controllers\Api\V1\Admin\ImportController;
|
|
use App\Http\Controllers\Api\V1\Admin\GroupsController as AdminGroupsController;
|
|
|
|
|
|
|
|
Route::prefix('v1')->group(function () {
|
|
Route::get('/events/{event}', [EventController::class, 'show']);
|
|
|
|
Route::post('/events/{event}/registrations', [RegistrationController::class, 'store']);
|
|
|
|
Route::post('/events/{event}/groups', [GroupController::class, 'store']);
|
|
Route::get('/groups/{code}', [GroupController::class, 'show']);
|
|
Route::post('/groups/{code}/join', [GroupController::class, 'join']);
|
|
|
|
Route::post('/registrations/{registration}/pay', [PaymentController::class, 'pay']);
|
|
|
|
Route::post('/pairing/lookup', [PairingController::class, 'lookup']);
|
|
Route::post('/pairing/otp/request', [PairingController::class, 'requestOtp']);
|
|
Route::post('/pairing/otp/verify', [PairingController::class, 'verifyOtp']);
|
|
Route::get('/pairing/me', [PairingController::class, 'me']);
|
|
|
|
Route::post('/webhooks/xendit', [WebhookController::class, 'xendit']);
|
|
|
|
// Admin (Sanctum)
|
|
Route::post('/admin/login', [AdminAuthController::class, 'login']);
|
|
Route::middleware('auth:sanctum')->group(function () {
|
|
Route::post('/admin/logout', [AdminAuthController::class, 'logout']);
|
|
|
|
Route::get('/admin/events/{event}/dashboard', [DashboardController::class, 'show']);
|
|
Route::get('/admin/events/{event}/registrations', [AdminRegistrationsController::class, 'index']);
|
|
Route::get('/admin/events/{event}/groups', [AdminGroupsController::class, 'index']);
|
|
Route::patch('/admin/registrations/{registration}', [AdminRegistrationsController::class, 'update']);
|
|
|
|
Route::get('/admin/events/{event}/flights', [AdminFlightsController::class, 'index']);
|
|
Route::get('/admin/events/{event}/payments', [AdminPaymentsController::class, 'index']);
|
|
|
|
// Flight member ops
|
|
Route::get('/admin/flights/{flight}', [AdminFlightsController::class, 'show']);
|
|
Route::post('/admin/flights/{flight}/assign', [AdminFlightsController::class, 'assign']);
|
|
Route::post('/admin/flight-members/{flightMember}/move', [AdminFlightsController::class, 'moveMember']);
|
|
Route::delete('/admin/flight-members/{flightMember}', [AdminFlightsController::class, 'removeMember']);
|
|
Route::post('/admin/flights/{flight}/lock', [AdminFlightsController::class, 'lock']);
|
|
Route::post('/admin/flights/{flight}/unlock', [AdminFlightsController::class, 'unlock']);
|
|
|
|
// Exports (CSV - Excel friendly)
|
|
Route::get('/admin/events/{event}/exports/start-sheet.csv', [DashboardController::class, 'exportStartSheet']);
|
|
Route::get('/admin/events/{event}/exports/pairing-list.csv', [DashboardController::class, 'exportPairingList']);
|
|
|
|
|
|
Route::post('/admin/events/{event}/pairing/run', [PairingAdminController::class, 'run']);
|
|
|
|
// Finalize/Publish (owner only)
|
|
Route::post('/admin/events/{event}/pairing/finalize', [EventAdminController::class, 'finalize'])->middleware('role:owner');
|
|
Route::post('/admin/events/{event}/pairing/unfinalize', [EventAdminController::class, 'unfinalize'])->middleware('role:owner');
|
|
Route::post('/admin/events/{event}/pairing/publish', [EventAdminController::class, 'publish'])->middleware('role:owner');
|
|
|
|
// Bulk import (committee+owner)
|
|
Route::post('/admin/events/{event}/registrations/import', [ImportController::class, 'importRegistrations'])->middleware('role:owner,committee');
|
|
|
|
});
|
|
|
|
});
|