<?php

namespace App\Http\Resources;

use App\Enums\Ask;
use App\Libraries\AppLibrary;
use Illuminate\Http\Resources\Json\JsonResource;

class OrderDetailsResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param \Illuminate\Http\Request $request
     * @return array
     */
    public function toArray($request): array
    {
        return [
            'id'                             => $this->id,
            'order_serial_no'                => $this->order_serial_no,
            'token'                          => $this->token,
            "subtotal_currency_price"        => AppLibrary::currencyAmountFormat($this->subtotal),
            "cart_total_currency_price"      => AppLibrary::currencyAmountFormat($this->cart_total),
            "delivery_charge_currency_price" => AppLibrary::currencyAmountFormat($this->delivery_charge),
            "total_currency_price"           => AppLibrary::currencyAmountFormat($this->total),
            "total_tax_currency_price"       => AppLibrary::currencyAmountFormat($this->total_tax),
            'order_type'                     => $this->order_type,
            'order_datetime'                 => AppLibrary::datetime($this->order_datetime),
            'order_date'                     => AppLibrary::date($this->order_datetime),
            'order_time'                     => AppLibrary::time($this->order_datetime),
            'payment_method'                 => $this->payment_method,
            'payment_status'                 => $this->payment_status,
            'status'                         => $this->status,
            'status_name'                    => trans('orderStatus.' . $this->status),
            'reason'                         => $this->reason,
            'user'                           => new UserResource($this->user),
            'order_address'                  => new OrderAddressResource($this->address),
            'delivery_boy'                   => new UserResource($this->deliveryBoy),
            'transaction'                    => new TransactionResource($this->transaction),
            'order_items'                    => OrderItemResource::collection($this->orderItems),
            'meal_types'                     => OrderItemCategoryResource::collection($this->orderItemCategories),
            'number_of_days'                 => $this->number_of_days,
            'start_date'                     => $this->start_date,
            'end_date'                       => $this->end_date,
            'delivery_dates'                 => DeliveryDatesResource::collection($this->deliveryDates),
            'pos_payment_method'             => $this->pos_payment_method,
            'pos_payment_note'               => $this->pos_payment_note,
            'source'                         => $this->source,
            'pos_received_amount'            => $this->pos_received_amount,
            'pos_received_currency_amount'   => AppLibrary::currencyAmountFormat($this->pos_received_amount),
            'cash_back_amount'               => AppLibrary::convertAmountFormat($this->pos_received_amount - $this->total),
            'cash_back_currency_amount'      => AppLibrary::currencyAmountFormat($this->pos_received_amount - $this->total),
        ];
    }
}
