src/Entity/Common/File.php line 25

  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: Михаил
  5.  * Date: 17.08.2018
  6.  * Time: 12:56
  7.  */
  8. namespace App\Entity\Common;
  9. use App\Entity\Traits\CreatedTrait;
  10. use App\Entity\Traits\UserCreatedInterface;
  11. use App\Entity\Traits\UserCreatedTrait;
  12. use DateTime;
  13. use Doctrine\ORM\Mapping as ORM;
  14. use Symfony\Component\HttpFoundation\File\File as HttpFile;
  15. use Symfony\Component\Validator\Constraints as Assert;
  16. use Vich\UploaderBundle\Mapping\Annotation as Vich;
  17. #[Vich\Uploadable()]
  18. #[ORM\Table(name'files')]
  19. #[ORM\Entity]
  20. #[ORM\HasLifecycleCallbacks]
  21. class File implements UserCreatedInterface
  22. {
  23.     use CreatedTrait;
  24.     use UserCreatedTrait;
  25.     #[ORM\Id]
  26.     #[ORM\GeneratedValue(strategy'AUTO')]
  27.     #[ORM\Column(type'integer')]
  28.     private $id;
  29.     #[Vich\UploadableField(mapping"content_files"fileNameProperty"data.name"size"data.size"mimeType"data.mimeType"originalName"data.originalName"dimensions"data.dimensions")]
  30.     #[Assert\NotBlank(message'need-file')]
  31.     #[Assert\File]
  32.     #[Assert\Image(detectCorruptedtruecorruptedMessage'Product photo is corrupted. Upload it again.'groups: ['Image'])]
  33.     private ?HttpFile $file null;
  34.     /**
  35.      * @var bool
  36.      */
  37.     #[ORM\Column(type'boolean'options: ['default' => true])]
  38.     private bool $public true;
  39.     /**
  40.      * @var UploadedData
  41.      */
  42.     #[ORM\Embedded(class: 'App\Entity\Common\UploadedData')]
  43.     private $data;
  44.     /**
  45.      * @var Owner
  46.      */
  47.     #[ORM\Embedded(class: 'App\Entity\Common\Owner')]
  48.     private $owner;
  49.     public function __construct()
  50.     {
  51.         $this->data = new UploadedData();
  52.         $this->owner = new Owner();
  53.     }
  54.     /**
  55.      * @return mixed
  56.      */
  57.     public function getId()
  58.     {
  59.         return $this->id;
  60.     }
  61.     /**
  62.      * @param mixed $id
  63.      */
  64.     public function setId($id): void
  65.     {
  66.         $this->id $id;
  67.     }
  68.     /**
  69.      * @return HttpFile
  70.      */
  71.     public function getFile(): ?HttpFile
  72.     {
  73.         return $this->file;
  74.     }
  75.     /**
  76.      * @param HttpFile $file
  77.      */
  78.     public function setFile(HttpFile $file): void
  79.     {
  80.         $this->file $file;
  81.         if (null !== $file) {
  82.             // It is required that at least one field changes if you are using doctrine
  83.             // otherwise the event listeners won't be called and the file is lost
  84.             $this->created_at = new DateTime();
  85.         }
  86.     }
  87.     /**
  88.      * @return UploadedData
  89.      */
  90.     public function getData(): ?UploadedData
  91.     {
  92.         return $this->data;
  93.     }
  94.     /**
  95.      * @param UploadedData $data
  96.      */
  97.     public function setData(UploadedData $data): void
  98.     {
  99.         $this->data $data;
  100.     }
  101.     /**
  102.      * @return Owner
  103.      */
  104.     public function getOwner(): Owner
  105.     {
  106.         return $this->owner;
  107.     }
  108.     /**
  109.      * @param Owner $owner
  110.      */
  111.     public function setOwner(Owner $owner): void
  112.     {
  113.         $this->owner $owner;
  114.     }
  115.     /**
  116.      * @return bool
  117.      */
  118.     public function isPublic(): bool
  119.     {
  120.         return $this->public;
  121.     }
  122.     /**
  123.      * @param bool $public
  124.      */
  125.     public function setPublic(bool $public): void
  126.     {
  127.         $this->public $public;
  128.     }
  129.     public function getCaption(): ?string
  130.     {
  131.         return $this->getData()?->getOriginalName();
  132.     }
  133. }