src/Entity/UserInstitution.php line 23

  1. <?php
  2. namespace App\Entity;
  3. use App\Entity\Mapped\Entity;
  4. use App\Repository\UserInstitutionRepository;
  5. use App\Validator\Constraint as CustomValidator;
  6. use Doctrine\Common\Collections\ArrayCollection;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use Symfony\Component\Validator\Constraints as Assert;
  9. #[ORM\Entity(
  10.     repositoryClassUserInstitutionRepository::class
  11. )]
  12. #[ORM\Table(
  13.     name'user_institution'
  14. )]
  15. #[CustomValidator\UniqueInCollection(
  16.     message'user.uniqueInstitution',
  17.     fields: ['user''institution'],
  18.     groups: ['admin-action-create''admin-action-update']
  19. )]
  20. class UserInstitution extends Entity
  21. {
  22.     #[ORM\ManyToOne(
  23.         targetEntityUser::class,
  24.         cascade: ['persist''remove'],
  25.         inversedBy'userInstitution'
  26.     )]
  27.     #[ORM\JoinColumn(
  28.         name'user'
  29.     )]
  30.     private ?User $user null;
  31.     #[ORM\ManyToOne(
  32.         targetEntityInstitution::class,
  33.         cascade: ['persist''remove'],
  34.         inversedBy'userInstitution'
  35.     )]
  36.     #[ORM\JoinColumn(
  37.         name'institution'
  38.     )]
  39.     #[Assert\NotBlank(
  40.         groups: ['admin-action-create''admin-action-update']
  41.     )]
  42.     private ?Institution $institution null;
  43.     #[ORM\OneToMany(
  44.         mappedBy'userInstitution',
  45.         targetEntityUserInstitutionRole::class,
  46.         cascade: ['persist''remove'],
  47.         fetch'EXTRA_LAZY',
  48.         orphanRemovaltrue
  49.     )]
  50.     #[Assert\Count(
  51.         min1,
  52.         minMessage'user.minRoles',
  53.         groups: ['admin-action-create''admin-action-update']
  54.     )]
  55.     private ?iterable $roles;
  56.     public function __construct()
  57.     {
  58.         $this->roles = new ArrayCollection();
  59.     }
  60.     public function getUser(): ?User
  61.     {
  62.         return $this->user;
  63.     }
  64.     public function setUser(?User $user): self
  65.     {
  66.         $this->user $user;
  67.         return $this;
  68.     }
  69.     public function getInstitution(): ?Institution
  70.     {
  71.         return $this->institution;
  72.     }
  73.     public function setInstitution(?Institution $institution): self
  74.     {
  75.         $this->institution $institution;
  76.         return $this;
  77.     }
  78.     public function getRoles(): iterable
  79.     {
  80.         return $this->roles;
  81.     }
  82.     public function setRoles(iterable $roles): self
  83.     {
  84.         $this->roles $roles;
  85.         return $this;
  86.     }
  87.     public function removeRoles(UserInstitutionRole $userInstitutionRole): void
  88.     {
  89.         if (!$this->roles->contains($userInstitutionRole)) {
  90.             return;
  91.         }
  92.         $this->roles->removeElement($userInstitutionRole);
  93.         $userInstitutionRole->setUserInstitution(null);
  94.     }
  95.     public function addRoles(UserInstitutionRole $userInstitutionRole): void
  96.     {
  97.         if ($this->roles->contains($userInstitutionRole)) {
  98.             return;
  99.         }
  100.         $this->roles[] = $userInstitutionRole;
  101.         $userInstitutionRole->setUserInstitution($this);
  102.     }
  103. }