src/Entity/OnlineShop/Family.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\Entity\OnlineShop;
  3. use App\Annotation\SiteAware;
  4. use App\Entity\AbstractBase;
  5. use App\Entity\Interfaces\PublishedInterface;
  6. use App\Entity\Interfaces\SiteInterface;
  7. use App\Entity\MiniAbstractBase;
  8. use App\Entity\Traits\NameTrait;
  9. use App\Entity\Traits\PublishedTrait;
  10. use App\Entity\Traits\SiteTrait;
  11. use App\Entity\User;
  12. use App\Entity\UserGroup;
  13. use App\Persistence\Model\UserGroupAccessType;
  14. use App\Repository\OnlineShop\FamilyRepository;
  15. use Doctrine\Common\Collections\ArrayCollection;
  16. use Doctrine\Common\Collections\Collection;
  17. use Doctrine\ORM\Mapping as ORM;
  18. use Gedmo\Mapping\Annotation as Gedmo;
  19. /**
  20.  * @ORM\Table(name="vulco_family", indexes={@ORM\Index(name="family_site_idx", columns={"site"})})
  21.  * @ORM\Entity(repositoryClass=FamilyRepository::class)
  22.  * @Gedmo\SoftDeleteable(fieldName="removedAt", timeAware=false)
  23.  * @SiteAware(siteFieldName="site")
  24.  */
  25. class Family extends AbstractBase implements SiteInterfacePublishedInterface
  26. {
  27.     use NameTrait;
  28.     use PublishedTrait;
  29.     use SiteTrait;
  30.     /**
  31.      * @ORM\Column(type="string", length=200)
  32.      */
  33.     private string $name;
  34.     /**
  35.      * @ORM\Column(type="user_group_access_type", nullable=false, options={"ignore"})
  36.      */
  37.     private UserGroupAccessType $userGroupAccessType;
  38.     /**
  39.      * @ORM\Column(type="user_group_access_type", nullable=false, options={"ignore"})
  40.      */
  41.     private UserGroupAccessType $userAccessType;
  42.     /**
  43.      * @ORM\ManyToOne(targetEntity="App\Entity\OnlineShop\Supplier", fetch="EAGER")
  44.      * @ORM\JoinColumn(name="supplier_id", referencedColumnName="id")
  45.      */
  46.     private Supplier $supplier;
  47.     /**
  48.      * @ORM\ManyToOne(targetEntity="App\Entity\OnlineShop\SuperFamily", inversedBy="families", fetch="EAGER")
  49.      * @ORM\JoinColumn(name="super_family_id", referencedColumnName="id")
  50.      */
  51.     private SuperFamily $superFamily;
  52.     /**
  53.      * @ORM\ManyToMany(targetEntity="App\Entity\OnlineShop\FamilyLinealDiscount", orphanRemoval=true, cascade={"persist"})
  54.      * @ORM\JoinTable(name="vulco_family_lineal_discount",
  55.      *     joinColumns={@ORM\JoinColumn(name="family_id", referencedColumnName="id")},
  56.      *     inverseJoinColumns={@ORM\JoinColumn(name="family_lineal_discount_id", referencedColumnName="id", unique=true)}
  57.      * )
  58.      */
  59.     private ?Collection $linealDiscounts;
  60.     /**
  61.      * @ORM\ManyToMany(targetEntity="App\Entity\UserGroup", inversedBy="families")
  62.      * @ORM\JoinTable(name="vulco_families_user_groups",
  63.      *     joinColumns={@ORM\JoinColumn(name="family_id", referencedColumnName="id")},
  64.      *     inverseJoinColumns={@ORM\JoinColumn(name="user_group_id", referencedColumnName="id")}
  65.      * )
  66.      */
  67.     private ?Collection $userGroups;
  68.     /**
  69.      * @ORM\ManyToMany(targetEntity="App\Entity\User")
  70.      * @ORM\JoinTable(name="vulco_families_users",
  71.      *     joinColumns={@ORM\JoinColumn(name="family_id", referencedColumnName="id")},
  72.      *     inverseJoinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}
  73.      * )
  74.      */
  75.     private ?Collection $users;
  76.     /**
  77.      * @ORM\OneToOne(targetEntity="App\Entity\OnlineShop\FamilyNoLinealDiscount", orphanRemoval=true, cascade={"persist"})
  78.      * @ORM\JoinColumn(name="family_no_lineal_discount_id", referencedColumnName="id")
  79.      */
  80.     private FamilyNoLinealDiscount $noLinealDiscount;
  81.     public function __construct()
  82.     {
  83.         $this->userGroupAccessType = new UserGroupAccessType(UserGroupAccessType::getDefaultCode());
  84.         $this->userAccessType = new UserGroupAccessType(UserGroupAccessType::getDefaultCode());
  85.         $this->linealDiscounts = new ArrayCollection();
  86.         $this->userGroups = new ArrayCollection();
  87.         $this->users = new ArrayCollection();
  88.     }
  89.     public function getUserGroupAccessType(): UserGroupAccessType
  90.     {
  91.         return $this->userGroupAccessType;
  92.     }
  93.     public function setUserGroupAccessType(UserGroupAccessType $userGroupAccessType): self
  94.     {
  95.         $this->userGroupAccessType $userGroupAccessType;
  96.         return $this;
  97.     }
  98.     public function getUserAccessType(): UserGroupAccessType
  99.     {
  100.         return $this->userAccessType;
  101.     }
  102.     public function setUserAccessType(UserGroupAccessType $userAccessType): self
  103.     {
  104.         $this->userAccessType $userAccessType;
  105.         return $this;
  106.     }
  107.     public function getSupplier(): Supplier
  108.     {
  109.         return $this->supplier;
  110.     }
  111.     public function setSupplier(Supplier $supplier): self
  112.     {
  113.         $this->supplier $supplier;
  114.         return $this;
  115.     }
  116.     public function getSuperFamily(): SuperFamily
  117.     {
  118.         return $this->superFamily;
  119.     }
  120.     public function setSuperFamily(SuperFamily $superFamily): self
  121.     {
  122.         $this->superFamily $superFamily;
  123.         return $this;
  124.     }
  125.     public function getLinealDiscounts(): ?Collection
  126.     {
  127.         return $this->linealDiscounts;
  128.     }
  129.     public function setLinealDiscounts(?Collection $linealDiscounts): self
  130.     {
  131.         $this->linealDiscounts $linealDiscounts;
  132.         return $this;
  133.     }
  134.     public function addLinealDiscount(FamilyLinealDiscount $discount): self
  135.     {
  136.         if (!$this->linealDiscounts->contains($discount)) {
  137.             $this->linealDiscounts->add($discount);
  138.         }
  139.         return $this;
  140.     }
  141.     public function removeLinealDiscount(FamilyLinealDiscount $discount): self
  142.     {
  143.         if ($this->linealDiscounts->contains($discount)) {
  144.             $this->linealDiscounts->removeElement($discount);
  145.         }
  146.         return $this;
  147.     }
  148.     public function getUserGroups(): ?Collection
  149.     {
  150.         return $this->userGroups;
  151.     }
  152.     public function setUserGroups(?Collection $userGroups): self
  153.     {
  154.         $this->userGroups $userGroups;
  155.         return $this;
  156.     }
  157.     public function addUserGroup(UserGroup $userGroup): self
  158.     {
  159.         if (!$this->userGroups->contains($userGroup)) {
  160.             $this->userGroups->add($userGroup);
  161.             $userGroup->addFamilie($this);
  162.         }
  163.         return $this;
  164.     }
  165.     public function removeUserGroup(UserGroup $userGroup): self
  166.     {
  167.         if ($this->userGroups->contains($userGroup)) {
  168.             $this->userGroups->removeElement($userGroup);
  169.         }
  170.         return $this;
  171.     }
  172.     public function getUsers(): ?Collection
  173.     {
  174.         return $this->users;
  175.     }
  176.     public function setUsers(?Collection $users): self
  177.     {
  178.         $this->users $users;
  179.         return $this;
  180.     }
  181.     public function addUser(User $user): self
  182.     {
  183.         if (!$this->users->contains($user)) {
  184.             $this->users->add($user);
  185.         }
  186.         return $this;
  187.     }
  188.     public function removeUser(User $user): self
  189.     {
  190.         if ($this->users->contains($user)) {
  191.             $this->users->removeElement($user);
  192.         }
  193.         return $this;
  194.     }
  195.     public function getNoLinealDiscount(): FamilyNoLinealDiscount
  196.     {
  197.         return $this->noLinealDiscount;
  198.     }
  199.     public function setNoLinealDiscount(FamilyNoLinealDiscount $noLinealDiscount): self
  200.     {
  201.         $this->noLinealDiscount $noLinealDiscount;
  202.         return $this;
  203.     }
  204.     public function __toString(): string
  205.     {
  206.         return $this->id $this->getName() : MiniAbstractBase::DEFAULT_EMPTY_STRING;
  207.     }
  208. }