File "ProductResourceWithAttributes.php"

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

<?php

namespace App\Http\Resources\Admin;

use App\Models\Category;
use App\Models\OrderItems;
use App\Models\Variation;
use App\Models\Vendor;
use Illuminate\Http\Resources\Json\JsonResource;

class ProductResourceWithAttributes extends JsonResource
{
    public function toArray($request)
    {
        $vendors = $categories = $variations = $combinations = [];
        foreach (Vendor::all() as $vendor){
            $vendors[] = [
                'id' => $vendor->id,
                'name' => $vendor->name,
                'is_selected' => $vendor->id == $this->vendor_id,
            ];
        }

        foreach (Category::all() as $category){
            $categories[] = [
                'id' => $category->id,
                'name' => $category->name,
                'is_selected' => $category->id == $this->category_id,
            ];
        }

        $v_ids = $this->variations->map(function ($item) {
            return $item['variation_id'];
        })->toArray();

        $variations_all = Variation::all();
        foreach ($variations_all as $variation){
            $variations[] = [
                'id' => $variation->id,
                'type' => $variation->type,
                'value' => $variation->value,
                'is_selected' => in_array($variation->id, $v_ids),
            ];
        }

        foreach ($this->prices ?? [] as $price){
            $order_check  = OrderItems::where('price_id', $price->id)->exists();
            $combination_variations = $combination_price_ranges = [];
            foreach ($price->combinations ?? [] as $c_v){
                $combination_variations[] = $c_v->variation_id;
            }

            foreach ($price->priceRanges ?? [] as $p_r){
                $combination_price_ranges[] = [
                    'qty_from' => $p_r->qty_from,
                    'qty_to' => $p_r->qty_to,
                    'price' => $p_r->price,
                ];
            }

            $combinations[] = [
                'price_id' => $price->id,
                'exists_in_order' => $order_check,
                'product_sketch' => $price->product_sketch_media,
                'vendor_price' => $price->vendor_price,
                'supplier_prod_number' => $price->supplier_prod_number,
                'shipping_weight' => $price->shipping_weight,
                'length' => $price->length,
                'width' => $price->width,
                'height' => $price->height,
                'variations' => $combination_variations,
                'price_ranges' => $combination_price_ranges,
            ];
        }

        return [
            'id'                => $this->id,
            'name'              => $this->name,
            'sku'               => $this->sku,
            'slug'              => $this->slug,
            'description'       => $this->description,
            'engraving'         => $this->engraving,
            'color_engraving'   => $this->color_engraving,
            'engraving_fee'     => $this->engraving_fee,
            'has_variations'    => $this->has_variations,
            'status'            => ['status' => $this->status, 'name' => $this->status_name],
            'is_draft'          => $this->is_draft,
            'product_type'      => $this->product_type,
            'featured_image'    => $this->featured_image,
            'created_at'        => $this->created_at->format('m-d-Y'),
            'updated_at'        => $this->updated_at->format('m-d-Y'),
            'vendors'           => $vendors,
            'categories'        => $categories,
            'variations'        => $variations,
            'combinations'      => $combinations,
        ];
    }
}