34 lines
1.3 KiB
PHP
34 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\DTOs;
|
|
|
|
use Carbon\Carbon;
|
|
|
|
readonly class FlightStatData
|
|
{
|
|
public function __construct(
|
|
public ?string $aircraft_registration,
|
|
public ?Carbon $estimated_departure_utc,
|
|
public ?Carbon $estimated_arrival_utc,
|
|
public ?string $equipment_iata,
|
|
public ?string $departure_iata,
|
|
public ?string $arrival_iata,
|
|
) {}
|
|
|
|
public static function fromApiResponse(array $flightData): self
|
|
{
|
|
return new self(
|
|
aircraft_registration: $flightData['positional']['flexTrack']['tailNumber'] ?? null,
|
|
estimated_departure_utc: isset($flightData['schedule']['estimatedActualDepartureUTC'])
|
|
? Carbon::parse($flightData['schedule']['estimatedActualDepartureUTC'])
|
|
: null,
|
|
estimated_arrival_utc: isset($flightData['schedule']['estimatedActualArrivalUTC'])
|
|
? Carbon::parse($flightData['schedule']['estimatedActualArrivalUTC'])
|
|
: null,
|
|
equipment_iata: $flightData['additionalFlightInfo']['equipment']['iata'] ?? null,
|
|
departure_iata: $flightData['departureAirport']['iata'] ?? null,
|
|
arrival_iata: $flightData['arrivalAirport']['iata'] ?? null,
|
|
);
|
|
}
|
|
}
|