src/Entity/Profile.php line 31

Open in your IDE?
  1. <?php
  2. /**
  3.  * @package BLUUE
  4.  * @author Thomas HERISSON (contact@scaledev.fr)
  5.  * @copyright 2021 - ScaleDEV SAS, 12 RUE CHARLES MORET, 10120 ST ANDRE LES VERGERS
  6.  * @license commercial
  7.  */
  8. declare(strict_types=1);
  9. namespace App\Entity;
  10. use Symfony\Component\Uid\Uuid;
  11. use Doctrine\ORM\Mapping as ORM;
  12. use App\Repository\ProfileRepository;
  13. use Doctrine\Common\Collections\Collection;
  14. use Doctrine\Common\Collections\ArrayCollection;
  15. use Gedmo\Timestampable\Traits\TimestampableEntity;
  16. use Gedmo\SoftDeleteable\Traits\SoftDeleteableEntity;
  17. use Symfony\Bridge\Doctrine\IdGenerator\UuidGenerator;
  18. use Symfony\Component\Serializer\Annotation\Groups;
  19. /**
  20.  * @ORM\Entity(repositoryClass=ProfileRepository::class)
  21.  * @ORM\Table(name="profile", indexes={
  22.  *  @ORM\Index(name="name", columns={"name"}),
  23.  *  @ORM\Index(name="deleted_at", columns={"deleted_at"})
  24.  * })
  25.  */
  26. class Profile
  27. {
  28.     use TimestampableEntity;
  29.     use SoftDeleteableEntity;
  30.     /**
  31.      * @ORM\Id
  32.      * @ORM\Column(type="uuid")
  33.      * @ORM\GeneratedValue(strategy="CUSTOM")
  34.      * @ORM\CustomIdGenerator(class=UuidGenerator::class)
  35.      * @Groups({"get"})
  36.      */
  37.     private ?Uuid $id null;
  38.     /**
  39.      * @ORM\Column(type="string", length=64)
  40.      * @Groups({"get"})
  41.      */
  42.     private string $name;
  43.     /**
  44.      * @ORM\Column(type="json")
  45.      * @Groups({"get"})
  46.      */
  47.     private array $roles = [];
  48.     /**
  49.      * @ORM\OneToMany(targetEntity=User::class, mappedBy="profile", fetch="EXTRA_LAZY")
  50.      */
  51.     private Collection $users;
  52.     public function __construct()
  53.     {
  54.         $this->users = new ArrayCollection();
  55.     }
  56.     /**
  57.      * @return Uuid|null
  58.      */
  59.     public function getId(): ?Uuid
  60.     {
  61.         return $this->id;
  62.     }
  63.     /**
  64.      * @return string|null
  65.      */
  66.     public function getName(): ?string
  67.     {
  68.         return $this->name;
  69.     }
  70.     /**
  71.      * @return array
  72.      */
  73.     public function getRoles(): array
  74.     {
  75.         return $this->roles;
  76.     }
  77.     /**
  78.      * @param string $name
  79.      * @return $this
  80.      */
  81.     public function setName(string $name): self
  82.     {
  83.         $this->name $name;
  84.         return $this;
  85.     }
  86.     /**
  87.      * @param array $roles
  88.      * @return $this
  89.      */
  90.     public function setRoles(array $roles): self
  91.     {
  92.         $this->roles $roles;
  93.         return $this;
  94.     }
  95.     /**
  96.      * @return Collection|User[]
  97.      */
  98.     public function getUsers(): Collection
  99.     {
  100.         return $this->users;
  101.     }
  102.     /**
  103.      * @param User $user
  104.      * @return $this
  105.      */
  106.     public function addUser(User $user): self
  107.     {
  108.         if (!$this->users->contains($user)) {
  109.             $this->users[] = $user;
  110.             $user->setProfile($this);
  111.         }
  112.         return $this;
  113.     }
  114.     /**
  115.      * @param User $user
  116.      * @return $this
  117.      */
  118.     public function removeUser(User $user): self
  119.     {
  120.         if ($this->users->removeElement($user)) {
  121.             if ($user->getProfile() === $this) {
  122.                 $user->setProfile(null);
  123.             }
  124.         }
  125.         return $this;
  126.     }
  127. }