src/Entity/Country.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\CountryRepository;
  4. use Doctrine\Common\Collections\Collection;
  5. use Doctrine\ORM\Mapping as ORM;
  6. use Gedmo\Mapping\Annotation as Gedmo;
  7. use Symfony\Component\Validator\Constraints as Assert;
  8. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  9. use Symfony\Component\HttpFoundation\File\UploadedFile;
  10. use App\Entity\{ClientTransporteurTimestampableTrait};
  11. use Doctrine\Common\Collections\ArrayCollection;
  12. use Symfony\Component\Intl\Countries;
  13. use Symfony\Component\Intl\Currencies;
  14. /**
  15.  * @ORM\Entity(repositoryClass=CountryRepository::class)
  16.  * @UniqueEntity(fields="code")
  17.  */
  18. class Country
  19. {
  20.     use TimestampableTrait;
  21.     /**
  22.      * @ORM\Id
  23.      * @ORM\GeneratedValue
  24.      * @ORM\Column(type="integer")
  25.      */
  26.     private $id;
  27.     /**
  28.      * @ORM\Column(type="string", length=255, unique=true)
  29.      */
  30.     private $code;
  31.     /** 
  32.      * @Gedmo\Slug(fields={"code"})
  33.      * @ORM\Column(length=100, unique=true)
  34.      */
  35.     private $slug;
  36.     /**
  37.      * @ORM\Column(type="string", length=255, nullable=true)
  38.      */
  39.     private $flag;
  40.     /**
  41.      * @ORM\Column(type="string", length=255, nullable=true)
  42.      */
  43.     private $flagImage;
  44.     /**
  45.      * @Assert\Image(maxSize="2M", minWidth=160, minHeight=160)
  46.      */
  47.     private $file;
  48.     private $temp;
  49.     /**
  50.      * @ORM\OneToMany(targetEntity=City::class, mappedBy="country", orphanRemoval=true)
  51.      */
  52.     private $cities;
  53.     /**
  54.      * @ORM\OneToMany(targetEntity=Park::class, mappedBy="country")
  55.      */
  56.     private $parks;
  57.     /**
  58.      * @ORM\OneToMany(targetEntity=Transporteur::class, mappedBy="country")
  59.      */
  60.     private $transporteurs;
  61.     /**
  62.      * @ORM\OneToMany(targetEntity=Department::class, mappedBy="country")
  63.      */
  64.     private $departments;
  65.     /**
  66.      * @ORM\Column(type="boolean")
  67.      */
  68.     private $status false;
  69.     public function __construct()
  70.     {
  71.         $this->cities = new ArrayCollection();
  72.         $this->parks = new ArrayCollection();
  73.         $this->transporteurs = new ArrayCollection();
  74.         $this->departments = new ArrayCollection();
  75.     }
  76.     public function getId(): ?int
  77.     {
  78.         return $this->id;
  79.     }
  80.     public function getCode(): ?string
  81.     {
  82.         return $this->code;
  83.     }
  84.     public function setCode(string $code): self
  85.     {
  86.         $this->code $code;
  87.         return $this;
  88.     }
  89.     public function getPays() 
  90.     {
  91.         return Countries::getName($this->getCode());
  92.     }
  93.     // public function getMonnaie() 
  94.     // {
  95.     //     return Currencies::getSymbol('INR');
  96.     // }
  97.     
  98.     public function getSlug(): ?string
  99.     {
  100.         return $this->slug;
  101.     }
  102.     public function setSlug(string $slug): self
  103.     {
  104.         $this->slug $slug;
  105.         return $this;
  106.     }
  107.     public function getFlag(): ?string
  108.     {
  109.         return $this->flag;
  110.     }
  111.     public function setFlag(?string $flag): self
  112.     {
  113.         $this->flag $flag;
  114.         return $this;
  115.     }
  116.     public function getFlagImage(): ?string
  117.     {
  118.         return $this->flagImage;
  119.     }
  120.     public function setFlagImage(?string $flagImage): self
  121.     {
  122.         $this->flagImage $flagImage;
  123.         return $this;
  124.     }
  125.     public function setFile(UploadedFile $file)
  126.     {
  127.         $this->file $file;
  128.         if (!is_null($this->flagImage)) {
  129.             $this->temp $this->flagImage;
  130.             $this->flagImage null;
  131.         }
  132.         return $this;
  133.     }
  134.     public function getFile()
  135.     {
  136.         return $this->file;
  137.     }
  138.     public function setTemp($temp)
  139.     {
  140.         $this->temp $temp;
  141.         return $this;
  142.     }
  143.     public function getTemp()
  144.     {
  145.         return $this->temp;
  146.     }
  147.     /**
  148.      * @ORM\PrePersist()
  149.      * @ORM\PreUpdate()
  150.      */
  151.     public function preUpload()
  152.     {
  153.         if (is_null($this->file)) {
  154.             return;
  155.         }
  156.         
  157.         $this->flagImage md5(uniqid()).'.'.$this->file->guessExtension();
  158.     }
  159.     
  160.     /**
  161.      * @ORM\PostPersist()
  162.      * @ORM\PostUpdate()
  163.      */
  164.     public function upload()
  165.     {
  166.         if (is_null($this->file)) {
  167.             return;
  168.         }
  169.         
  170.         if (!is_null($this->temp)) {
  171.             $oldFile $this->getUploadRootDir().'/'.$this->temp;
  172.             if (file_exists($oldFile)) {
  173.                 @unlink($oldFile);
  174.             }
  175.         }
  176.         $this->file->move(
  177.             $this->getUploadRootDir(),$this->flagImage
  178.         );
  179.     }
  180.     
  181.     /**
  182.      * @ORM\PreRemove()
  183.      */
  184.     public function preRemoveUpload()
  185.     {
  186.         $this->temp $this->flagImage;
  187.     }
  188.     
  189.     /**
  190.      * @ORM\PostRemove()
  191.      */
  192.     public function removeUpload()
  193.     {
  194.         $temp $this->getUploadRootDir().'/'.$this->temp;
  195.         if (file_exists($temp)) {
  196.             @unlink($temp);
  197.         }
  198.         $this->removeThumb();
  199.     }
  200.     
  201.     public function getUploadDir()
  202.     {
  203.         return 'uploads/files/country';
  204.     }
  205.     
  206.     protected function getUploadRootDir()
  207.     {
  208.         return __DIR__.'/../../../../public/'.$this->getUploadDir();
  209.     }
  210.     protected function removeThumb()
  211.     {
  212.         $tab = ['117x117''160x100''180x92''214x214''300x200','720x480','900x300''1033x276'];
  213.         foreach ($tab as $type) {
  214.             $url __DIR__.'/../../../../public/media/cache/'.$type.'/'.$this->getUploadDir().'/'.$this->temp;
  215.             if (file_exists($url)) {
  216.                 @unlink($url);
  217.             }
  218.         }
  219.     }
  220.     
  221.     public function getWebPath()
  222.     {
  223.         return $this->getUploadDir().'/'.$this->getFlagImage();
  224.     }
  225.     public function getThumbPath()
  226.     {
  227.         return '/uploads/files/country'.'/'.$this->getFlagImage();
  228.     }
  229.     /**
  230.      * @return Collection<int, City>
  231.      */
  232.     public function getCities(): Collection
  233.     {
  234.         return $this->cities;
  235.     }
  236.     public function addCity(City $city): self
  237.     {
  238.         if (!$this->cities->contains($city)) {
  239.             $this->cities[] = $city;
  240.             $city->setCountry($this);
  241.         }
  242.         return $this;
  243.     }
  244.     public function removeCity(City $city): self
  245.     {
  246.         if ($this->cities->removeElement($city)) {
  247.             // set the owning side to null (unless already changed)
  248.             if ($city->getCountry() === $this) {
  249.                 $city->setCountry(null);
  250.             }
  251.         }
  252.         return $this;
  253.     }
  254.     /**
  255.      * @return Collection<int, Park>
  256.      */
  257.     public function getParks(): Collection
  258.     {
  259.         return $this->parks;
  260.     }
  261.     public function addPark(Park $park): self
  262.     {
  263.         if (!$this->parks->contains($park)) {
  264.             $this->parks[] = $park;
  265.             $park->setCountry($this);
  266.         }
  267.         return $this;
  268.     }
  269.     public function removePark(Park $park): self
  270.     {
  271.         if ($this->parks->removeElement($park)) {
  272.             // set the owning side to null (unless already changed)
  273.             if ($park->getCountry() === $this) {
  274.                 $park->setCountry(null);
  275.             }
  276.         }
  277.         return $this;
  278.     }
  279.     /**
  280.      * @return Collection<int, Transporteur>
  281.      */
  282.     public function getTransporteurs(): Collection
  283.     {
  284.         return $this->transporteurs;
  285.     }
  286.     public function addTransporteur(Transporteur $transporteur): self
  287.     {
  288.         if (!$this->transporteurs->contains($transporteur)) {
  289.             $this->transporteurs[] = $transporteur;
  290.             $transporteur->setCountry($this);
  291.         }
  292.         return $this;
  293.     }
  294.     public function removeTransporteur(Transporteur $transporteur): self
  295.     {
  296.         if ($this->transporteurs->removeElement($transporteur)) {
  297.             // set the owning side to null (unless already changed)
  298.             if ($transporteur->getCountry() === $this) {
  299.                 $transporteur->setCountry(null);
  300.             }
  301.         }
  302.         return $this;
  303.     }
  304.     /**
  305.      * @return Collection<int, Department>
  306.      */
  307.     public function getDepartments(): Collection
  308.     {
  309.         return $this->departments;
  310.     }
  311.     public function addDepartment(Department $department): self
  312.     {
  313.         if (!$this->departments->contains($department)) {
  314.             $this->departments[] = $department;
  315.             $department->setCountry($this);
  316.         }
  317.         return $this;
  318.     }
  319.     public function removeDepartment(Department $department): self
  320.     {
  321.         if ($this->departments->removeElement($department)) {
  322.             // set the owning side to null (unless already changed)
  323.             if ($department->getCountry() === $this) {
  324.                 $department->setCountry(null);
  325.             }
  326.         }
  327.         return $this;
  328.     }
  329.     public function isStatus(): ?bool
  330.     {
  331.         return $this->status;
  332.     }
  333.     public function setStatus(bool $status): self
  334.     {
  335.         $this->status $status;
  336.         return $this;
  337.     }
  338. }