src/Entity/Menu.php line 34
<?phpnamespace App\Entity;use Ramsey\Uuid\Uuid;use App\Trait\UuidTrait;use ApiPlatform\Metadata\Get;use ApiPlatform\Metadata\Put;use ApiPlatform\Metadata\Post;use ApiPlatform\Metadata\Patch;use ApiPlatform\Metadata\Delete;use Doctrine\ORM\Mapping as ORM;use App\Controller\MenuController;use App\Repository\MenuRepository;use ApiPlatform\Metadata\ApiResource;use ApiPlatform\Metadata\GetCollection;use Doctrine\Common\Collections\Collection;use Doctrine\Common\Collections\ArrayCollection;use Symfony\Component\Serializer\Annotation\Groups;use Symfony\Component\Validator\Constraints as Assert;#[ORM\Entity(repositoryClass: MenuRepository::class)]#[ApiResource(operations: [new GetCollection(controller: MenuController::class),new Post(validationContext: ['groups' => ['Default', 'menu:create']], denormalizationContext: ['groups' => ['menu:create']]),new Get(),new Put(denormalizationContext: ['groups' => ['menu:update']]),new Patch(denormalizationContext: ['groups' => ['menu:update']]),new Delete(),],normalizationContext: ['groups' => ['menu:read', 'uuid']],)]class Menu{use UuidTrait;#[Assert\NotNull(groups: ['menu:create'])]#[Groups(['menu:read', 'menu:create', 'menu:update'])]#[ORM\ManyToOne]#[ORM\JoinColumn(nullable: false)]private ?Empresa $empresa = null;#[Assert\NotNull(groups: ['menu:create'])]#[Groups(['menu:read', 'menu:create', 'menu:update'])]#[ORM\Column(length: 255)]private ?string $nombre = null;#[Groups(['menu:read', 'menu:create', 'menu:update'])]#[ORM\Column]private ?bool $isActive = null;#[Assert\NotNull(groups: ['menu:create'])]#[Groups(['menu:read', 'menu:create', 'menu:update'])]#[ORM\Column(length: 255)]private ?string $icon = null;#[Groups(['menu:read', 'menu:create', 'menu:update'])]#[ORM\Column(length: 255, nullable: true)]private ?string $link = null;#[Groups(['menu:read', 'menu:create', 'menu:update'])]#[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'submenus')]private ?self $parentMenu = null;#[Groups(['menu:read'])]#[ORM\OneToMany(mappedBy: 'parentMenu', targetEntity: self::class)]private Collection $submenus;#[Groups(['menu:read', 'menu:create', 'menu:update'])]#[ORM\Column]private ?int $orden = null;#[Groups(['menu:read', 'menu:create', 'menu:update'])]#[ORM\Column(length: 255)]private ?string $rol = null;#[Groups(['menu:read'])]public $permisos;public function __construct(){$this->submenus = new ArrayCollection();$this->uuid = Uuid::uuid4()->toString();}public function getEmpresa(): ?Empresa{return $this->empresa;}public function setEmpresa(?Empresa $empresa): self{$this->empresa = $empresa;return $this;}public function getNombre(): ?string{return $this->nombre;}public function setNombre(string $nombre): self{$this->nombre = $nombre;return $this;}public function isIsActive(): ?bool{return $this->isActive;}public function setIsActive(bool $isActive): self{$this->isActive = $isActive;return $this;}public function getIcon(): ?string{return $this->icon;}public function setIcon(string $icon): self{$this->icon = $icon;return $this;}public function getLink(): ?string{return $this->link;}public function setLink(?string $link): self{$this->link = $link;return $this;}public function getParentMenu(): ?self{return $this->parentMenu;}public function setParentMenu(?self $parentMenu): self{$this->parentMenu = $parentMenu;return $this;}/*** @return Collection<int, self>*/public function getSubmenus(): Collection{return $this->submenus;}public function addSubmenu(self $submenu): self{if (!$this->submenus->contains($submenu)) {$this->submenus->add($submenu);$submenu->setParentMenu($this);}return $this;}public function removeSubmenu(self $submenu): self{// set the owning side to null (unless already changed)if ($this->submenus->removeElement($submenu) && $submenu->getParentMenu() === $this) {$submenu->setParentMenu(null);}return $this;}public function getOrden(): ?int{return $this->orden;}public function setOrden(int $orden): self{$this->orden = $orden;return $this;}public function getRol(): ?string{return $this->rol;}public function setRol(string $rol): self{$this->rol = $rol;return $this;}}