88 lines
3.0 KiB
PHP
88 lines
3.0 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\FlightImportController;
|
|
use App\Http\Controllers\LogoController;
|
|
use App\Http\Controllers\ProfileController;
|
|
use App\Models\Airline;
|
|
use Illuminate\Foundation\Application;
|
|
use Illuminate\Support\Facades\Route;
|
|
use Inertia\Inertia;
|
|
|
|
/**
|
|
* App Routes
|
|
*/
|
|
Route::domain(config('app.domain'))->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']);
|
|
});
|