File "OrderInfoResource.php"

Full Path: /home/clickysoft/public_html/jmapi5.clickysoft.net/app/Http/Resources/User/OrderInfoResource.php
File size: 5.7 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace App\Http\Resources\User;

use App\Models\Status;
use Illuminate\Http\Resources\Json\JsonResource;

class OrderInfoResource extends JsonResource
{
    public function toArray($request)
    {
        $statuses = [];
        $order_items = [];

        $existing_order_statuses = $this->statuses;
        foreach (Status::all() as $status) {
            $st = $existing_order_statuses->where('id', $status->id)->first();
            if ($st){
                $checked = true;
                $notes = $st->pivot->notes;
            }else{
                $checked = false;
                $notes = '';
            }
            $statuses[] = [
                'id' => $status->id,
                'name' => $status->name,
                'color' => $status->color,
                'notes' => $notes,
                'is_selected' => $checked,
            ];
        }

        foreach ($this->items as $item) {
            $variations = $customization_array = [];
            foreach ($item->itemVariations as $variation){
                $variations[] = [
                    'id' => $variation->variation?->id,
                    'type' => $variation->variation?->type,
                    'value' => $variation->variation?->value,
                ];
            }

            foreach ($item->orderItemCustomizations as $customization){
                $customization_array['url'][] = $customization->mediaUrl;
            }

            $order_items[] = [
                'item_id' => $item->id,
                'product_id' => $item->product_id,
                'quantity' => $item->quantity,
                'price' => $item->price,
                'customization' => $customization_array,
                'template' => $item->template_media,
                'image' => $item->imageUrl,
                'variations' => $variations,
                'notes' => $item->notes,
                'approved_consent' => $item->approved_consent ? 'Yes': 'No',
            ];
        }

        $user_addresses = [];
        foreach($this->user?->userAddressBooks ?? []as $address){
            $user_addresses[] = [
                'id' => $address->id,
                'company_name' => $address->company_name,
                'primary_contact_name' => $address->primary_contact_name,
                'primary_contact_email' => $address->primary_contact_email,
                'secondary_contact_name' => $address->secondary_contact_name,
                'secondary_contact_email' => $address->secondary_contact_email,
                'address_line_1' => $address->address_line_1,
                'address_line_2' => $address->address_line_2,
                'city' => $address->city,
                'state' => $address->state,
                'zipcode' => $address->zipcode,
                'phone_number' => $address->phone_number,
                'is_default' => $address->is_default,
                'selected_as_shipping' => $address->id == $this->shipping_address_id,
                'selected_as_billing' => $address->id == $this->billing_address_id,
            ];
        }

        return [
            'id' => $this->id,
            'rush_order' => $this->rush_order,
            'order_number' => $this->order_number,
            'payment_status' => $this->payment_status,
            'payment_date' => $this->formated_payment_date,
            'payment_type' => $this->payment_type,
            'cheque_number' => $this->cheque_number,
            'purchase_order_number' => $this->purchase_order_number ?? 'N/A',
            'purchase_order_copy' => $this->purchase_order_copy_url ?? 'N/A',
            'delivery_date' => $this->delivery_date?->format('m-d-Y'),
            'event_date' => $this->event_date?->format('m-d-Y'),
            'delivery_type' => $this->delivery_type,
            'tracking_number' => $this->tracking_number,
            'description' => $this->description,
            'current_status_id' => $this->current_status_id,
            'shipping_address_id' => $this->shipping_address_id,
            'billing_address_id' => $this->billing_address_id,
            'billing_company_name' => $this->billing_company_name,
            'billing_primary_contact_name' => $this->billing_primary_contact_name,
            'billing_primary_contact_email' => $this->billing_primary_contact_email,
            'billing_secondary_contact_name' => $this->billing_secondary_contact_name,
            'billing_secondary_contact_email' => $this->billing_secondary_contact_email,
            'billing_address_line_1' => $this->billing_address_line_1,
            'billing_address_line_2' => $this->billing_address_line_2,
            'billing_city' => $this->billing_city,
            'billing_state' => $this->billing_state,
            'billing_zipcode' => $this->billing_zipcode,
            'billing_phone_number' => $this->billing_phone_number,
            'shipping_company_name' => $this->shipping_company_name,
            'shipping_primary_contact_name' => $this->shipping_primary_contact_name,
            'shipping_primary_contact_email' => $this->shipping_primary_contact_email,
            'shipping_secondary_contact_name' => $this->shipping_secondary_contact_name,
            'shipping_secondary_contact_email' => $this->shipping_secondary_contact_email,
            'shipping_address_line_1' => $this->shipping_address_line_1,
            'shipping_address_line_2' => $this->shipping_address_line_2,
            'shipping_city' => $this->shipping_city,
            'shipping_state' => $this->shipping_state,
            'shipping_zipcode' => $this->shipping_zipcode,
            'pickup_location_id' => $this->pickup_location_id,
            'products' => $order_items,
            'available_statuses' => $statuses,
            'available_addresses' => $user_addresses,
        ];
    }
}