src/Entity/File/File.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Entity\File;
  3. use App\Entity\AbstractEntity;
  4. use App\Entity\Order;
  5. use App\Entity\Product;
  6. use App\Repository\FileRepository;
  7. use Doctrine\ORM\Mapping as ORM;
  8. /**
  9.  * @ORM\MappedSuperclass()
  10.  * @ORM\Entity(repositoryClass=FileRepository::class)
  11.  * @ORM\InheritanceType("SINGLE_TABLE")
  12.  * @ORM\DiscriminatorColumn(name="type", type="string")
  13.  * @ORM\DiscriminatorMap({"template" = "Template", "contract" = "Contract", "signi" = "Signi", "file" = "File", "simple" = "SimpleFile", "digi_sign" = "DigiSign", "photo" = "Photo", "valuable" = "ValuableFile", "valuable_protocol" = "ValuableProtocolFile"})
  14.  * @ORM\HasLifecycleCallbacks
  15.  */
  16. class File extends AbstractEntity
  17. {
  18.     /**
  19.      * @ORM\Id
  20.      * @ORM\GeneratedValue
  21.      * @ORM\Column(type="integer")
  22.      */
  23.     private $id;
  24.     /**
  25.      * Počítá se jako počet vygenerovaných smluv v rámci objednávky nehledě na smazané tzn. deleted = 1 soubory
  26.      *
  27.      * @ORM\Column(type="string", length=255)
  28.      */
  29.     private $version;
  30.     /**
  31.      * @ORM\Column(type="boolean", nullable=true)
  32.      */
  33.     private $deleted false;
  34.     /**
  35.      * Order název souboru bych viděl jako Smlouva č.{order_id} v.{version} a u
  36.      * Product bych tam nahrával to jak to má pojmenovaný uživatel
  37.      *
  38.      * @ORM\Column(type="string", length=255)
  39.      */
  40.     private $name;
  41.     /**
  42.      * @ORM\Column(type="string", length=128)
  43.      */
  44.     private $mime;
  45.     /**
  46.      * Technický název bych viděl v případě Order takto /public/files/contracts/{order_id}/{RAND_HASH}.pdf a
  47.      * V případě Product takto /public/files/templates/{product_id}/{RAND_HASH}.pdf
  48.      *
  49.      * @ORM\Column(type="string", length=512)
  50.      */
  51.     private $url;
  52.     /**
  53.      * @ORM\Column(type="string", length=512, nullable=true)
  54.      */
  55.     private $url_del;
  56.     /**
  57.      * @ORM\Column(type="integer")
  58.      */
  59.     private $size;
  60.     /**
  61.      * @ORM\Column(type="boolean")
  62.      */
  63.     private $signed false;
  64.     /**
  65.      * @ORM\ManyToOne(targetEntity=Order::class, inversedBy="files")
  66.      */
  67.     private $orderEnt;
  68.     /**
  69.      * Společně s vytvářením produktu se nahrává Word šablona, ze které se bude generovat potom to PDF
  70.      *
  71.      * @ORM\OneToOne(targetEntity=Product::class)
  72.      */
  73.     private $product;
  74.     /**
  75.      * @ORM\Column(type="string", length=128, nullable=true)
  76.      */
  77.     private $signiContractId;
  78.     /**
  79.      * @ORM\Column(type="string", length=128, nullable=true)
  80.      */
  81.     private $signiState;
  82.     /**
  83.      * @ORM\Column(type="string", length=255, nullable=true)
  84.      */
  85.     private $envelopeId;
  86.     /**
  87.      * @ORM\ManyToOne(targetEntity=Product::class, inversedBy="photos")
  88.      */
  89.     protected $metal;
  90.     public function getId(): ?int
  91.     {
  92.         return $this->id;
  93.     }
  94.     public function getVersion(): ?string
  95.     {
  96.         return $this->version;
  97.     }
  98.     public function setVersion(string $version): self
  99.     {
  100.         $this->version $version;
  101.         return $this;
  102.     }
  103.     public function isDeleted(): ?bool
  104.     {
  105.         return $this->deleted;
  106.     }
  107.     public function setDeleted(?bool $deleted): self
  108.     {
  109.         $this->deleted $deleted;
  110.         return $this;
  111.     }
  112.     public function getName(): ?string
  113.     {
  114.         return $this->name;
  115.     }
  116.     public function setName(string $name): self
  117.     {
  118.         $this->name $name;
  119.         return $this;
  120.     }
  121.     public function getMime(): ?string
  122.     {
  123.         return $this->mime;
  124.     }
  125.     public function setMime(string $mime): self
  126.     {
  127.         $this->mime $mime;
  128.         return $this;
  129.     }
  130.     public function getUrl($trim '/public'): ?string
  131.     {
  132.         return str_replace($trim''$this->url);
  133.     }
  134.     public function setUrl(string $url): self
  135.     {
  136.         $this->url $url;
  137.         return $this;
  138.     }
  139.     public function getUrlDel(): ?string
  140.     {
  141.         return $this->url_del;
  142.     }
  143.     public function setUrlDel(?string $url_del): self
  144.     {
  145.         $this->url_del $url_del;
  146.         return $this;
  147.     }
  148.     public function getSize(): ?int
  149.     {
  150.         return $this->size;
  151.     }
  152.     public function setSize(int $size): self
  153.     {
  154.         $this->size $size;
  155.         return $this;
  156.     }
  157.     public function isSigned(): ?bool
  158.     {
  159.         return $this->signed;
  160.     }
  161.     public function setSigned(bool $signed): self
  162.     {
  163.         $this->signed $signed;
  164.         return $this;
  165.     }
  166.     public function getOrderEnt(): ?Order
  167.     {
  168.         return $this->orderEnt;
  169.     }
  170.     public function setOrderEnt(?Order $orderEnt): self
  171.     {
  172.         $this->orderEnt $orderEnt;
  173.         return $this;
  174.     }
  175.     public function getProduct(): ?Product
  176.     {
  177.         return $this->product;
  178.     }
  179.     public function setProduct(?Product $product): self
  180.     {
  181.         $this->product $product;
  182.         return $this;
  183.     }
  184.     public function getSigniContractId(): ?string
  185.     {
  186.         return $this->signiContractId;
  187.     }
  188.     public function setSigniContractId(?string $signiContractId): self
  189.     {
  190.         $this->signiContractId $signiContractId;
  191.         return $this;
  192.     }
  193.     public function getSigniState(): ?string
  194.     {
  195.         return $this->signiState;
  196.     }
  197.     /**
  198.      * TODO: Refactoring, used in signi and digisign
  199.      * @param string|null $signiState
  200.      * @return $this
  201.      */
  202.     public function setSigniState(?string $signiState): self
  203.     {
  204.         $this->signiState $signiState;
  205.         return $this;
  206.     }
  207.     public function getEnvelopeId(): ?string
  208.     {
  209.         return $this->envelopeId;
  210.     }
  211.     public function setEnvelopeId(?string $envelopeId): self
  212.     {
  213.         $this->envelopeId $envelopeId;
  214.         return $this;
  215.     }
  216.     /**
  217.      * @return bool
  218.      */
  219.     public function exists(){
  220.         return file_exists($this->getUrlDel());
  221.     }
  222.     /**
  223.      * @ORM\PrePersist
  224.      */
  225.     public function onPrePersist() {
  226.         parent::onPrePersist();
  227.         $re '';
  228.         if(
  229.             $this->getOrderEnt() instanceof Order &&
  230.             $this->getOrderEnt()->isReinvest() === true
  231.         ){
  232.             $re 'RE ';
  233.         }
  234.         $this->name $re $this->name;
  235.     }
  236.     public function getMetal(): ?Product
  237.     {
  238.         return $this->metal;
  239.     }
  240.     public function setMetal(?Product $metal): self
  241.     {
  242.         $this->metal $metal;
  243.         return $this;
  244.     }
  245.     public function getDigisignState(): ?string
  246.     {
  247.         return $this->digisignState;
  248.     }
  249.     public function setDigisignState(string $digisignState): self
  250.     {
  251.         $this->digisignState $digisignState;
  252.         return $this;
  253.     }
  254. }