HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/shop.komma.nl/app/Products/Product/ProductResource.php
<?php

namespace App\Products\Product;

use App\Products\ProductGroup\ProductGroup;
use App\Properties\Resources\Property;
use Illuminate\Http\Resources\Json\Resource;
use Komma\KMS\Documents\Resources\Document as DocumentResource;
use Komma\KMS\Globalization\RegionInfo;
use Komma\KMS\Globalization\RegionInfoInterface;

/**
 * Class ProductResource
 *
 * @see Product
 * @see ProductGroup
 * @see ProductTranslation
 *
 * @mixin Product
 * @package App\Products\Product
 */
class ProductResource extends Resource
{
    /**
     * @var RegionInfo
     */
    private $regionInfo;

    public function __construct($resource)
    {
        $this->regionInfo = app(RegionInfoInterface::class);
        parent::__construct($resource);
    }

    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @see Product
     * @return array
     */
    public function toArray($request)
    {
        return [
            'productableClass' => get_class($this->resource),
            'id' => $this->id,
            'active' => $this->active,
            'currencySymbol' => $this->regionInfo->getCurrencySymbol(),
            'stockKeeping_unit' => $this->stock_keeping_unit,
//            'groups' => $this->whenLoaded('groups', ProductGroupResource::collection($this->groups)), //Dont go back up to prevent infinite loops. Go from product composite to product group, to product instead.
            'translation' => $this->whenLoaded('translation', new ProductTranslationResource($this->translation)),
            'translations' => $this->whenLoaded('translations', ProductTranslationResource::collection($this->translations)),
            'properties' => $this->whenLoaded('properties', Property::collection($this->properties)),
            'imageUrl' => $this->whenLoaded('images', $this->images->where('medium_image_url', '!=', null)->first()->medium_image_url ?? url('/img/placeholders/productable_placeholder.svg')),
            'displayName' => $this->getDisplayName(),
            'sidebarName' => $this->getSidebarName(),
            'price' => $this->price,
            'priceInc' => $this->getPriceInc(),
            'priceEx' => $this->getPriceEx(),
            'vatAmount' => $this->getVatAmount(),
            'priceFormatted' => $this->regionInfo->getNumberFormat()->centsToCurrency($this->price, true, true),
            'priceIncFormatted' => $this->regionInfo->getNumberFormat()->centsToCurrency($this->getPriceInc(), true, true),
            'priceExFormatted' => $this->regionInfo->getNumberFormat()->centsToCurrency($this->getPriceEx(), true, true),
            'vatAmountFormatted' => $this->regionInfo->getNumberFormat()->centsToCurrency($this->getVatAmount(), true, true),
            'images' => DocumentResource::collection($this->images),
            'documents' => DocumentResource::collection($this->documents)
        ];
    }
}