src/Entity/TaxRuleCountry.php line 37

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 Gedmo\Mapping\Annotation as Gedmo;
  12. use App\Repository\TaxRuleCountryRepository;
  13. use Symfony\Bridge\Doctrine\IdGenerator\UuidGenerator;
  14. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  15. use App\DoctrineExtensions\Timestampable\Traits\UserTimestampableEntity;
  16. use App\DoctrineExtensions\SoftDeleteable\Traits\UserSoftDeleteableEntity;
  17. /**
  18.  * @ORM\Entity(repositoryClass=TaxRuleCountryRepository::class)
  19.  * @ORM\Table(name="tax_rule_country", indexes={
  20.  *  @ORM\Index(name="deleted_at", columns={"deleted_at"}),
  21.  *  @ORM\Index(name="created_at", columns={"created_at"}),
  22.  *  @ORM\Index(name="updated_at", columns={"updated_at"})
  23.  * })
  24.  * @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false, hardDelete=false)
  25.  * @UniqueEntity(
  26.  *     fields={"tax_rule", "tax", "country"},
  27.  *     errorPath="tax_rule",
  28.  *     message="This association between the tax and the country already exists for this tax rule.",
  29.  *     ignoreNull=false
  30.  * )
  31.  */
  32. class TaxRuleCountry implements \JsonSerializable
  33. {
  34.     use UserTimestampableEntity;
  35.     use UserSoftDeleteableEntity;
  36.     /**
  37.      * @ORM\Id
  38.      * @ORM\Column(type="uuid")
  39.      * @ORM\GeneratedValue(strategy="CUSTOM")
  40.      * @ORM\CustomIdGenerator(class=UuidGenerator::class)
  41.      */
  42.     private ?Uuid $id null;
  43.     /**
  44.      * @ORM\ManyToOne(targetEntity=TaxRule::class, inversedBy="taxRuleCountries")
  45.      * @ORM\JoinColumn(nullable=false)
  46.      */
  47.     private TaxRule $tax_rule;
  48.     /**
  49.      * @ORM\ManyToOne(targetEntity=Tax::class, inversedBy="taxRuleCountries")
  50.      * @ORM\JoinColumn(nullable=false)
  51.      */
  52.     private Tax $tax;
  53.     /**
  54.      * @ORM\ManyToOne(targetEntity=Country::class, inversedBy="taxRuleCountries")
  55.      * @ORM\JoinColumn(nullable=false)
  56.      */
  57.     private Country $country;
  58.     /**
  59.      * @return Uuid|null
  60.      */
  61.     public function getId(): ?Uuid
  62.     {
  63.         return $this->id;
  64.     }
  65.     /**
  66.      * @return TaxRule
  67.      */
  68.     public function getTaxRule(): TaxRule
  69.     {
  70.         return $this->tax_rule;
  71.     }
  72.     /**
  73.      * @param TaxRule $tax_rule
  74.      * @return $this
  75.      */
  76.     public function setTaxRule(TaxRule $tax_rule): self
  77.     {
  78.         $this->tax_rule $tax_rule;
  79.         return $this;
  80.     }
  81.     /**
  82.      * @return Tax
  83.      */
  84.     public function getTax(): Tax
  85.     {
  86.         return $this->tax;
  87.     }
  88.     /**
  89.      * @param Tax $tax
  90.      * @return $this
  91.      */
  92.     public function setTax(Tax $tax): self
  93.     {
  94.         $this->tax $tax;
  95.         return $this;
  96.     }
  97.     /**
  98.      * @return Country
  99.      */
  100.     public function getCountry(): Country
  101.     {
  102.         return $this->country;
  103.     }
  104.     /**
  105.      * @param Country $country
  106.      * @return $this
  107.      */
  108.     public function setCountry(Country $country): self
  109.     {
  110.         $this->country $country;
  111.         return $this;
  112.     }
  113.     /**
  114.      * @return mixed
  115.      */
  116.     #[\ReturnTypeWillChange]
  117.     public function jsonSerialize()
  118.     {
  119.         return [
  120.             'id' => $this->id,
  121.             'tax_rule' => $this->tax_rule,
  122.             'tax' => $this->tax,
  123.             'country' => $this->country
  124.         ];
  125.     }
  126. }