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/JsonApi/TranslatableResource.php
<?php

namespace App\JsonApi;

use App\Properties\Models\PropertizableInterface;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Resources\Json\Resource;
use Komma\KMS\Core\AbstractTranslatableModel;
use Komma\KMS\Helpers\KommaHelpers;

/**
 * Class TranslatableResource
 *
 * @mixin Model
 * @package App\JsonApi
 */
class TranslatableResource extends Resource
{
    public function __construct($resource)
    {
        if(!is_a($resource,AbstractTranslatableModel::class)) throw new \InvalidArgumentException('The resource must be an instance of '.AbstractTranslatableModel::class);
        parent::__construct($resource);
    }

    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        $data = [
            'id' => (string) $this->id,
            'type' => KommaHelpers::getShortNameFromClass($this->resource, true),
            'attributes' => $this->attributesToArray(),
        ];

        if(is_a($this->resource, PropertizableInterface::class)) {
            $data['relationships']['translations'] = $this->whenLoaded('translations', TranslationResource::collection($this->translations));
            $data['relationships']['translation'] = $this->whenLoaded('translation', new TranslationResource($this->translation));
        }

        return $data;
    }
}