mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal.git
synced 2026-08-20 04:54:12 +00:00
64 lines
1.5 KiB
PHP
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);
|
|
}
|
|
|
|
}
|