Updated scheduled tasks

This commit is contained in:
2026-07-03 15:42:41 +10:00
parent f422a6e38e
commit 16184d9c83
4 changed files with 31 additions and 8 deletions
@@ -78,6 +78,28 @@ class GetAircraftInfoForArrivedFlights extends Command
$this->applyAndNotify($flight, $data, $airlineCode, $flightNumber);
}
protected function splitFlightNumber(UserFlight $flight): array
{
$raw = strtoupper($flight->flight_number);
$airline = $flight->airline;
// Preferred: anchor on the airline's known codes rather than guessing.
foreach (array_filter([$airline?->iata_code, $airline?->icao_code]) as $code) {
$code = strtoupper($code);
if (str_starts_with($raw, $code) && preg_match('/^\d+$/', substr($raw, strlen($code)))) {
return [$code, substr($raw, strlen($code))];
}
}
// Fallback: regex guess.
// Covers: letter+digit (J2), digit+letter (9K, 4U), and 2-3 letter codes (AA, DAL).
if (preg_match('/^([A-Z]\d|\d[A-Z]|[A-Z]{2,3})(\d+)$/', $raw, $matches)) {
return [$matches[1], $matches[2]];
}
return [null, null];
}
protected function notifyLookupFailed(UserFlight $flight, string $airlineCode, string $flightNumber): void
{
Notification::create([
@@ -13,7 +13,7 @@ class UserApiController extends ApiController
{
public function nextFlight(?User $user): JsonResponse
{
$user = $user ?? auth()->user();
$user = $user?->exists ? $user : auth()->user();
if (!$user->id) {
return response()->json(['message' => 'User not found'], 404);
@@ -48,8 +48,8 @@ class UserApiController extends ApiController
'arrivalTime' => $arrival->format('H:i'),
'arrivalDateUtc' => $flight->arrival_date,
'flightNumber' => $flight->flight_number,
'airlineName' => $flight->airline->name,
'aircraftType' => $flight->aircraft->manufacturer_code . ' ' . $flight->aircraft->model_full_name,
'airlineName' => $flight->airline?->name,
'aircraftType' => $flight->aircraft?->manufacturer_code . ' ' . $flight->aircraft?->model_full_name,
'logoUrl' => $flight->airline?->logo_url ?? '',
]);
}
+6 -3
View File
@@ -64,11 +64,14 @@ class FlightController extends Controller
public function lookup(Request $request)
{
$number = strtoupper(trim($request->query('number', '')));
preg_match('/^([A-Z]{2,3})(\d+)/', $number, $matches);
preg_match(
'/^([A-Z]{3}|[A-Z]{2}|[A-Z]\d|\d[A-Z])(\d+)$/',
$number,
$matches
);
$code = $matches[1] ?? null;
$flightNumber = $matches[2] ?? null;
$isIata = strlen($code) === 2;
$isIata = $code !== null && strlen($code) === 2;
$codeColumn = $isIata ? 'iata_code' : 'icao_code';
$apiAirlineCodes = [];
-2
View File
@@ -20,8 +20,6 @@ Route::domain(config('app.api_domain'))->group(function () {
Route::get('/flights/most-recent', [HomePageController::class ,'mostRecentFlights'])->name('home-page.most-recent-flights');
Route::get('/feed/following', [FeedController::class ,'following'])->name('feed.following');
Route::get('/feed/following-flights', [FeedController::class ,'followingFlights'])->name('feed.following-flights');
});