Viewing File: /home/ubuntu/vedadeals-backend-base/app/Http/Resources/ProductResource.php

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

use Illuminate\Support\Facades\Cache;

use App\Models\{ User };

class ProductResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
     */
    public function toArray($request)
    {

        $user_wishlist_product_ids = $user_cart_product_ids = [];

        if($request->id) {

            $user_wishlist_product_ids = Cache::get("user_wishlists_$request->id") ? : [];

            $user_cart_product_ids = Cache::get("user_carts_$request->id") ? : [];
        }

        $sub_days = strtotime(now()->subDays(15)->format('Y-m-d H:i:s'));

        return [
            'product_id' => $this->id,
            'product_unique_id' => $this->unique_id,
            'name' => $this->name,
            'category_name' => $this->category->name,
            'sub_category_name' => $this->subCategory->name,
            'file' => $this->file,
            'quantity' => $this->quantity,
            'gross_weight' => $this->gross_weight,
            'unit' => $this->unit,
            'gross_weight_formatted' => $this->gross_weight.' '.$this->unit,
            'description_formatted' => $this->description_formatted,
            'total_orders' => $this->order_products_count ? : 0,
            'discount_tag' => $this->discount_price ? formatted_discount($this->discount->discount_type, $this->discount->discount) : '',
            'stock_availablity_formatted' => stock_availablity_formatted($this->quantity),
            'original_price' => round($this->original_price),
            'selling_price' => round($this->price),
            'discount_price' => round($this->discount_price),
            'original_price_formatted' => formatted_amount($this->original_price),
            'selling_price_formatted' => formatted_amount($this->price),
            'discount_price_formatted' => formatted_amount($this->discount_price),
            'stock_status' => $this->stock_status,
            'status' => $this->status,
            'product_inventory' => new ProductInventoryResource($this->whenLoaded('productInventory')),
            'product_files' => ProductFileResource::collection($this->whenLoaded('productFiles')),
            'is_wishlisted' => in_array($this->id, $user_wishlist_product_ids) ? YES : NO,
            'is_carted' => in_array($this->id, $user_cart_product_ids) ? YES : NO,
            'review_stars' => number_format($this->reviews_avg_star, 1),
            'thc_avg' => cannabidiol_avg($this->thc_from ? : 0, $this->thc_to ? : 0),
            'cbd_avg' => cannabidiol_avg($this->cbd_from ? : 0, $this->cbd_to ? : 0),
            'thc_drug_content' => $this->thc_drug_content,
            'thc_formatted' => cannabidiol_formatted($this->thc_from, $this->thc_to, $this->thc_unit, request('decimal') ? : 0),
            'thc_per_formatted' => cannabidiol_per_formatted($this->thc_per_from, $this->thc_per_to, $this->thc_per_unit, request('decimal') ? : 0),
            'cbd_drug_content' => $this->cbd_drug_content,
            'cbd_formatted' => cannabidiol_formatted($this->cbd_from, $this->cbd_to, $this->cbd_unit, request('decimal') ? : 0),
            'cbd_per_formatted' => cannabidiol_per_formatted($this->cbd_per_from, $this->cbd_per_to, $this->cbd_per_unit, request('decimal') ? : 0),
            'is_new' => strtotime($this->created_at) > $sub_days ? YES : NO,
        ];
    }
}
Back to Directory File Manager