src/Entity/Currency.php line 41

Open in your IDE?
  1. <?php
  2. /**
  3.  * @author Leo BANNHOLTZER (contact@scaledev.fr)
  4.  * @copyright 2021 - ScaleDEV SAS, 12 RUE CHARLES MORET, 10120 ST ANDRE LES VERGERS
  5.  * @license commercial
  6.  */
  7. declare(strict_types=1);
  8. namespace App\Entity;
  9. use Symfony\Component\Uid\Uuid;
  10. use Doctrine\ORM\Mapping as ORM;
  11. use App\Repository\CurrencyRepository;
  12. use Gedmo\Mapping\Annotation as Gedmo;
  13. use App\DoctrineExtensions\IsActiveEntity;
  14. use App\DoctrineExtensions\IsDefaultEntity;
  15. use App\EventListener\CurrencySaveListener;
  16. use Doctrine\Common\Collections\Collection;
  17. use Doctrine\Common\Collections\ArrayCollection;
  18. use Symfony\Bridge\Doctrine\IdGenerator\UuidGenerator;
  19. use App\DoctrineExtensions\Timestampable\Traits\UserTimestampableEntity;
  20. use App\DoctrineExtensions\SoftDeleteable\Traits\UserSoftDeleteableEntity;
  21. /**
  22.  * @ORM\Entity(repositoryClass=CurrencyRepository::class)
  23.  * @ORM\Table(name="currency", indexes={
  24.  *  @ORM\Index(name="name", columns={"name"}),
  25.  *  @ORM\Index(name="iso_code", columns={"iso_code"}),
  26.  *  @ORM\Index(name="change_rate", columns={"change_rate"}),
  27.  *  @ORM\Index(name="is_default", columns={"is_default"}),
  28.  *  @ORM\Index(name="is_active", columns={"is_active"}),
  29.  *  @ORM\Index(name="deleted_at", columns={"deleted_at"}),
  30.  *  @ORM\Index(name="created_at", columns={"created_at"}),
  31.  *  @ORM\Index(name="updated_at", columns={"updated_at"})
  32.  * })
  33.  * @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false, hardDelete=false)
  34.  * @ORM\EntityListeners({CurrencySaveListener::class})
  35.  */
  36. class Currency
  37. {
  38.     use UserTimestampableEntity;
  39.     use UserSoftDeleteableEntity;
  40.     use IsActiveEntity;
  41.     use IsDefaultEntity;
  42.     /**
  43.      * @ORM\Id
  44.      * @ORM\Column(type="uuid")
  45.      * @ORM\GeneratedValue(strategy="CUSTOM")
  46.      * @ORM\CustomIdGenerator(class=UuidGenerator::class)
  47.      */
  48.     private ?Uuid $id null;
  49.     /**
  50.      * @ORM\Column(type="string", length=64)
  51.      */
  52.     private string $name;
  53.     /**
  54.      * @ORM\Column(type="string", length=3)
  55.      */
  56.     private string $iso_code;
  57.     /**
  58.      * @ORM\Column(type="decimal", precision=20, scale=12, options={"default" : "1.000000000000"})
  59.      */
  60.     private string $change_rate;
  61.     /**
  62.      * @ORM\OneToMany(targetEntity=Context::class, mappedBy="currency", fetch="EXTRA_LAZY")
  63.      */
  64.     private Collection $contexts;
  65.     public function __construct()
  66.     {
  67.         $this->contexts = new ArrayCollection();
  68.     }
  69.     /**
  70.      * @return Uuid|null
  71.      */
  72.     public function getId(): ?Uuid
  73.     {
  74.         return $this->id;
  75.     }
  76.     /**
  77.      * @return string
  78.      */
  79.     public function getName(): string
  80.     {
  81.         return $this->name;
  82.     }
  83.     /**
  84.      * @param string $name
  85.      * @return $this
  86.      */
  87.     public function setName(string $name): self
  88.     {
  89.         $this->name $name;
  90.         return $this;
  91.     }
  92.     /**
  93.      * @return string
  94.      */
  95.     public function getIsoCode(): string
  96.     {
  97.         return $this->iso_code;
  98.     }
  99.     /**
  100.      * @param string $iso_code
  101.      * @return $this
  102.      */
  103.     public function setIsoCode(string $iso_code): self
  104.     {
  105.         $this->iso_code $iso_code;
  106.         return $this;
  107.     }
  108.     /**
  109.      * @return string
  110.      */
  111.     public function getChangeRate(): string
  112.     {
  113.         return $this->change_rate;
  114.     }
  115.     /**
  116.      * @param string $change_rate
  117.      * @return $this
  118.      */
  119.     public function setChangeRate(string $change_rate): self
  120.     {
  121.         $this->change_rate $change_rate;
  122.         if (str_contains($this->change_rate'.')) {
  123.             $array explode("."$this->change_rate);
  124.             $after $array[1];
  125.             if (strlen($after) > 12) {
  126.                 $after substr($after012);
  127.             }
  128.             $this->change_rate $array[0] . '.' $after;
  129.         }
  130.         return $this;
  131.     }
  132.     /**
  133.      * @return Collection|Context[]
  134.      */
  135.     public function getContexts(): Collection
  136.     {
  137.         return $this->contexts;
  138.     }
  139.     /**
  140.      * @param Context $context
  141.      * @return $this
  142.      */
  143.     public function addContext(Context $context): self
  144.     {
  145.         if (!$this->contexts->contains($context)) {
  146.             $this->contexts[] = $context;
  147.             $context->setCurrency($this);
  148.         }
  149.         return $this;
  150.     }
  151. }