QR_code_generator/app/Transformers/Applications/ApplicationTransformer.php

61 lines
2.2 KiB
PHP

<?php
namespace App\Transformers\Applications;
use App\Models\Applications\Application;
use App\Services\PermissionsService;
use App\Transformers\Companies\CompanyMemberTransformer;
use App\Transformers\Objects\ObjectTransformer;
use App\Transformers\Products\ProductTransformer;
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 ApplicationTransformer extends TransformerAbstract {
protected array $defaultIncludes = [];
protected array $availableIncludes = [
'submitter', 'expert', 'product', 'properties', 'conclusions', 'permissions'
];
public function transform(Application $model): array {
return [
'id' => $model->uuid,
'title' => $model->title,
'status' => $model->parsedStatus,
'number' => $model->number,
'applicant' => $model->applicant,
'email' => $model->email,
'phone' => $model->phone,
'created_at' => $model->created_at ? $model->created_at->toIso8601String() : null,
'updated_at' => $model->updated_at ? $model->updated_at->toIso8601String() : null
];
}
public function includeSubmitter(Application $model): ?Item {
return $model->submitter ? $this->item($model->submitter, new UserTransformer()) : null;
}
public function includeExpert(Application $model): ?Item {
return $model->expert ? $this->item($model->expert, new CompanyMemberTransformer()) : null;
}
public function includeProduct(Application $model): ?Item {
return $model->product ? $this->item($model->product, new ProductTransformer()) : null;
}
public function includeProperties(Application $model): ?Item {
return $model->properties ? $this->item($model->properties, new ObjectTransformer()) : null;
}
public function includeConclusions(Application $model): Collection {
return $this->collection($model->conclusions, new ConclusionTransformer());
}
public function includePermissions(Application $model): Primitive {
return $this->primitive((new PermissionsService($model))->get());
}
}