Corrected Korea
This commit is contained in:
@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\User;
|
||||
use App\Models\UserFlight;
|
||||
use App\Http\Resources\UserFlightResource;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Inertia\Inertia;
|
||||
|
||||
@@ -15,20 +16,20 @@ class FlightProfileController extends Controller
|
||||
|
||||
$flights = UserFlight::where('user_id', $user->id)
|
||||
->with([
|
||||
'departureAirport',
|
||||
'arrivalAirport',
|
||||
'departureAirport.region.country',
|
||||
'arrivalAirport.region.country',
|
||||
'airline.country',
|
||||
'aircraft',
|
||||
'seatType',
|
||||
'flightReason',
|
||||
'flightClass',
|
||||
])
|
||||
->orderBy('departure_date')
|
||||
->orderBy('departure_date', 'desc')
|
||||
->get();
|
||||
|
||||
return Inertia::render('FlightProfile', [
|
||||
'user' => $user,
|
||||
'flights' => $flights,
|
||||
'flights' => UserFlightResource::collection($flights)->resolve(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ class LogoController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
public function getLogoById(int $id){
|
||||
public function getLogoById($id){
|
||||
$airline = Airline::where('id', $id)
|
||||
->first();
|
||||
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use App\Models\UserFlight;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
/** @mixin UserFlight */
|
||||
class UserFlightResource extends JsonResource
|
||||
{
|
||||
public function toArray($request): array
|
||||
{
|
||||
$departureTz = $this->departureAirport->timezone;
|
||||
$arrivalTz = $this->arrivalAirport->timezone;
|
||||
$duration = $this->departure_date->diffInMinutes($this->arrival_date);
|
||||
$hours = intdiv($duration, 60);
|
||||
$minutes = $duration % 60;
|
||||
$durationDisplay = $hours . 'h ' . str_pad($minutes, 2, '0', STR_PAD_LEFT) . 'm';
|
||||
|
||||
$departureLocal = $this->departure_date->copy()->setTimezone($departureTz);
|
||||
$arrivalLocal = $this->arrival_date?->copy()->setTimezone($arrivalTz);
|
||||
|
||||
$distance = $this->calculateGreatCircleDistance();
|
||||
|
||||
$dayDifference = (int) abs(Carbon::parse($arrivalLocal->toDateString())
|
||||
->diffInDays(Carbon::parse($departureLocal->toDateString())));
|
||||
|
||||
|
||||
return [
|
||||
...$this->resource->toArray(),
|
||||
'departure_date_display' => $departureLocal->format('j M Y'),
|
||||
'departure_time_display' => $departureLocal->format('g:iA'),
|
||||
'arrival_date_display' => $arrivalLocal?->format('j M Y'),
|
||||
'arrival_time_display' => $arrivalLocal?->format('g:iA'),
|
||||
'arrival_day_difference' => $dayDifference,
|
||||
'duration' => $duration,
|
||||
'duration_display' => $durationDisplay,
|
||||
'distance' => $distance,
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user