Files
2023-05-26 19:02:46 +03:00

64 lines
1.5 KiB
PHP

<?php
namespace App\Transformers;
use App\Models\Document;
use Carbon\Carbon;
use League\Fractal\Manager;
use League\Fractal\Resource\Collection;
use League\Fractal\Resource\Item;
use League\Fractal\Serializer\ArraySerializer;
use League\Fractal\TransformerAbstract;
class DocumentTransformer extends TransformerAbstract
{
/**
* Default Includes for Document Module
* @var array
*/
protected array $defaultIncludes = [
'files'
];
/**
* Available includes
* @var array
*/
protected array $availableIncludes = [
'owner'
];
public function transform(Document $document): array
{
return [
'id' => $document->id,
'reference' => $document->reference,
'status' => $document->status,
'document_type' => $document->document_type,
'created_at' => Carbon::parse($document->created_at)->format('d-m-Y h:i:s A')
];
}
public function includeFiles(Document $document): Collection
{
$files = $document->files;
return $this->collection($files, new FileTransformer(true));
}
/**
* include owner data
* @param Document $document
* @return Item
*/
public function includeOwner(Document $document): Item
{
$owner = $document->owner;
$transformer = new CompanyTransformer();
$transformer->setDefaultIncludes([ 'contact', 'employee', 'company_module']);
return $this->item($owner, $transformer);
}
}