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