src/Entity/Producer.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\ProducerRepository;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\DBAL\Types\Types;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use Gedmo\Blameable\Traits\BlameableEntity;
  9. use Gedmo\Timestampable\Traits\TimestampableEntity;
  10. use Knp\DoctrineBehaviors\Contract\Entity\TranslatableInterface;
  11. use Knp\DoctrineBehaviors\Model\Translatable\TranslatableTrait;
  12. use Symfony\Component\PropertyAccess\PropertyAccess;
  13. use Symfony\Component\Validator\Constraints as Assert;
  14. #[ORM\Entity(repositoryClassProducerRepository::class)]
  15. class Producer implements TranslatableInterface
  16. {
  17.     use BlameableEntity//Hook blameable behaviour. Updates createdBy, updatedBy fields
  18.     use TimestampableEntity//Hook timestampable behaviour. Updates createdAt, updatedAt fields 
  19.     use TranslatableTrait;
  20.     #[ORM\Id]
  21.     #[ORM\GeneratedValue(strategy"IDENTITY")]
  22.     #[ORM\Column]
  23.     private ?int $id null;
  24.     #[ORM\Column(length255)]
  25.     #[Assert\NotNull()]
  26.     #[Assert\Length(max255)]
  27.     private ?string $name null;
  28.     
  29.     #[ORM\OneToMany(mappedBy'producer'targetEntityProduct::class)]
  30.     private Collection $products;
  31.     #[ORM\OneToMany(mappedBy'producer'targetEntityMedia::class, cascade: ["persist""remove"])]
  32.     #[ORM\OrderBy(["position" => "ASC"])]
  33.     private Collection $media;
  34.     #[ORM\Column(length25nullabletrue)]
  35.     #[Assert\Length(max25)]
  36.     private ?string $cif null;
  37.     #[ORM\ManyToOne(inversedBy'producers'cascade:["persist"])]
  38.     #[Assert\Valid()]
  39.     private ?Address $address null;
  40.     #[ORM\Column(length100nullabletrue)]
  41.     #[Assert\Length(max100)]
  42.     private ?string $contactName null;
  43.     #[ORM\Column(length50nullabletrue)]
  44.     #[Assert\Length(max50)]
  45.     private ?string $contactPhone null;
  46.     #[ORM\Column(length255nullabletrue)]
  47.     #[Assert\Length(max255)]
  48.     #[Assert\Email()]
  49.     private ?string $contactEmail null;
  50.     #[ORM\Column(length255nullabletrue)]
  51.     #[Assert\Length(max255)]
  52.     private ?string $paymentMethod null;
  53.     #[ORM\Column(length255nullabletrue)]
  54.     #[Assert\Length(max255)]
  55.     private ?string $paymentTerms null;
  56.     #[ORM\Column(length500nullabletrue)]
  57.     private ?string $holdedId null;
  58.     #[ORM\Column(length255nullabletrue)]
  59.     #[Assert\Length(max255)]
  60.     private ?string $socialReason null;
  61.     #[ORM\Column(type'boolean'options: ['default' => false])]
  62.     private ?bool $selfShip false;
  63.     #[ORM\OneToMany(mappedBy'Producer'targetEntityProductUnique::class)]
  64.     private Collection $productUniques;
  65.     #[ORM\Column(type'integer'nullabletrue)]
  66.     private int $ordersMinimumRequired;
  67.     public function __call($method$arguments)
  68.     {
  69.         return $this->proxyCurrentLocaleTranslation($method$arguments);
  70.     }
  71.     public function __construct()
  72.     {
  73.         $this->products = new ArrayCollection();
  74.         $this->media = new ArrayCollection();
  75.         $this->productUniques = new ArrayCollection();
  76.     }
  77.     
  78.     public function __toString()
  79.     {
  80.         return $this->name;
  81.     }
  82.     public function getId(): ?int
  83.     {
  84.         return $this->id;
  85.     }
  86.     
  87.     public function getName(): ?string
  88.     {
  89.         return $this->name;
  90.     }
  91.     public function setName(string $name): self
  92.     {
  93.         $this->name $name;
  94.         return $this;
  95.     }
  96.     /**
  97.      * @return Collection<int, Product>
  98.      */
  99.     public function getProducts(): Collection
  100.     {
  101.         return $this->products;
  102.     }
  103.     public function addProduct(Product $product): self
  104.     {
  105.         if (!$this->products->contains($product)) {
  106.             $this->products->add($product);
  107.             $product->setProducer($this);
  108.         }
  109.         return $this;
  110.     }
  111.     public function removeProduct(Product $product): self
  112.     {
  113.         if ($this->products->removeElement($product)) {
  114.             // set the owning side to null (unless already changed)
  115.             if ($product->getProducer() === $this) {
  116.                 $product->setProducer(null);
  117.             }
  118.         }
  119.         return $this;
  120.     }
  121.  
  122.     /**
  123.      * Main image is the one that have position 0
  124.      * @return Media|null
  125.      */
  126.     public function getMainProducerImage(): ?Media
  127.     {
  128.         if ($this->media) {
  129.             $filteredProducerImages $this->media->filter(function (Media $producerImage) {
  130.                 return $producerImage->getPosition() == 0;
  131.             });
  132.             return (count($filteredProducerImages) > ) ? $filteredProducerImages->first() : null
  133.         } else {
  134.             return null;
  135.         }
  136.     }
  137.     /**
  138.      * @return Collection<int, Media>
  139.      */
  140.     public function getMedia(): Collection
  141.     {
  142.         return $this->media;
  143.     }
  144.     public function addMedium(Media $medium): self
  145.     {
  146.         if (!$this->media->contains($medium)) {
  147.             $medium->setDirectory('producer');
  148.             $this->media->add($medium);
  149.             $medium->setProducer($this);
  150.         }
  151.         return $this;
  152.     }
  153.     public function removeMedium(Media $medium): self
  154.     {
  155.         if ($this->media->removeElement($medium)) {
  156.             // set the owning side to null (unless already changed)
  157.             if ($medium->getProducer() === $this) {
  158.                 $medium->setProducer(null);
  159.             }
  160.         }
  161.         return $this;
  162.     }
  163.     public function getCif(): ?string
  164.     {
  165.         return $this->cif;
  166.     }
  167.     public function setCif(?string $cif): self
  168.     {
  169.         $this->cif $cif;
  170.         return $this;
  171.     }
  172.     public function getAddress(): ?Address
  173.     {
  174.         return $this->address;
  175.     }
  176.     public function setAddress(?Address $address): self
  177.     {
  178.         $this->address $address;
  179.         return $this;
  180.     }
  181.     public function getContactName(): ?string
  182.     {
  183.         return $this->contactName;
  184.     }
  185.     public function setContactName(?string $contactName): self
  186.     {
  187.         $this->contactName $contactName;
  188.         return $this;
  189.     }
  190.     public function getContactPhone(): ?string
  191.     {
  192.         return $this->contactPhone;
  193.     }
  194.     public function setContactPhone(?string $contactPhone): self
  195.     {
  196.         $this->contactPhone $contactPhone;
  197.         return $this;
  198.     }
  199.     public function getContactEmail(): ?string
  200.     {
  201.         return $this->contactEmail;
  202.     }
  203.     public function setContactEmail(?string $contactEmail): self
  204.     {
  205.         $this->contactEmail $contactEmail;
  206.         return $this;
  207.     }
  208.     public function getPaymentMethod(): ?string
  209.     {
  210.         return $this->paymentMethod;
  211.     }
  212.     public function setPaymentMethod(?string $paymentMethod): self
  213.     {
  214.         $this->paymentMethod $paymentMethod;
  215.         return $this;
  216.     }
  217.     public function getPaymentTerms(): ?string
  218.     {
  219.         return $this->paymentTerms;
  220.     }
  221.     public function setPaymentTerms(?string $paymentTerms): self
  222.     {
  223.         $this->paymentTerms $paymentTerms;
  224.         return $this;
  225.     }
  226.     public function getHoldedId(): ?string
  227.     {
  228.         return $this->holdedId;
  229.     }
  230.     public function setHoldedId(?string $holdedId): self
  231.     {
  232.         $this->holdedId $holdedId;
  233.         return $this;
  234.     }
  235.     public function getSocialReason(): ?string
  236.     {
  237.         return $this->socialReason;
  238.     }
  239.     public function setSocialReason(?string $socialReason): self
  240.     {
  241.         $this->socialReason $socialReason;
  242.         return $this;
  243.     }
  244.     public function setSelfShip(bool $IsSelfShip): self
  245.     {
  246.         $this->selfShip $IsSelfShip;
  247.         return $this;
  248.     }
  249.     public function getSelfShip(): bool
  250.     {
  251.         return $this->selfShip;
  252.     }
  253.     /**
  254.      * @return Collection<int, ProductUnique>
  255.      */
  256.     public function getProductUniques(): Collection
  257.     {
  258.         return $this->productUniques;
  259.     }
  260.     public function addProductUnique(ProductUnique $productUnique): self
  261.     {
  262.         if (!$this->productUniques->contains($productUnique)) {
  263.             $this->productUniques->add($productUnique);
  264.             $productUnique->setProducer($this);
  265.         }
  266.         return $this;
  267.     }
  268.     public function removeProductUnique(ProductUnique $productUnique): self
  269.     {
  270.         if ($this->productUniques->removeElement($productUnique)) {
  271.             // set the owning side to null (unless already changed)
  272.             if ($productUnique->getProducer() === $this) {
  273.                 $productUnique->setProducer(null);
  274.             }
  275.         }
  276.         return $this;
  277.     }
  278.     public function getOrdersMinimumRequired(): int
  279.     {
  280.         return $this->ordersMinimumRequired ?? 0;
  281.     }
  282.     public function setOrdersMinimumRequired(int $ordersMinimumRequired): self
  283.     {
  284.         $this->ordersMinimumRequired $ordersMinimumRequired;
  285.         return $this;
  286.     }
  287. }