src/Admin/Entity/StdDomainsValues.php line 32

Open in your IDE?
  1. <?php
  2. namespace App\Admin\Entity;
  3. use App\Admin\Enum\DomainValueType;
  4. use Doctrine\ORM\Mapping as ORM;
  5. use Doctrine\Common\Collections\ArrayCollection;
  6. use Doctrine\Common\Collections\Collection;
  7. use Doctrine\Common\Collections\Criteria;
  8. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  9. /**
  10.  * StdDomainsValues
  11.  */
  12. #[ORM\Table(name'std_domains_values')]
  13. #[ORM\Index(name'FK_std_domains_values_std_users'columns: ['created_by'])]
  14. #[ORM\Index(name'FK_std_domains_values_std_languages'columns: ['language_code'])]
  15. #[ORM\Index(name'FK_std_domains_values_std_users_2'columns: ['updated_by'])]
  16. #[ORM\Index(name'IDX_3A0935D7115F0EE5'columns: ['domain_id'])]
  17. #[ORM\Index(name'FK_std_domains_values_std_domains_values'columns: ['parent_domain_value_id'])]
  18. #[ORM\Index(name'idx_erp_code'columns: ['erp_code'])]
  19. #[ORM\UniqueConstraint(name'machine_name_domain_language_code_machine_name'columns: ['domain_id''language_code''machine_name'])]
  20. #[ORM\Entity(repositoryClass'App\Admin\Repository\StdDomainsValuesRepository')]
  21. #[UniqueEntity(
  22.     fields: ['description''domain'],
  23.     message'domains_unique_value',
  24. )]
  25. #[UniqueEntity(
  26.     fields'erpCode',
  27.     message'domains_unique_erpcode',
  28. )]
  29. class StdDomainsValues
  30. {
  31.     /**
  32.      * @var int
  33.      */
  34.     #[ORM\Column(name'id'type'integer'nullablefalse)]
  35.     #[ORM\Id]
  36.     #[ORM\GeneratedValue(strategy'IDENTITY')]
  37.     private $id;
  38.     /**
  39.      * @var string|null
  40.      */
  41.     #[ORM\Column(name'machine_name'type'string'length50nullabletrue)]
  42.     private $machineName;
  43.     /**
  44.      * @var string|null
  45.      */
  46.     #[ORM\Column(name'description'type'string'length50nullabletrue)]
  47.     private $description;
  48.     /**
  49.      * @var bool|null
  50.      */
  51.     #[ORM\Column(name'is_active'type'boolean'nullabletrueoptions: ['default' => 1])]
  52.     private $isActive '1';
  53.     /**
  54.      * @var \DateTime|null
  55.      */
  56.     #[ORM\Column(name'created_date'type'datetime'nullabletrue)]
  57.     private $createdDate;
  58.     /**
  59.      * @var \DateTime|null
  60.      */
  61.     #[ORM\Column(name'updated_date'type'datetime'nullabletrue)]
  62.     private $updatedDate;
  63.     /**
  64.      * @var \StdUsers
  65.      */
  66.     #[ORM\JoinColumn(name'updated_by'referencedColumnName'id')]
  67.     #[ORM\ManyToOne(targetEntity'StdUsers')]
  68.     private $updatedBy;
  69.     /**
  70.      * @var \StdLanguages
  71.      */
  72.     #[ORM\JoinColumn(name'language_code'referencedColumnName'language_code')]
  73.     #[ORM\ManyToOne(targetEntity'StdLanguages')]
  74.     private $languageCode;
  75.     /**
  76.      * @var \StdUsers
  77.      */
  78.     #[ORM\JoinColumn(name'created_by'referencedColumnName'id')]
  79.     #[ORM\ManyToOne(targetEntity'StdUsers')]
  80.     private $createdBy;
  81.     /**
  82.      * @var \StdDomains
  83.      */
  84.     #[ORM\JoinColumn(name'domain_id'referencedColumnName'id')]
  85.     #[ORM\ManyToOne(targetEntity'StdDomains'inversedBy'values')]
  86.     private $domain;
  87.     /**
  88.      * @var StdDomainsValues
  89.      */
  90.     #[ORM\JoinColumn(name'parent_domain_value_id'referencedColumnName'id')]
  91.     #[ORM\ManyToOne(targetEntity'StdDomainsValues'inversedBy'childrenDomainsValues')]
  92.     private $parentDomainValue;
  93.     /**
  94.      * @var Doctrine\Common\Collections\ArrayCollection|null
  95.      */
  96.     #[ORM\OneToMany(targetEntity'StdDomainsValues'mappedBy'parentDomainValue'cascade: ['persist'])]
  97.     private $childrenDomainsValues;
  98.     /**
  99.      * @var Doctrine\Common\Collections\ArrayCollection|null
  100.      */
  101.     #[ORM\OneToMany(targetEntity'StdDomainsValuesContent'mappedBy'domainValue'cascade: ['persist''remove'], orphanRemovaltrue)]
  102.     private $contents;
  103.     /**
  104.      * @var string|null
  105.      */
  106.     #[ORM\Column(name'erp_code'type'string'length50nullabletrue)]
  107.     private $erpCode;
  108.     #[ORM\Column(name'domain_type'type'string'length255nullabletrueoptions: ['default' => DomainValueType::Generic->value])]
  109.     private ?string $type DomainValueType::Generic->value;
  110.     #[ORM\Column(name'icon'type'string'length255nullabletrue)]
  111.     private $icon;
  112.     /**
  113.      * @var int|null
  114.      */
  115.     #[ORM\Column(name'order_value'type'integer'length10nullabletrue)]
  116.     private $orderValue;
  117.     #[ORM\OneToOne(targetEntityStdGeoMap::class, inversedBy'domainValue')]
  118.     #[ORM\JoinColumn(name'geo_map_id'referencedColumnName'id'nullabletrue)]
  119.     private $geoMap;
  120.     public function __construct()
  121.     {
  122.         $this->contents = new ArrayCollection();
  123.         $this->childrenDomainsValues = new ArrayCollection();
  124.     } 
  125.     public function getId(): ?int
  126.     {
  127.         return $this->id;
  128.     }
  129.     public function getMachineName(): ?string
  130.     {
  131.         return $this->machineName;
  132.     }
  133.     public function setMachineName(?string $machineName): self
  134.     {
  135.         $this->machineName $machineName;
  136.         return $this;
  137.     }
  138.     public function getDescription(): ?string
  139.     {
  140.         return $this->description;
  141.     }
  142.     public function setDescription(?string $description): self
  143.     {
  144.         $this->description $description;
  145.         return $this;
  146.     }
  147.     public function getIsActive(): ?bool
  148.     {
  149.         return $this->isActive;
  150.     }
  151.     public function setIsActive(?bool $isActive): self
  152.     {
  153.         $this->isActive $isActive;
  154.         return $this;
  155.     }
  156.     public function getCreatedDate(): ?\DateTimeInterface
  157.     {
  158.         return $this->createdDate;
  159.     }
  160.     public function setCreatedDate(?\DateTimeInterface $createdDate): self
  161.     {
  162.         $this->createdDate $createdDate;
  163.         return $this;
  164.     }
  165.     public function getUpdatedDate(): ?\DateTimeInterface
  166.     {
  167.         return $this->updatedDate;
  168.     }
  169.     public function setUpdatedDate(?\DateTimeInterface $updatedDate): self
  170.     {
  171.         $this->updatedDate $updatedDate;
  172.         return $this;
  173.     }
  174.     public function getUpdatedBy(): ?StdUsers
  175.     {
  176.         return $this->updatedBy;
  177.     }
  178.     public function setUpdatedBy(?StdUsers $updatedBy): self
  179.     {
  180.         $this->updatedBy $updatedBy;
  181.         return $this;
  182.     }
  183.     public function getLanguageCode(): ?StdLanguages
  184.     {
  185.         return $this->languageCode;
  186.     }
  187.     public function setLanguageCode(?StdLanguages $languageCode): self
  188.     {
  189.         $this->languageCode $languageCode;
  190.         return $this;
  191.     }
  192.     public function getCreatedBy(): ?StdUsers
  193.     {
  194.         return $this->createdBy;
  195.     }
  196.     public function setCreatedBy(?StdUsers $createdBy): self
  197.     {
  198.         $this->createdBy $createdBy;
  199.         return $this;
  200.     }
  201.     public function getDomain(): ?StdDomains
  202.     {
  203.         return $this->domain;
  204.     }
  205.     public function setDomain(?StdDomains $domain): self
  206.     {
  207.         $this->domain $domain;
  208.         return $this;
  209.     }
  210.     public function getParentDomainValue(): ?StdDomainsValues
  211.     {
  212.         return $this->parentDomainValue;
  213.     }
  214.     public function setParentDomainValue(?StdDomainsValues $parentDomainValue): self
  215.     {
  216.         $this->parentDomainValue $parentDomainValue;
  217.         return $this;
  218.     }  
  219.     /**
  220.      * @return Collection|EcmShippingMethodsContent[]
  221.      */
  222.     public function getChildrenDomainsValues(): ?Collection
  223.     {
  224.         return $this->childrenDomainsValues;
  225.     }
  226.     /**
  227.      * @return Collection|EcmShippingMethodsContent[]
  228.      */
  229.     public function getContents(): ?Collection
  230.     {
  231.         return $this->contents;
  232.     }
  233.     public function removeContent(StdDomainsValuesContent $content): self
  234.     {
  235.         if ($this->contents->contains($content)) {
  236.             $this->contents->removeElement($content);
  237.             // set the owning side to null (unless already changed)
  238.             if ($content->getDomainValue() === $this) {
  239.                 $content->setDomainValue(null);
  240.             }
  241.         }
  242.         return $this;
  243.     }
  244.     public function addContent(StdDomainsValuesContent $content): self
  245.     {
  246.         if (!$this->contents->contains($content)) {
  247.             $this->contents[] = $content;
  248.             $content->setDomainValue($this);
  249.         }
  250.         return $this;
  251.     }
  252.     public function getLocalizedContents(StdLanguages $locale): ?StdDomainsValuesContent
  253.     {
  254.         $criteria Criteria::create()
  255.         ->where(Criteria::expr()->eq("languageCode"$locale))
  256.         ->setMaxResults(1);
  257.         if($this->getContents()){
  258.             $contents $this->getContents()->matching($criteria);
  259.             if(count($contents)){
  260.                 $contents array_values($contents->toArray());
  261.                 return $contents[0];
  262.             }else{
  263.                 return null;
  264.             }
  265.         }else{
  266.             return null;
  267.         }
  268.         
  269.     }
  270.     public function getErpCode(): ?string
  271.     {
  272.         return $this->erpCode;
  273.     }
  274.     public function setErpCode(?string $erpCode): self
  275.     {
  276.         $this->erpCode $erpCode;
  277.         return $this;
  278.     }
  279.     public function getOrderValue(): ?int
  280.     {
  281.         return $this->orderValue;
  282.     }
  283.     public function setOrderValue(?int $orderValue): self
  284.     {
  285.         $this->orderValue $orderValue;
  286.         return $this;
  287.     }
  288.     public function getType(): ?DomainValueType
  289.     {
  290.         return $this->type DomainValueType::from($this->type) : null;
  291.     }
  292.     public function setType(DomainValueType|string|null $type): self
  293.     {
  294.         if ($type instanceof DomainValueType) {
  295.             $this->type $type->value;
  296.         } else {
  297.             $this->type $type;
  298.         }
  299.         return $this;
  300.     }
  301.     public function getGeoMap(): ?StdGeoMap
  302.     {
  303.         return $this->geoMap;
  304.     }
  305.     public function setGeoMap(?StdGeoMap $geoMap): self
  306.     {
  307.         $this->geoMap $geoMap;
  308.         return $this;
  309.     }
  310.     /**
  311.      * @return mixed
  312.      */
  313.     public function getIcon()
  314.     {
  315.         return $this->icon;
  316.     }
  317.     /**
  318.      * @param mixed $icon
  319.      */
  320.     public function setIcon($icon): void
  321.     {
  322.         $this->icon $icon;
  323.     }
  324.     /**
  325.      * Get all ancestor IDs (parent, grandparent, etc.)
  326.      * 
  327.      * @return array
  328.      */
  329.     public function getAncestorIds(): array
  330.     {
  331.         $ancestorIds = [];
  332.         $current $this->parentDomainValue;
  333.         
  334.         while ($current !== null) {
  335.             $ancestorIds[] = $current->getId();
  336.             $current $current->getParentDomainValue();
  337.         }
  338.         
  339.         return $ancestorIds;
  340.     }
  341.     /**
  342.      * Get all descendant IDs (children, grandchildren, etc.)
  343.      * 
  344.      * @return array
  345.      */
  346.     public function getDescendantIds(): array
  347.     {
  348.         $descendantIds = [];
  349.         
  350.         foreach ($this->childrenDomainsValues as $child) {
  351.             $descendantIds[] = $child->getId();
  352.             // Recursively get descendants of this child
  353.             $descendantIds array_merge($descendantIds$child->getDescendantIds());
  354.         }
  355.         
  356.         return $descendantIds;
  357.     }
  358. }