src/Entity/Document.php line 15

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use Doctrine\ORM\Mapping as ORM;
  4. use Gedmo\Mapping\Annotation as Gedmo;
  5. use Gedmo\Translatable\Translatable;
  6. /**
  7.  * Document
  8.  *
  9.  * @ORM\Table(name="document", uniqueConstraints={@ORM\UniqueConstraint(name="document_id_uindex", columns={"id"})}, indexes={@ORM\Index(name="document_manager_id_fk", columns={"manager_id"}), @ORM\Index(name="document_document_type_id_fk", columns={"type_id"})})
  10.  * @ORM\Entity
  11.  */
  12. class Document
  13. {
  14.     /**
  15.      * @var integer
  16.      *
  17.      * @ORM\Column(name="id", type="integer", nullable=false)
  18.      * @ORM\Id
  19.      * @ORM\GeneratedValue(strategy="IDENTITY")
  20.      */
  21.     private $id;
  22.     /**
  23.      * @var string
  24.      *
  25.      * @ORM\Column(name="name", type="string", length=255, nullable=true)
  26.      * @Gedmo\Translatable
  27.      */
  28.     private $name;
  29.     /**
  30.      * @var string
  31.      *
  32.      * @ORM\Column(name="filename", type="string", length=255, nullable=true)
  33.      * @Gedmo\Translatable
  34.      */
  35.     private $filename;
  36.     /**
  37.      * @var boolean
  38.      *
  39.      * @ORM\Column(name="`translated_en`", type="boolean", nullable=true)
  40.      */
  41.     private $translatedEn false;
  42.     /**
  43.      * @var Manager
  44.      *
  45.      * @ORM\ManyToOne(targetEntity="Manager")
  46.      * @ORM\JoinColumns({
  47.      *   @ORM\JoinColumn(name="manager_id", referencedColumnName="id")
  48.      * })
  49.      */
  50.     private $manager;
  51.     /**
  52.      * @var DocumentType
  53.      *
  54.      * @ORM\ManyToOne(targetEntity="DocumentType", inversedBy="documents")
  55.      * @ORM\JoinColumns({
  56.      *   @ORM\JoinColumn(name="type_id", referencedColumnName="id")
  57.      * })
  58.      */
  59.     private $type;
  60.     /**
  61.      * @return int
  62.      */
  63.     public function getId()
  64.     {
  65.         return $this->id;
  66.     }
  67.     /**
  68.      * @param int $id
  69.      */
  70.     public function setId($id)
  71.     {
  72.         $this->id $id;
  73.     }
  74.     /**
  75.      * Get the document name, fallback to French if English is missing.
  76.      * @return string
  77.      */
  78.     public function getName()
  79.     {
  80.         return !empty($this->name) ? $this->name : ($this->getFrenchName() ?: 'Unnamed Document');
  81.     }
  82.     /**
  83.      * @param string $name
  84.      */
  85.     public function setName($name)
  86.     {
  87.         $this->name $name;
  88.     }
  89.     /**
  90.      * @return string
  91.      */
  92.     public function getFilename()
  93.     {
  94.         return $this->filename;
  95.     }
  96.     /**
  97.      * @param string $filename
  98.      */
  99.     public function setFilename($filename)
  100.     {
  101.         $this->filename $filename;
  102.     }
  103.     /**
  104.      * @return bool
  105.      */
  106.     public function isTranslatedEn()
  107.     {
  108.         return $this->translatedEn;
  109.     }
  110.     /**
  111.      * @param bool $translatedEn
  112.      */
  113.     public function setTranslatedEn(bool $translatedEn)
  114.     {
  115.         $this->translatedEn $translatedEn;
  116.     }
  117.     /**
  118.      * @return Manager
  119.      */
  120.     public function getManager()
  121.     {
  122.         return $this->manager;
  123.     }
  124.     /**
  125.      * @param Manager $manager
  126.      */
  127.     public function setManager($manager)
  128.     {
  129.         $this->manager $manager;
  130.     }
  131.     /**
  132.      * @return DocumentType
  133.      */
  134.     public function getType()
  135.     {
  136.         return $this->type;
  137.     }
  138.     /**
  139.      * @param DocumentType $type
  140.      */
  141.     public function setType($type)
  142.     {
  143.         $this->type $type;
  144.     }
  145.     /**
  146.      * Fetch the French name if available.
  147.      * @return string|null
  148.      */
  149.     private function getFrenchName()
  150.     {
  151.         // Use Gedmo translations if available
  152.         return $this->name ?: null;
  153.     }
  154.     public function __toString()
  155.     {
  156.         return $this->getName();
  157.     }
  158. }