src/Entity/Site.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use Doctrine\Common\Collections\ArrayCollection;
  4. use Doctrine\Common\Collections\Criteria;
  5. use Doctrine\ORM\Mapping as ORM;
  6. use App\Entity\Site\Logistique;
  7. use Gedmo\Timestampable\Traits\Timestampable;
  8. use Gedmo\Timestampable\Traits\TimestampableEntity;
  9. use Gedmo\Mapping\Annotation as Gedmo;
  10. use Symfony\Component\HttpFoundation\File\File;
  11. /**
  12.  * Site
  13.  *
  14.  * @ORM\Table(name="site", indexes={@ORM\Index(name="IDX_694309E4F5B7AF75", columns={"address_id"})})
  15.  * @ORM\Entity
  16.  */
  17. class Site
  18. {
  19.     const TYPE_EHPAD 'ehpad';
  20.     const TYPE_CLINIQUE 'clinique';
  21.     const TYPE_RESIDENCE 'residence';
  22.     const TYPE_SSR 'ssr';
  23.     const TYPE_HOPITAL 'hopital';
  24.     const ZONE_GIRONDE 'Gironde';
  25.     const ZONE_NORMANDIE 'Normandie';
  26.     const ZONE_IDF 'IDF';
  27.     const ZONE_PACA 'PACA';
  28.     const ZONE_CA 'Champagne-Ardenne';
  29.     const ZONE_CM 'Charente-Maritime';
  30.     const ZONE_LANDES 'Les Landes';
  31.     const ZONE_NA 'Nouvelle-Aquitaine';
  32.     const ZONE_OCCITANIE 'Occitanie';
  33.     const STATUS_PROSPECT 'prospect';
  34.     const STATUS_ACTIF 'actif';
  35.     const STATUS_CLOSE 'closed';
  36.     /**
  37.      * @var int
  38.      *
  39.      * @ORM\Column(name="id", type="integer", nullable=false)
  40.      * @ORM\Id
  41.      * @ORM\GeneratedValue(strategy="IDENTITY")
  42.      */
  43.     private $id;
  44.     /**
  45.      * @var string
  46.      *
  47.      * @ORM\Column(name="name", type="string", length=255, nullable=false)
  48.      */
  49.     private $name;
  50.     /**
  51.      * @var string
  52.      *
  53.      * @ORM\Column(name="type", type="string", nullable=true)
  54.      */
  55.     private $type;
  56.     /**
  57.      * @var string
  58.      *
  59.      * @ORM\Column(name="enseigne", type="string", nullable=true)
  60.      */
  61.     private $enseigne;
  62.     /**
  63.      * @ORM\Column(name="phone", type="string", nullable=true)
  64.      */
  65.     private $phone;
  66.     /**
  67.      * @var string
  68.      *
  69.      * @ORM\Column(name="status", type="string", length=500, nullable=true)
  70.      */
  71.     private $status;
  72.     /**
  73.      * @var string
  74.      *
  75.      * @ORM\Column(name="zoneGeographique", type="string", nullable=true)
  76.      */
  77.     private $zoneGeographique;
  78.     /**
  79.      * @var string
  80.      *
  81.      * @ORM\Column(name="consignesLingeries", type="text", nullable=true)
  82.      */
  83.     private $consignesLingeries;
  84.     /**
  85.      * @var string
  86.      *
  87.      * @ORM\Column(name="parking", type="text", nullable=true)
  88.      */
  89.     private $parking;
  90.     /**
  91.      * @var string
  92.      *
  93.      * @ORM\Column(name="rangementCles", type="text", nullable=true)
  94.      */
  95.     private $rangementCles;
  96.     /**
  97.      * @var string
  98.      *
  99.      * @ORM\Column(name="localPoubelles", type="text", nullable=true)
  100.      */
  101.     private $localPoubelles;
  102.     /**
  103.      * @var string
  104.      *
  105.      * @ORM\Column(name="codeAccess", type="text", nullable=true)
  106.      */
  107.     private $codeAccess;
  108.     protected File $file;
  109.     /**
  110.      * @var string
  111.      *
  112.      * @ORM\Column(name="filename", type="text", nullable=true)
  113.      */
  114.     private $filename;
  115.     /**
  116.      * @var string
  117.      *
  118.      * @ORM\Column(name="autresInformations", type="text", nullable=true)
  119.      */
  120.     private $autresInformations;
  121.     /**
  122.      * @var string
  123.      *
  124.      * @ORM\Column(name="emailSite", type="string", nullable=true)
  125.      */
  126.     private $emailSite;
  127.     /**
  128.      * @ORM\OneToOne(targetEntity=Logistique::class, inversedBy="site" , cascade={"persist"})
  129.      * @ORM\JoinColumn(name="logistique_id", referencedColumnName="id")
  130.      */
  131.     protected $logistique;
  132.     /**
  133.      * @var Salon ArrayCollection
  134.      * @ORM\OneToMany(targetEntity="Salon", mappedBy="site")
  135.      */
  136.     protected $salons;
  137.     /**
  138.      * @var Contact ArrayCollection
  139.      * @ORM\OneToMany(targetEntity="Contact", mappedBy="site", cascade={"persist"})
  140.      */
  141.     protected $othersContacts;
  142.     /**
  143.      * @var Address|null
  144.      *
  145.      * @ORM\ManyToOne(targetEntity="Address", cascade={"persist"})
  146.      * @ORM\JoinColumn(name="address_id", referencedColumnName="id")
  147.      */
  148.     private $address;
  149.     /**
  150.      * @var Contact|null
  151.      *
  152.      * @ORM\ManyToOne(targetEntity="Contact", cascade={"persist"})
  153.      * @ORM\JoinColumn(name="contactCommercial_id", referencedColumnName="id", onDelete="SET NULL")
  154.      */
  155.     private $contactCommercial;
  156.     /**
  157.      * @var Contact|null
  158.      *
  159.      * @ORM\ManyToOne(targetEntity="Contact", cascade={"persist"})
  160.      * @ORM\JoinColumn(name="contactBilling_id", referencedColumnName="id" , onDelete="SET NULL")
  161.      */
  162.     private $contactBilling;
  163.     /**
  164.      * @var Contact|null
  165.      *
  166.      * @ORM\ManyToOne(targetEntity="Contact", cascade={"persist"})
  167.      * @ORM\JoinColumn(name="contact_id", referencedColumnName="id", onDelete="SET NULL")
  168.      */
  169.     private $contact;
  170.     /**
  171.      * @ORM\Column(type="boolean", nullable=true)
  172.      */
  173.     private $noDisplayReservation false;
  174.     /**
  175.      * @ORM\Column(type="boolean", nullable=true)
  176.      */
  177.     private $noDisplayAnnuaire false;
  178.     /**
  179.      * @var \DateTime $created
  180.      *
  181.      * @Gedmo\Timestampable(on="create")
  182.      * @ORM\Column(type="datetime", options={"default"="CURRENT_TIMESTAMP"})
  183.      */
  184.     private $created;
  185.     /**
  186.      * @var \DateTime $updated
  187.      *
  188.      * @Gedmo\Timestampable(on="update")
  189.      * @ORM\Column(type="datetime", options={"default"="CURRENT_TIMESTAMP"})
  190.      */
  191.     private $updated;
  192.     /**
  193.      * @ORM\ManyToOne(targetEntity=User::class, cascade={"persist"})
  194.      * @ORM\JoinColumn(name="creator_id", referencedColumnName="id")
  195.      */
  196.     protected $creator;
  197.     /**
  198.      * @ORM\ManyToOne(targetEntity=User::class, cascade={"persist"})
  199.      * @ORM\JoinColumn(name="maj_id", referencedColumnName="id")
  200.      */
  201.     protected $maj;
  202.     public function __toString(): string
  203.     {
  204.         return $this->name;
  205.     }
  206.     public function __construct()
  207.     {
  208.         $this->salons = new ArrayCollection();
  209.         $this->othersContacts = new ArrayCollection();
  210.     }
  211.     public function getId(): ?int
  212.     {
  213.         return $this->id;
  214.     }
  215.     public function getName(): ?string
  216.     {
  217.         return $this->name;
  218.     }
  219.     public function setName(string $name): self
  220.     {
  221.         $this->name $name;
  222.         return $this;
  223.     }
  224.     public function getStatus(): ?string
  225.     {
  226.         return $this->status;
  227.     }
  228.     public function setStatus(string $status): self
  229.     {
  230.         $this->status $status;
  231.         return $this;
  232.     }
  233.     public function getAddress(): ?Address
  234.     {
  235.         return $this->address;
  236.     }
  237.     public function setAddress(?Address $address): self
  238.     {
  239.         $this->address $address;
  240.         return $this;
  241.     }
  242.     /**
  243.      * @return string
  244.      */
  245.     public function getType(): ?string
  246.     {
  247.         return $this->type;
  248.     }
  249.     /**
  250.      * @param string $type
  251.      */
  252.     public function setType(string $type): void
  253.     {
  254.         $this->type $type;
  255.     }
  256.     /**
  257.      * @return Contact|null
  258.      */
  259.     public function getContactCommercial(): ?Contact
  260.     {
  261.         return $this->contactCommercial;
  262.     }
  263.     /**
  264.      * @param Contact|null $contactCommercial
  265.      */
  266.     public function setContactCommercial(?Contact $contactCommercial): void
  267.     {
  268.         $this->contactCommercial $contactCommercial;
  269.     }
  270.     /**
  271.      * @return Contact|null
  272.      */
  273.     public function getContactBilling(): ?Contact
  274.     {
  275.         return $this->contactBilling;
  276.     }
  277.     /**
  278.      * @param Contact|null $contactBilling
  279.      */
  280.     public function setContactBilling(?Contact $contactBilling): void
  281.     {
  282.         $this->contactBilling $contactBilling;
  283.     }
  284.     /**
  285.      * @return Contact|null
  286.      */
  287.     public function getContact(): ?Contact
  288.     {
  289.         return $this->contact;
  290.     }
  291.     /**
  292.      * @param Contact|null $contact
  293.      */
  294.     public function setContact(?Contact $contact): void
  295.     {
  296.         $this->contact $contact;
  297.     }
  298.     /**
  299.      * @return []
  300.      */
  301.     public function getSalons()
  302.     {
  303.         return $this->salons;
  304.     }
  305.     /**
  306.      * @return []
  307.      */
  308.     public function getFirstSalonsByTag($tag)
  309.     {
  310.         $criteria Criteria::create()
  311.             ->andWhere(Criteria::expr()->eq('service'$tag));
  312.         return $this->salons->matching($criteria);
  313.     }
  314.     /**
  315.      * @param Salon $salons
  316.      */
  317.     public function setSalons(Salon $salons): void
  318.     {
  319.         $this->salons $salons;
  320.     }
  321.     public function getStatusLibelle()
  322.     {
  323.         switch ($this->name) {
  324.             case 1:
  325.                 return $this::STATUS_ACTIF;
  326.             case 0:
  327.                 return $this::STATUS_CLOSE;
  328.         }
  329.     }
  330.     /**
  331.      * @return string
  332.      */
  333.     public function getZoneGeographique()
  334.     {
  335.         return $this->zoneGeographique;
  336.     }
  337.     /**
  338.      * @param string $zoneGeographique
  339.      */
  340.     public function setZoneGeographique(string $zoneGeographique): void
  341.     {
  342.         $this->zoneGeographique $zoneGeographique;
  343.     }
  344.     /**
  345.      * @return ArrayCollection
  346.      */
  347.     public function getOthersContacts()
  348.     {
  349.         return $this->othersContacts;
  350.     }
  351.     /**
  352.      * @param $othersContacts
  353.      */
  354.     public function setOthersContacts($othersContacts): void
  355.     {
  356.         $this->othersContacts $othersContacts;
  357.     }
  358.     /**
  359.      * @return string
  360.      */
  361.     public function getEnseigne(): ?string
  362.     {
  363.         return $this->enseigne;
  364.     }
  365.     /**
  366.      * @param string $enseigne
  367.      */
  368.     public function setEnseigne(string $enseigne): void
  369.     {
  370.         $this->enseigne $enseigne;
  371.     }
  372.     /**
  373.      * @return Logistique|mixed
  374.      */
  375.     public function getLogistique()
  376.     {
  377.         return $this->logistique;
  378.     }
  379.     /**
  380.      * @param mixed $logistique
  381.      */
  382.     public function setLogistique($logistique): void
  383.     {
  384.         $this->logistique $logistique;
  385.     }
  386.     /**
  387.      * @return string
  388.      */
  389.     public function getEmailSite(): ?string
  390.     {
  391.         return $this->emailSite;
  392.     }
  393.     /**
  394.      * @param string $emailSite
  395.      */
  396.     public function setEmailSite(string $emailSite): void
  397.     {
  398.         $this->emailSite $emailSite;
  399.     }
  400.     /*********/
  401.     /*  ADD */
  402.     /********/
  403.     public function addOthersContact(Contact $item)
  404.     {
  405.         $this->othersContacts->add($item);
  406.         $item->setSite($this);
  407.     }
  408.     /*********/
  409.     /*  REMVOE */
  410.     /********/
  411.     public function removeOthersContact(Contact $item)
  412.     {
  413.         $this->othersContacts->remove($item);
  414.     }
  415.     public static function getSiteZones()
  416.     {
  417.         return [
  418.             Site::ZONE_GIRONDE => 'Gironde',
  419.             Site::ZONE_NORMANDIE => 'Normandie',
  420.             Site::ZONE_IDF => 'IDF',
  421.             Site::ZONE_PACA => 'PACA',
  422.             Site::ZONE_CA => 'Champagne-Ardenne',
  423.             Site::ZONE_CM => 'Charente-Maritime',
  424.             Site::ZONE_LANDES => 'Les Landes',
  425.             Site::ZONE_NA => 'Nouvelle-Aquitaine',
  426.             Site::ZONE_OCCITANIE => 'Occitanie',
  427.         ];
  428.     }
  429.     public static function getSiteTypes()
  430.     {
  431.         return [
  432.             Site::TYPE_SSR => 'CLINIQUE SSR',
  433.             Site::TYPE_EHPAD => 'EHPAD',
  434.             Site::TYPE_HOPITAL => 'HOPITAL',
  435.             Site::TYPE_RESIDENCE => 'RESIDENCE',
  436.         ];
  437.     }
  438.     public function isNoDisplayReservation(): ?bool
  439.     {
  440.         return $this->noDisplayReservation;
  441.     }
  442.     public function setNoDisplayReservation(?bool $noDisplayReservation): self
  443.     {
  444.         $this->noDisplayReservation $noDisplayReservation;
  445.         return $this;
  446.     }
  447.     /**
  448.      * @return string
  449.      */
  450.     public function getConsignesLingeries(): ?string
  451.     {
  452.         return $this->consignesLingeries;
  453.     }
  454.     /**
  455.      * @param string $consignesLingeries
  456.      */
  457.     public function setConsignesLingeries(?string $consignesLingeries): void
  458.     {
  459.         $this->consignesLingeries $consignesLingeries;
  460.     }
  461.     /**
  462.      * @return string
  463.      */
  464.     public function getParking(): ?string
  465.     {
  466.         return $this->parking;
  467.     }
  468.     /**
  469.      * @param string $parking
  470.      */
  471.     public function setParking(?string $parking): void
  472.     {
  473.         $this->parking $parking;
  474.     }
  475.     /**
  476.      * @return string
  477.      */
  478.     public function getRangementCles(): ?string
  479.     {
  480.         return $this->rangementCles;
  481.     }
  482.     /**
  483.      * @param string $rangementCles
  484.      */
  485.     public function setRangementCles(?string $rangementCles): void
  486.     {
  487.         $this->rangementCles $rangementCles;
  488.     }
  489.     /**
  490.      * @return string
  491.      */
  492.     public function getLocalPoubelles(): ?string
  493.     {
  494.         return $this->localPoubelles;
  495.     }
  496.     /**
  497.      * @param string $localPoubelles
  498.      */
  499.     public function setLocalPoubelles(?string $localPoubelles): void
  500.     {
  501.         $this->localPoubelles $localPoubelles;
  502.     }
  503.     /**
  504.      * @return string
  505.      */
  506.     public function getCodeAccess(): ?string
  507.     {
  508.         return $this->codeAccess;
  509.     }
  510.     /**
  511.      * @param string $codeAccess
  512.      */
  513.     public function setCodeAccess(?string $codeAccess): void
  514.     {
  515.         $this->codeAccess $codeAccess;
  516.     }
  517.     /**
  518.      * @return string
  519.      */
  520.     public function getAutresInformations(): ?string
  521.     {
  522.         return $this->autresInformations;
  523.     }
  524.     /**
  525.      * @param string $autresInformations
  526.      */
  527.     public function setAutresInformations(?string $autresInformations): void
  528.     {
  529.         $this->autresInformations $autresInformations;
  530.     }
  531.     /**
  532.      * @return bool
  533.      */
  534.     public function isNoDisplayAnnuaire(): ?bool
  535.     {
  536.         return $this->noDisplayAnnuaire;
  537.     }
  538.     /**
  539.      * @param bool $noDisplayAnnuaire
  540.      */
  541.     public function setNoDisplayAnnuaire(?bool $noDisplayAnnuaire): void
  542.     {
  543.         $this->noDisplayAnnuaire $noDisplayAnnuaire;
  544.     }
  545.     /**
  546.      * @return mixed
  547.      */
  548.     public function getCreator()
  549.     {
  550.         return $this->creator;
  551.     }
  552.     /**
  553.      * @param mixed $creator
  554.      */
  555.     public function setCreator($creator): void
  556.     {
  557.         $this->creator $creator;
  558.     }
  559.     /**
  560.      * @return mixed
  561.      */
  562.     public function getMaj()
  563.     {
  564.         return $this->maj;
  565.     }
  566.     /**
  567.      * @param mixed $maj
  568.      */
  569.     public function setMaj($maj): void
  570.     {
  571.         $this->maj $maj;
  572.     }
  573.     /**
  574.      * @return \DateTime
  575.      */
  576.     public function getCreated(): \DateTime
  577.     {
  578.         return $this->created;
  579.     }
  580.     /**
  581.      * @param \DateTime $created
  582.      */
  583.     public function setCreated(\DateTime $created): void
  584.     {
  585.         $this->created $created;
  586.     }
  587.     /**
  588.      * @return \DateTime
  589.      */
  590.     public function getUpdated()
  591.     {
  592.         return $this->updated;
  593.     }
  594.     /**
  595.      * @param \DateTime $updated
  596.      */
  597.     public function setUpdated(\DateTime $updated): void
  598.     {
  599.         $this->updated $updated;
  600.     }
  601.     /**
  602.      * @return mixed
  603.      */
  604.     public function getPhone()
  605.     {
  606.         return $this->phone;
  607.     }
  608.     /**
  609.      * @param mixed $phone
  610.      */
  611.     public function setPhone($phone): void
  612.     {
  613.         $this->phone $phone;
  614.     }
  615.     /**
  616.      * @return File
  617.      */
  618.     public function getFile(): ?File
  619.     {
  620.         return $this->file;
  621.     }
  622.     /**
  623.      * @param File $file
  624.      */
  625.     public function setFile(File $file): void
  626.     {
  627.         $this->file $file;
  628.     }
  629.     /**
  630.      * @return string
  631.      */
  632.     public function getFilename(): ?string
  633.     {
  634.         return $this->filename;
  635.     }
  636.     /**
  637.      * @param string $filename
  638.      */
  639.     public function setFilename(?string $filename): void
  640.     {
  641.         $this->filename $filename;
  642.     }
  643. }