src/Entity/User.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Traits\EntityDateTimeAbleTrait;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\ORM\Mapping as ORM;
  7. use Symfony\Component\Security\Core\User\UserInterface;
  8. use Symfony\Component\Validator\Constraints as Assert;
  9. use Symfony\Component\Serializer\Annotation\Groups;
  10. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  11. #[ORM\Entity(repositoryClass'App\Repository\UserRepository')]
  12. #[ORM\HasLifecycleCallbacks]
  13. #[UniqueEntity(fields: ['email'], errorPath'email'message'This email is already in use.')]
  14. class User implements UserInterface
  15. {
  16.     use EntityDateTimeAbleTrait;
  17.     const ADMIN_ROLE 1;
  18.     const CLIENT_ROLE 3;
  19.     const STATUS_INACTIVE 0;
  20.     const STATUS_ACTIVE 1;
  21.     // Remember update func getListRoleIdsThatNotAdmin
  22.     const ROLE_ADMINISTRATOR_SUPER 1;
  23.     const ROLE_USER 2;
  24.     const ROLE_CLIENT 3;
  25.     const ROLE_COMMERCIAL 19;
  26.     const GENDER_MALE 0;
  27.     const GENDER_FEMALE 1;
  28.     #[ORM\Id]
  29.     #[ORM\GeneratedValue]
  30.     #[ORM\Column(type'integer')]
  31.     private $id;
  32.     #[ORM\Column(type'string'length191uniquetrue)]
  33.     #[Assert\Length(max191)]
  34.     #[Assert\NotBlank]
  35.     private ?string $email null;
  36.     #[ORM\Column(type'string'length255)]
  37.     #[Assert\Length(max255)]
  38.     #[Groups(['excludeFrontend''excludeBackend'])]
  39.     private ?string $password null;
  40.     #[ORM\Column(type'boolean')]
  41.     private ?bool $authPermitted null;
  42.     #[ORM\ManyToMany(targetEntity'App\Entity\Role'cascade: ['persist'])]
  43.     private Collection $subRoles;
  44.     #[ORM\Column(type'string'length255nullabletrue)]
  45.     private ?string $phone null;
  46.     #[ORM\Column(type'smallint'nullabletrue)]
  47.     private ?int $status null;
  48.     #[ORM\Column(type'string'length150nullabletrue)]
  49.     private ?string $resetPasswordToken null;
  50.     #[ORM\Column(type'string'length255nullabletrue)]
  51.     private ?string $firstName null;
  52.     #[ORM\Column(type'string'length255nullabletrue)]
  53.     private ?string $lastName null;
  54.     #[ORM\Column(type'boolean'nullabletrue)]
  55.     private ?bool $gender null;
  56.     #[ORM\Column(type'date'nullabletrue)]
  57.     private ?\DateTimeInterface $birthDay null;
  58.     #[ORM\OneToOne(targetEntityMedia::class, orphanRemovaltruecascade: ['persist'])]
  59.     #[ORM\JoinColumn(nullabletrue)]
  60.     private ?\App\Entity\Media $media null;
  61.     #[ORM\OneToMany(targetEntityProfile::class, mappedBy'user')]
  62.     private Collection $profiles;
  63.     #[ORM\OneToMany(targetEntityProfileNote::class, mappedBy'user')]
  64.     private Collection $profileNotes;
  65.     #[ORM\Column(type'string'length255nullabletrue)]
  66.     private ?string $birthPlace null;
  67.     #[ORM\ManyToOne(targetEntityCountry::class, inversedBy'users')]
  68.     private ?\App\Entity\Country $country null;
  69.     #[ORM\ManyToOne(targetEntityCountry::class, inversedBy'users')]
  70.     private ?\App\Entity\Country $nationality null;
  71.     #[ORM\ManyToMany(targetEntityCampus::class, inversedBy'users')]
  72.     private Collection $campuses;
  73.     #[ORM\Column(type'string'length255nullabletrue)]
  74.     private ?string $department null;
  75.     public function __construct()
  76.     {
  77.         $this->subRoles = new ArrayCollection();
  78.         $this->profiles = new ArrayCollection();
  79.         $this->profileNotes = new ArrayCollection();
  80.         $this->campuses = new ArrayCollection();
  81.     }
  82.     public function getId(): ?int
  83.     {
  84.         return $this->id;
  85.     }
  86.     /**
  87.      * @see UserInterface
  88.      */
  89.     public function getSalt()
  90.     {
  91.         // not needed when using the "bcrypt" algorithm in security.yaml
  92.     }
  93.     /**
  94.      * @see UserInterface
  95.      */
  96.     public function eraseCredentials()
  97.     {
  98.         // If you location any temporary, sensitive data on the user, clear it here
  99.         // $this->plainPassword = null;
  100.     }
  101.     /**
  102.      * @see UserInterface
  103.      */
  104.     public function getRoles()
  105.     {
  106.         return $this->getSubRoleNames();
  107.     }
  108.     public function getEmail(): ?string
  109.     {
  110.         return $this->email;
  111.     }
  112.     public function getUsername(): ?string
  113.     {
  114.         return $this->email;
  115.     }
  116.     public function setEmail(string $email): self
  117.     {
  118.         $this->email $email;
  119.         return $this;
  120.     }
  121.     public function getPassword(): ?string
  122.     {
  123.         return $this->password;
  124.     }
  125.     public function setPassword(string $password): self
  126.     {
  127.         $this->password $password;
  128.         return $this;
  129.     }
  130.     public function getAuthPermitted(): ?bool
  131.     {
  132.         return $this->authPermitted;
  133.     }
  134.     public function setAuthPermitted(bool $authPermitted): self
  135.     {
  136.         $this->authPermitted $authPermitted;
  137.         return $this;
  138.     }
  139.     /**
  140.      * @return Collection|Role[]
  141.      */
  142.     public function getSubRoles(): Collection
  143.     {
  144.         return $this->subRoles;
  145.     }
  146.     public function getSubRoleNames()
  147.     {
  148.         $names = [];
  149.         foreach ($this->subRoles as $subRole) {
  150.             $names[] = $subRole->getName();
  151.         }
  152.         return $names;
  153.     }
  154.     public function addSubRole(Role $subRole): self
  155.     {
  156.         if (!$this->subRoles->contains($subRole)) {
  157.             $this->subRoles[] = $subRole;
  158.         }
  159.         return $this;
  160.     }
  161.     public function removeSubRole(Role $subRole): self
  162.     {
  163.         if ($this->subRoles->contains($subRole)) {
  164.             $this->subRoles->removeElement($subRole);
  165.         }
  166.         return $this;
  167.     }
  168.     public static function getListRoleIdsThatNotAdmin()
  169.     {
  170.         return [
  171.             self::ROLE_CLIENT,
  172.             self::ROLE_USER
  173.         ];
  174.     }
  175.     public function getPhone(): ?string
  176.     {
  177.         return $this->phone;
  178.     }
  179.     public function setPhone(?string $phone): self
  180.     {
  181.         $this->phone $phone;
  182.         return $this;
  183.     }
  184.     public function getFullName()
  185.     {
  186.         return $this->getFirstName() . ' ' $this->getLastName();
  187.     }
  188.     public function getStatus(): ?int
  189.     {
  190.         return $this->status;
  191.     }
  192.     public function setStatus(?int $status): self
  193.     {
  194.         $this->status $status;
  195.         return $this;
  196.     }
  197.     public function getResetPasswordToken(): ?string
  198.     {
  199.         return $this->resetPasswordToken;
  200.     }
  201.     public function setResetPasswordToken(?string $resetPasswordToken): self
  202.     {
  203.         $this->resetPasswordToken $resetPasswordToken;
  204.         return $this;
  205.     }
  206.     public function getFirstName(): ?string
  207.     {
  208.         return $this->firstName;
  209.     }
  210.     public function setFirstName(?string $firstName): self
  211.     {
  212.         $this->firstName $firstName;
  213.         return $this;
  214.     }
  215.     public function getLastName(): ?string
  216.     {
  217.         return $this->lastName;
  218.     }
  219.     public function setLastName(?string $lastName): self
  220.     {
  221.         $this->lastName $lastName;
  222.         return $this;
  223.     }
  224.     public function getGender(): ?bool
  225.     {
  226.         return $this->gender;
  227.     }
  228.     public function setGender(?bool $gender): self
  229.     {
  230.         $this->gender $gender;
  231.         return $this;
  232.     }
  233.     public function getBirthDay(): ?\DateTimeInterface
  234.     {
  235.         return $this->birthDay;
  236.     }
  237.     public function setBirthDay(?\DateTimeInterface $birthDay): self
  238.     {
  239.         $this->birthDay $birthDay;
  240.         return $this;
  241.     }
  242.     public function getMedia(): ?Media
  243.     {
  244.         return $this->media;
  245.     }
  246.     public function setMedia(Media $media): self
  247.     {
  248.         $this->media $media;
  249.         return $this;
  250.     }
  251.     /**
  252.      * @return Collection<int, Profile>
  253.      */
  254.     public function getProfiles(): Collection
  255.     {
  256.         return $this->profiles;
  257.     }
  258.     public function addProfile(Profile $profile): self
  259.     {
  260.         if (!$this->profiles->contains($profile)) {
  261.             $this->profiles[] = $profile;
  262.             $profile->setUser($this);
  263.         }
  264.         return $this;
  265.     }
  266.     public function removeProfile(Profile $profile): self
  267.     {
  268.         if ($this->profiles->removeElement($profile)) {
  269.             // set the owning side to null (unless already changed)
  270.             if ($profile->getUser() === $this) {
  271.                 $profile->setUser(null);
  272.             }
  273.         }
  274.         return $this;
  275.     }
  276.     /**
  277.      * @return Collection<int, ProfileNote>
  278.      */
  279.     public function getProfileNotes(): Collection
  280.     {
  281.         return $this->profileNotes;
  282.     }
  283.     public function addProfileNote(ProfileNote $profileNote): self
  284.     {
  285.         if (!$this->profileNotes->contains($profileNote)) {
  286.             $this->profileNotes[] = $profileNote;
  287.             $profileNote->setUser($this);
  288.         }
  289.         return $this;
  290.     }
  291.     public function removeProfileNote(ProfileNote $profileNote): self
  292.     {
  293.         if ($this->profileNotes->removeElement($profileNote)) {
  294.             // set the owning side to null (unless already changed)
  295.             if ($profileNote->getUser() === $this) {
  296.                 $profileNote->setUser(null);
  297.             }
  298.         }
  299.         return $this;
  300.     }
  301.     public function getBirthPlace(): ?string
  302.     {
  303.         return $this->birthPlace;
  304.     }
  305.     public function setBirthPlace(?string $birthPlace): self
  306.     {
  307.         $this->birthPlace $birthPlace;
  308.         return $this;
  309.     }
  310.     public function getCountry(): ?Country
  311.     {
  312.         return $this->country;
  313.     }
  314.     public function setCountry(?Country $country): self
  315.     {
  316.         $this->country $country;
  317.         return $this;
  318.     }
  319.     public function getNationality(): ?Country
  320.     {
  321.         return $this->nationality;
  322.     }
  323.     public function setNationality(?Country $nationality): self
  324.     {
  325.         $this->nationality $nationality;
  326.         return $this;
  327.     }
  328.     /**
  329.      * @return Collection<int, campus>
  330.      */
  331.     public function getCampuses(): Collection
  332.     {
  333.         return $this->campuses;
  334.     }
  335.     public function addCampus(Campus $campus): self
  336.     {
  337.         if (!$this->campuses->contains($campus)) {
  338.             $this->campuses[] = $campus;
  339.         }
  340.         return $this;
  341.     }
  342.     public function removeCampus(Campus $campus): self
  343.     {
  344.         $this->campuses->removeElement($campus);
  345.         return $this;
  346.     }
  347.     public function getDepartment(): ?string
  348.     {
  349.         return $this->department;
  350.     }
  351.     public function setDepartment(?string $department): self
  352.     {
  353.         $this->department $department;
  354.         return $this;
  355.     }
  356. }