<?php
declare(strict_types=1);
namespace App\Infrastructure\Doctrine\Entity;
use App\Domain\Common\Entity\Catalog;
use App\Infrastructure\Doctrine\Entity\Traits\EnabledTrait;
use App\Infrastructure\Doctrine\Entity\Traits\IdableTrait;
use App\Infrastructure\Doctrine\Entity\Traits\LabelableTrait;
use App\Infrastructure\Doctrine\Entity\Traits\TimestampableTrait;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\Validator\Constraints as Assert;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
/**
* @ORM\Entity(repositoryClass="App\Infrastructure\Doctrine\Repository\DoctrineCatalogRepository")
*
* @Vich\Uploadable
*/
class DoctrineCatalog implements Catalog
{
use EnabledTrait;
use IdableTrait;
use LabelableTrait;
use TimestampableTrait;
/**
* @Vich\UploadableField(mapping="catalog", fileNameProperty="catalog")
*/
private ?File $catalogFile = null;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private ?string $catalog = null;
/**
* @Gedmo\SortablePosition
* @ORM\Column(type="integer")
*
* @Assert\GreaterThanOrEqual(value="1")
* @Assert\LessThanOrEqual(value="10")
*/
private int $position = -1;
public function __toString(): string
{
return (string) $this->getLabel();
}
public function getCatalogFile(): ?File
{
return $this->catalogFile;
}
public function setCatalogFile(?File $catalogFile): void
{
$this->catalogFile = $catalogFile;
if (null !== $catalogFile) {
$this->setUpdatedAt(new \DateTimeImmutable());
}
}
public function getCatalog(): ?string
{
return $this->catalog;
}
public function setCatalog(?string $catalog): void
{
$this->catalog = $catalog;
}
public function getPosition(): int
{
return $this->position;
}
public function setPosition(int $position): void
{
$this->position = $position;
}
}