File: /var/www/html/dashboard.orbiwheels.com/app/Http/Resources/TransporterBookingResource.php
<?php
namespace App\Http\Resources;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class TransporterBookingResource extends JsonResource
{
public function toArray($request)
{
$rides = $this->rides ?? collect([]);
$totalRides = $rides->count();
$uniqueDays = $rides->pluck('ride_date')->unique()->count();
$baseFare = (float) $rides->sum('fare');
$commission = (float) $this->commission_per_km;
$gst = (float) $this->gst_on_commission;
$taxes = $commission + $gst;
$total = (float) $this->total_customer_amount;
$firstRide = $rides->first();
$lastRide = $rides->last();
$customerName = trim(($this->customer->first_name ?? '') . ' ' . ($this->customer->last_name ?? ''));
return [
'booking_id' => $this->id,
'request_id' => $this->rideRequest->id ?? null,
'request_code' => $this->rideRequest
? "ORBI" . str_pad($this->rideRequest->id, 2, '0', STR_PAD_LEFT)
: null,
'customer_name' => $customerName ?: null,
'pickup_location' => $firstRide->pickup_location ?? null,
'drop_location' => $firstRide->drop_location ?? null,
'pickup_time' => $firstRide ? ($firstRide->ride_date . 'T' . $firstRide->pickup_time) : null,
'pickup_time_return' => $lastRide ? ($lastRide->ride_date . 'T' . $lastRide->pickup_time) : null,
'distance' => $firstRide ? ($firstRide->distance_km . ' km') : null,
'ride_type' => $this->ride_type,
'ride_type_name' => $this->ride_type_name ?? null,
'vehicle_type' => $this->vehicle_preferred,
'no_of_passengers' => (int) $this->no_of_passengers,
'days' => $uniqueDays,
'rides' => $totalRides,
'base_fare' => round($baseFare, 2),
'taxes' => round($taxes, 2),
'total_amount' => round($total, 2),
'status' => $this->status,
];
}
}