Added API

This commit is contained in:
2026-06-21 12:52:30 +10:00
parent 05ca994253
commit 5850c849d0
32 changed files with 248 additions and 107 deletions
+11
View File
@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Laravel\Sanctum\HasApiTokens;
class Guest extends Model
{
use HasApiTokens;
}
+37
View File
@@ -12,6 +12,8 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Traits\HasAchievements;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Cache;
use Laravel\Sanctum\HasApiTokens;
use Spatie\Permission\Traits\HasRoles;
@@ -96,6 +98,41 @@ class User extends Authenticatable
return $this->flights()->where('departure_date', '>=', now('UTC'));
}
public function flightsWithRelationshipsLoaded(?string $filter = null): Collection
{
$key = "user_flights_{$this->id}";
$json = Cache::remember($key, now()->addDays(30), function () {
return $this->flights()
->with([
'departureAirport.region.country',
'departureAirport.region.continent',
'arrivalAirport.region.country',
'arrivalAirport.region.continent',
'airline.country',
'airline.alliance',
'aircraft',
'seatType',
'flightReason',
'flightClass',
'crewType'
])
->orderBy('departure_date', 'desc')
->get()
->values()
->toJson();
});
$collection = collect(json_decode($json));
$today = now('UTC')->toDateString();
return match ($filter) {
'departed' => $collection->filter(fn($f) => $f->departure_date <= $today)->values(),
'upcoming' => $collection->filter(fn($f) => $f->departure_date > $today)->values(),
default => $collection,
};
}
public function ImportedFlights(): HasMany
{
return $this->hasMany(ImportedFlight::class);