File "ProductDetailsResource.php"
Full Path: /home/clickysoft/public_html/jmapi5.clickysoft.net/app/Http/Resources/Admin/ProductDetailsResource.php
File size: 2.8 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Http\Resources\Admin;
use App\Models\Category;
use App\Models\Variation;
use App\Models\Vendor;
use Illuminate\Http\Resources\Json\JsonResource;
class ProductDetailsResource extends JsonResource
{
public function toArray($request)
{
$variations = $combinations = [];
$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){
$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,
'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,
'featured_image' => $this->featured_image ? [
'url' => $this->featured_image->url,
'thumbnail' => $this->featured_image->thumbnail,
'preview' => $this->featured_image->preview
] :[],
'variations' => $variations,
'combinations' => $combinations,
'created_at' => $this->created_at->format('m-d-Y'),
'updated_at' => $this->updated_at->format('m-d-Y'),
];
}
}