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,
];
}
}