. */ declare(strict_types=1); namespace FireflyIII\Transformers; use FireflyIII\Models\Attachment; use FireflyIII\Repositories\Attachment\AttachmentRepositoryInterface; use Log; /** * Class AttachmentTransformer */ class AttachmentTransformer extends AbstractTransformer { /** @var AttachmentRepositoryInterface */ private $repository; /** * BillTransformer constructor. * * @codeCoverageIgnore */ public function __construct() { $this->repository = app(AttachmentRepositoryInterface::class); if ('testing' === config('app.env')) { Log::warning(sprintf('%s should not be instantiated in the TEST environment!', get_class($this))); } } /** * Transform attachment. * * @param Attachment $attachment * * @return array */ public function transform(Attachment $attachment): array { $this->repository->setUser($attachment->user); return [ 'id' => (int)$attachment->id, 'created_at' => $attachment->created_at->toAtomString(), 'updated_at' => $attachment->updated_at->toAtomString(), 'attachable_id' => $attachment->attachable_id, 'attachable_type' => str_replace('FireflyIII\\Models\\', '', $attachment->attachable_type), 'md5' => $attachment->md5, 'filename' => $attachment->filename, 'download_uri' => route('api.v1.attachments.download', [$attachment->id]), 'upload_uri' => route('api.v1.attachments.upload', [$attachment->id]), 'title' => $attachment->title, 'notes' => $this->repository->getNoteText($attachment), 'mime' => $attachment->mime, 'size' => (int)$attachment->size, 'links' => [ [ 'rel' => 'self', 'uri' => '/attachment/' . $attachment->id, ], ], ]; } }