<?php
namespace App\Entity;
use App\Entity\Security\Permission;
use App\Repository\MenuRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=MenuRepository::class)
*/
class Menu
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $route;
/**
* @ORM\Column(type="string", length=255)
*/
private $label;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $icon;
/**
* @ORM\ManyToOne(targetEntity=Menu::class, inversedBy="parent", fetch="EAGER")
*/
private $menu;
/**
* @ORM\OneToMany(targetEntity=Menu::class, mappedBy="menu")
*/
private $parent;
/**
* @ORM\Column(type="boolean")
*/
private $isActive = false;
/**
* @ORM\Column(type="boolean")
*/
private $isUri = false;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $sogecAdmin = false;
/**
* @ORM\Column(type="integer", options={"default": 1000})
*/
private int $position = 1000;
/**
* @ORM\OneToMany(targetEntity=Permission::class, mappedBy="menu", orphanRemoval=true)
*/
private $permissions;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $permission_key;
public function __construct()
{
$this->parent = new ArrayCollection();
$this->permissions = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getRoute(): ?string
{
return $this->route;
}
public function setRoute(string $route): self
{
$this->route = $route;
return $this;
}
public function getLabel(): ?string
{
return $this->label;
}
public function setLabel(string $label): self
{
$this->label = $label;
return $this;
}
public function getIcon(): ?string
{
return $this->icon;
}
public function setIcon(?string $icon): self
{
$this->icon = $icon;
return $this;
}
public function getMenu(): ?self
{
return $this->menu;
}
public function setMenu(?self $menu): self
{
$this->menu = $menu;
return $this;
}
/**
* @return Collection|self[]
*/
public function getParent(): Collection
{
return $this->parent;
}
public function addParent(self $parent): self
{
if (!$this->parent->contains($parent)) {
$this->parent[] = $parent;
$parent->setMenu($this);
}
return $this;
}
public function removeParent(self $parent): self
{
if ($this->parent->removeElement($parent)) {
// set the owning side to null (unless already changed)
if ($parent->getMenu() === $this) {
$parent->setMenu(null);
}
}
return $this;
}
public function getIsActive(): ?bool
{
return $this->isActive;
}
public function setIsActive(bool $isActive): self
{
$this->isActive = $isActive;
return $this;
}
public function getIsUri(): ?bool
{
return $this->isUri;
}
public function setIsUri(bool $isUri): self
{
$this->isUri = $isUri;
return $this;
}
public function isSogecAdmin(): bool
{
return $this->sogecAdmin;
}
public function setSogecAdmin(bool $sogecAdmin): self
{
$this->sogecAdmin = $sogecAdmin;
return $this;
}
public function getPosition(): int
{
return $this->position;
}
public function setPosition(int $position): Menu
{
$this->position = $position;
return $this;
}
public function __toString()
{
return $this->label;
}
/**
* @return Collection<int, Permission>
*/
public function getPermissions(): Collection
{
return $this->permissions;
}
public function addPermission(Permission $permission): self
{
if (!$this->permissions->contains($permission)) {
$this->permissions[] = $permission;
$permission->setMenu($this);
}
return $this;
}
public function removePermission(Permission $permission): self
{
if ($this->permissions->removeElement($permission)) {
// set the owning side to null (unless already changed)
if ($permission->getMenu() === $this) {
$permission->setMenu(null);
}
}
return $this;
}
public function getPermissionKey(): ?string
{
return $this->permission_key;
}
public function setPermissionKey(?string $permission_key): self
{
$this->permission_key = $permission_key;
return $this;
}
}