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