<?php
namespace App\Entity;
use App\Repository\AccessRolesRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use phpDocumentor\Reflection\Types\This;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ORM\Entity(repositoryClass=AccessRolesRepository::class)
*/
class AccessRoles
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
* @Groups({"access.role.core", "user.manage", "user.base"})
*/
private $id;
/**
* @ORM\Column(type="string", length=64)
* @Groups({"access.role.core", "user.manage", "role.base", "user.base"})
*/
private $name;
/**
* @ORM\Column(type="integer")
* @Groups({"access.role.core", "user.manage", "role.base", "user.base"})
*/
private $level;
/**
* @ORM\ManyToOne(targetEntity=AccessTypes::class, inversedBy="accessRoles")
* @ORM\JoinColumn(nullable=false)
* @Groups({"access.role.type.ref", "role.base"})
*/
private $access_type;
/**
* @ORM\ManyToMany(targetEntity=User::class, mappedBy="user_accessed_roles")
*/
private $users;
/**
* @ORM\ManyToMany(targetEntity=Worker::class, mappedBy="worker_accessed_roles")
*/
private $workers;
/**
* @Groups({"user.manage", "role.base"})
* @ORM\Column(type="string", nullable=true)
*/
private string $description;
/**
* @ORM\Column("selectable", nullable=true)
* @Groups({"user.manage", "role.base"})
*/
private $selectable;
public function getSelectable(): ?bool {
return $this->selectable;
}
public function getDescription(): string
{
return $this->description;
}
public function setDescription(string $description): self
{
$this->description = $description;
return $this;
}
public function __construct()
{
$this->users = new ArrayCollection();
$this->workers = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function getLevel(): ?int
{
return $this->level;
}
public function setLevel(int $level): self
{
$this->level = $level;
return $this;
}
public function getAccessType(): ?AccessTypes
{
return $this->access_type;
}
public function setAccessType(?AccessTypes $access_type): self
{
$this->access_type = $access_type;
return $this;
}
/**
* @return Collection<int, User>
*/
public function getUsers(): Collection
{
return $this->users;
}
public function addUser(User $user): self
{
if (!$this->users->contains($user)) {
$this->users[] = $user;
$user->addUserAccessedRole($this);
}
return $this;
}
public function removeUser(User $user): self
{
if ($this->users->removeElement($user)) {
$user->removeUserAccessedRole($this);
}
return $this;
}
/**
* @return Collection<int, Worker>
*/
public function getWorkers(): Collection
{
return $this->workers;
}
public function addWorker(Worker $worker): self
{
if (!$this->workers->contains($worker)) {
$this->workers[] = $worker;
$worker->addWorkerAccessedRole($this);
}
return $this;
}
public function removeWorker(Worker $worker): self
{
if ($this->workers->removeElement($worker)) {
$worker->removeWorkerAccessedRole($this);
}
return $this;
}
}