Files
shipping-portal/app/Http/Resources/OrderPackagesResource.php
T
2025-08-15 09:14:43 +08:00

45 lines
1.9 KiB
PHP

<?php
namespace App\Http\Resources;
use App\Classes\ValueObjects\Constants\PackingListType;
use Illuminate\Http\Resources\Json\JsonResource;
class OrderPackagesResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
$origin_warehouse_packages = $this->originWarehousePackages()->get();
$in_transit_packages = $this->inTransitPackages()->get();
$destination_warehouse_packages = $this->destinationWarehousePackages()->get();
$delivered_packages = $this->deliveredPackages()->get();
$received_packages = $this->packingLists()->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST)->whereHas('packages')->get();
return [
'id' => $this->id,
'reference' => $this->reference,
'reference_contract' => (int) $this->type,
'type' => (int) $this->type,
'status' => (int) $this->status,
'parcels' => $this->whenLoaded('packingLists', function() use ($origin_warehouse_packages, $in_transit_packages, $destination_warehouse_packages, $delivered_packages, $received_packages) {
return [
'origin_warehouse_packages' => PackingListForPackagesResource::collection($origin_warehouse_packages),
'in_transit_packages' => PackingListForPackagesResource::collection($in_transit_packages),
'destination_warehouse_packages' => PackingListForPackagesResource::collection($destination_warehouse_packages),
'delivered_packages' => PackingListForPackagesResource::collection($delivered_packages),
'received_packages' => PackingListForPackagesResource::collection($received_packages),
];
}),
'created_at' => $this->created_at->format('d-m-Y')
];
}
}