QR_code_generator/app/Transformers/Objects/ObjectTransformer.php

60 lines
2.0 KiB
PHP

<?php
namespace App\Transformers\Objects;
use App\Models\Objects\NirObject;
use App\Services\PermissionsService;
use App\Transformers\Pages\PageTransformer;
use App\Transformers\Users\UserTransformer;
use League\Fractal\Resource\Collection;
use League\Fractal\Resource\Item;
use League\Fractal\Resource\Primitive;
use League\Fractal\TransformerAbstract;
class ObjectTransformer extends TransformerAbstract {
protected array $defaultIncludes = [
];
protected array $availableIncludes = [
'groups', 'type', 'owner', 'pages', 'objects', 'permissions'
];
public function transform(NirObject $model): array {
return [
'id' => $model->uuid,
'name' => $model->name,
'type_title' => $model->type->title ?? null,
'pivot' => ['group' => $model->pivot->group ?? null, 'ord' => $model->pivot->ord ?? null],
'created_at' => $model->created_at ? $model->created_at->toIso8601String() : null,
'updated_at' => $model->updated_at ? $model->updated_at->toIso8601String() : null
];
}
public function includeGroups(NirObject $model): Collection {
return $this->collection($model->properties, new ObjectPropertiesGroupTransformer($model));
}
public function includeType(NirObject $model): ?Item {
return $model->type ? $this->item($model->type, new ObjectTypeTransformer()) : null;
}
public function includeOwner(NirObject $model): ?Item {
return $model->owner ? $this->item($model->owner, new UserTransformer()) : null;
}
public function includePages(NirObject $model): Collection {
return $this->collection($model->pages, new PageTransformer());
}
public function includeObjects(NirObject $model): Collection {
return $this->collection($model->objects, new ObjectTransformer());
}
public function includePermissions(NirObject $model): Primitive {
return $this->primitive((new PermissionsService($model))->get());
}
}