migrate to gtea from bistbucket
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Restaurant\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class OrderResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*/
|
||||
public function toArray(Request $request): array
|
||||
{
|
||||
return [
|
||||
// ===== Basic Order Info =====
|
||||
'id' => $this->id,
|
||||
'order_number' => $this->order_number,
|
||||
'reference' => $this->reference,
|
||||
'order_type' => $this->order_type,
|
||||
'status' => $this->status,
|
||||
'order_date' => $this->order_date,
|
||||
'order_source' => $this->order_source,
|
||||
'customer_id' => $this->customer_id,
|
||||
'waiter_id' => $this->waiter_id,
|
||||
// 'driver_id' => $this->driver_id,
|
||||
|
||||
// ===== Customer Info =====
|
||||
'customer' => [
|
||||
'id' => $this->customer_id,
|
||||
'name' => $this->customer?->name,
|
||||
'phone' => $this->customer?->phone,
|
||||
'address' => $this->delivery_address,
|
||||
],
|
||||
|
||||
// ===== Table / Staff Info =====
|
||||
'table' => [
|
||||
'id' => $this->table_id,
|
||||
'name' => $this->table?->name,
|
||||
],
|
||||
'waiter' => [
|
||||
'id' => $this->waiter_id,
|
||||
'name' => $this->waiter?->first_name,
|
||||
],
|
||||
// TODO
|
||||
// 'driver' => [
|
||||
// 'id' => $this->driver_id,
|
||||
// 'name' => $this->driver?->first_name,
|
||||
// ],
|
||||
|
||||
// ===== Payment Info =====
|
||||
'payment' => [
|
||||
'method_id' => $this->payment_method_id,
|
||||
'method_name' => $this->paymentMethod?->name,
|
||||
'status' => (bool) $this->payment_status,
|
||||
'reference' => $this->payment_reference,
|
||||
'paid_at' => optional($this->paid_at)->toDateTimeString(),
|
||||
],
|
||||
|
||||
// ===== Financials =====
|
||||
'subtotal' => $this->subtotal,
|
||||
'discount' => $this->discount,
|
||||
'tax' => $this->tax,
|
||||
'service_charge' => $this->service_charge,
|
||||
'tip_amount' => $this->tip_amount,
|
||||
'grand_total' => $this->grand_total,
|
||||
|
||||
// ===== Time Info =====
|
||||
'estimated_ready_time' => optional($this->estimated_ready_time)->toDateTimeString(),
|
||||
'ready_at' => optional($this->ready_at)->toDateTimeString(),
|
||||
'handed_over_at' => optional($this->handed_over_at)->toDateTimeString(),
|
||||
'delivered_at' => optional($this->delivered_at)->toDateTimeString(),
|
||||
|
||||
// ===== Meta / Extra =====
|
||||
'meta' => $this->meta ? json_decode($this->meta, true) : null,
|
||||
'created_at' => optional($this->created_at)->toDateTimeString(),
|
||||
'updated_at' => optional($this->updated_at)->toDateTimeString(),
|
||||
|
||||
// ===== Order Items =====
|
||||
'items' => $this->items->map(function ($item) {
|
||||
return [
|
||||
'id' => $item->id,
|
||||
'food_item_id' => $item->food_item_id,
|
||||
'food_variant_id' => $item->food_variant_id,
|
||||
'food_name' => $item->food?->name,
|
||||
'food_description' => $item->food?->description,
|
||||
'food_image' => $item->food?->image,
|
||||
'quantity' => $item->quantity,
|
||||
'price' => $item->price,
|
||||
'discount' => $item->discount,
|
||||
'tax' => $item->tax,
|
||||
'total' => $item->total,
|
||||
|
||||
// ===== Variant Info =====
|
||||
'variant' => $item->variation ? [
|
||||
'id' => $item->variation->id,
|
||||
'name' => $item->variation->name,
|
||||
'sku' => $item->variation->sku,
|
||||
'unit_id' => $item->variation?->unit_id,
|
||||
'price' => $item->variation->price,
|
||||
'offer_price' => $item->variation->offer_price,
|
||||
'discount' => $item->variation->discount,
|
||||
'offer_start_at' => optional($item->variation->offer_start_at)->toDateTimeString(),
|
||||
'offer_end_at' => optional($item->variation->offer_end_at)->toDateTimeString(),
|
||||
] : null,
|
||||
|
||||
// ===== Addons =====
|
||||
'addons' => $item->addons ? json_decode($item->addons, true) : [],
|
||||
|
||||
// ===== Optional Ingredients (for kitchen / stock use) =====
|
||||
// 'ingredients' => $item->food?->ingredients->map(function ($ing) {
|
||||
// return [
|
||||
// 'id' => $ing->id,
|
||||
// 'name' => $ing->name,
|
||||
// 'quantity_required' => $ing->pivot->quantity_required ?? 0,
|
||||
// 'unit_id' => $ing->unit ?? 'g',
|
||||
// ];
|
||||
// }),
|
||||
|
||||
'status' => $item->status,
|
||||
];
|
||||
}),
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user