group( function() { Route::get('/', function () { return Inertia::render('Index'); }); Route::get('/dashboard', function () { return Inertia::render('Dashboard'); })->middleware(['auth', 'verified'])->name('dashboard'); Route::middleware('auth')->group(function () { Route::get('/import/fr24', function () { if (Auth::user()->importedFlights()->exists()) { return redirect()->route('reconcile'); } return Inertia::render('Fr24Import'); })->name('import.fr24'); Route::get('/reconcile', function () { $flight = new FlightImportController()->reconcile(request()); if (!$flight) { return redirect('/'); } return Inertia::render('ReconcileFlight', [ 'flight' => $flight, ]); })->name('reconcile'); Route::get('/airlines/search', function () { $q = request('q', ''); return Airline::orderByDesc('active') ->where(function ($query) use ($q) { $query->where('name', 'ilike', "%{$q}%") ->orWhere('IATA_code', 'ilike', "%{$q}%") ->orWhere('ICAO_code', 'ilike', "%{$q}%"); }) ->limit(15) ->get(['id', 'name', 'IATA_code', 'ICAO_code', 'logo']) ->map(fn($a) => [ 'value' => $a->id, 'title' => "{$a->name} ({$a->IATA_code}/{$a->ICAO_code})", ]) ->values(); })->name('airlines.search'); Route::post('/flights/import', [FlightImportController::class, 'store'])->name('flights.import.store'); Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit'); Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update'); Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy'); }); require __DIR__.'/auth.php'; } ); /** * API Routes */ Route::domain(config('app.api_domain'))->group(function () { Route::get('/', function () { return response()->json(['message' => 'Welcome to the FlightsGoneBy API']); }); Route::get('airlines/logos/tail/{code}', [LogoController::class, 'getLogoByCode']) ->where('code', '[A-Za-z0-9]{2,3}'); Route::get('airlines/logos/tail/id/{id}', [LogoController::class, 'getLogoById']); });