src/Entity/User.php line 15

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\UserRepository;
  4. use App\String\Constant;
  5. use Doctrine\Common\Collections\ArrayCollection;
  6. use Doctrine\Common\Collections\Collection;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use PhpParser\Node\Expr\BinaryOp\BooleanOr;
  9. use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
  10. use Symfony\Component\Security\Core\User\UserInterface;
  11. #[ORM\Entity(repositoryClassUserRepository::class)]
  12. class User implements UserInterfacePasswordAuthenticatedUserInterface
  13. {
  14.     #[ORM\Id]
  15.     #[ORM\GeneratedValue]
  16.     #[ORM\Column(type'integer')]
  17.     private $id;
  18.     #[ORM\Column(type'string'length180uniquetrue)]
  19.     private $email;
  20.     #[ORM\Column(type'json')]
  21.     private $roles = [];
  22.     #[ORM\Column(type'string')]
  23.     private $password;
  24.     #[ORM\OneToOne(mappedBy'user'targetEntityUserProfile::class, cascade: ['persist''remove'])]
  25.     private $userProfile;
  26.     #[ORM\OneToOne(mappedBy'user'targetEntityUserAddress::class, cascade: ['persist''remove'])]
  27.     private $userAddress;
  28.     #[ORM\OneToOne(mappedBy'user'targetEntityUserInformation::class, cascade: ['persist''remove'])]
  29.     private $userInformation;
  30.     #[ORM\Column(type'string'length255nullabletrue)]
  31.     private $firstName;
  32.     #[ORM\Column(type'string'length255nullabletrue)]
  33.     private $lastName;
  34.     #[ORM\Column(type'string'length255nullabletrue)]
  35.     private $phone;
  36.     #[ORM\Column(type'string'length255nullabletrue)]
  37.     private $gender;
  38.     #[ORM\Column(type'string'length255nullabletrue)]
  39.     private $isDiverse;
  40.     #[ORM\OneToMany(mappedBy'user'targetEntityOrderDetails::class)]
  41.     private $orderDetails;
  42.     #[ORM\OneToMany(mappedBy'owner'targetEntityFilmProject::class)]
  43.     private $filmProjects;
  44.     #[ORM\OneToMany(mappedBy'user'targetEntityUserBilling::class)]
  45.     private $userBillings;
  46.     #[ORM\Column(type'string'length255nullabletrue)]
  47.     private $organisation;
  48.     #[ORM\Column(type'array'nullabletrue)]
  49.     private $areaInterest = [];
  50.     #[ORM\ManyToMany(targetEntityUserCategory::class, inversedBy'users')]
  51.     private $categories;
  52.     #[ORM\ManyToMany(targetEntityFilmProject::class, inversedBy'users')]
  53.     private $followedFilmProjects;
  54.     #[ORM\Column(type'string'length255nullabletrue)]
  55.     private $accountSalesforceId;
  56.     #[ORM\ManyToMany(targetEntityProjectNotification::class, mappedBy'user')]
  57.     private Collection $projectNotifications;
  58.     #[ORM\Column(length255nullabletrue)]
  59.     private ?string $isAborigin null;
  60.     #[ORM\Column(nullabletrue)]
  61.     private ?bool $isSuccess null;
  62.     #[ORM\Column(nullabletrue)]
  63.     private ?bool $isGuest null;
  64.     private ?bool $isAdmin;
  65.     // Honeypot fields
  66.     private ?string $emailAddress null;
  67.     private ?string $fullName null;
  68.     public function __construct()
  69.     {
  70.         $this->orderDetails = new ArrayCollection();
  71.         $this->filmProjects = new ArrayCollection();
  72.         $this->userBillings = new ArrayCollection();
  73.         $this->categories = new ArrayCollection();
  74.         $this->followedFilmProjects = new ArrayCollection();
  75.         $this->projectNotifications = new ArrayCollection();
  76.     }
  77.     public function getId(): ?int
  78.     {
  79.         return $this->id;
  80.     }
  81.     public function getEmail(): ?string
  82.     {
  83.         return $this->email;
  84.     }
  85.     public function setEmail(string $email): self
  86.     {
  87.         $this->email $email;
  88.         return $this;
  89.     }
  90.     /**
  91.      * A visual identifier that represents this user.
  92.      *
  93.      * @see UserInterface
  94.      */
  95.     public function getUserIdentifier(): string
  96.     {
  97.         return (string) $this->email;
  98.     }
  99.     /**
  100.      * @see UserInterface
  101.      */
  102.     public function getRoles(): array
  103.     {
  104.         $roles $this->roles;
  105.         // guarantee every user at least has ROLE_USER
  106.         $roles[] = 'ROLE_USER';
  107.         return array_unique($roles);
  108.     }
  109.     public function setRoles(array $roles): self
  110.     {
  111.         // ALWAYS SET USERPORTAL ROLE
  112.         $roles array_merge($roles, ['ROLE_PORTALUSER']);
  113.         $this->roles $roles;
  114.         
  115.         return $this;
  116.     }
  117.     
  118.     public function setSpecificRoles(array $roles): self
  119.     {
  120.         $this->roles $roles;
  121.         
  122.         return $this;
  123.     }
  124.     
  125.     public function getFullRoles(): ?string
  126.     {
  127.         $roles $this->roles;
  128.         $roles[] = 'ROLE_USER';
  129.         $newRoles = [];
  130.         foreach ($roles as $role) {
  131.             switch ($role) {
  132.                 case 'ROLE_PARTNER'
  133.                     array_push($newRoles'Filmmaker'); break;
  134.                 case 'ROLE_FUNDER':
  135.                     array_push($newRoles'Sponsor'); break; // impact partner
  136.                 case 'ROLE_DONOR':
  137.                     array_push($newRoles'Donor'); break;
  138.                 case 'ROLE_ADMIN':
  139.                     array_push($newRoles'Administrator'); break;
  140.                 case 'ROLE_FIN_ADMIN':
  141.                     array_push($newRoles'Finance Admin'); break;
  142.             }
  143.         }
  144.         $newRoles array_unique($newRoles);
  145.         return implode(', '$newRoles);
  146.     }
  147.     /**
  148.      * @see PasswordAuthenticatedUserInterface
  149.      */
  150.     public function getPassword(): string
  151.     {
  152.         return $this->password;
  153.     }
  154.     public function setPassword(string $password): self
  155.     {
  156.         $this->password $password;
  157.         return $this;
  158.     }
  159.     /**
  160.      * @see UserInterface
  161.      */
  162.     public function eraseCredentials()
  163.     {
  164.         // If you store any temporary, sensitive data on the user, clear it here
  165.         // $this->plainPassword = null;
  166.     }
  167.     public function getUserProfile(): ?UserProfile
  168.     {
  169.         return $this->userProfile;
  170.     }
  171.     public function setUserProfile(?UserProfile $userProfile): self
  172.     {
  173.         // unset the owning side of the relation if necessary
  174.         if ($userProfile === null && $this->userProfile !== null) {
  175.             $this->userProfile->setUser(null);
  176.         }
  177.         // set the owning side of the relation if necessary
  178.         if ($userProfile !== null && $userProfile->getUser() !== $this) {
  179.             $userProfile->setUser($this);
  180.         }
  181.         $this->userProfile $userProfile;
  182.         return $this;
  183.     }
  184.     public function getUserAddress(): ?UserAddress
  185.     {
  186.         return $this->userAddress;
  187.     }
  188.     public function setUserAddress(?UserAddress $userAddress): self
  189.     {
  190.         // unset the owning side of the relation if necessary
  191.         if ($userAddress === null && $this->userAddress !== null) {
  192.             $this->userAddress->setUser(null);
  193.         }
  194.         // set the owning side of the relation if necessary
  195.         if ($userAddress !== null && $userAddress->getUser() !== $this) {
  196.             $userAddress->setUser($this);
  197.         }
  198.         $this->userAddress $userAddress;
  199.         return $this;
  200.     }
  201.     public function getUserInformation(): ?UserInformation
  202.     {
  203.         return $this->userInformation;
  204.     }
  205.     public function setUserInformation(?UserInformation $userInformation): self
  206.     {
  207.         // unset the owning side of the relation if necessary
  208.         if ($userInformation === null && $this->userInformation !== null) {
  209.             $this->userInformation->setUser(null);
  210.         }
  211.         // set the owning side of the relation if necessary
  212.         if ($userInformation !== null && $userInformation->getUser() !== $this) {
  213.             $userInformation->setUser($this);
  214.         }
  215.         $this->userInformation $userInformation;
  216.         return $this;
  217.     }
  218.     public function getFirstName(): ?string
  219.     {
  220.         return $this->firstName;
  221.     }
  222.     public function setFirstName(?string $firstName): self
  223.     {
  224.         $this->firstName $firstName;
  225.         return $this;
  226.     }
  227.     public function getLastName(): ?string
  228.     {
  229.         return $this->lastName;
  230.     }
  231.     public function setLastName(?string $lastName): self
  232.     {
  233.         $this->lastName $lastName;
  234.         return $this;
  235.     }
  236.     public function getFullName(): ?string
  237.     {
  238.         return $this->firstName ' ' $this->lastName;
  239.     }
  240.     public function getPhone(): ?string
  241.     {
  242.         return $this->phone;
  243.     }
  244.     public function setPhone(?string $phone): self
  245.     {
  246.         $this->phone $phone;
  247.         return $this;
  248.     }
  249.     public function getGender(): ?string
  250.     {
  251.         return $this->gender;
  252.     }
  253.     public function setGender(?string $gender): self
  254.     {
  255.         $this->gender $gender;
  256.         return $this;
  257.     }
  258.     // public function isIsDiverse(): ?bool
  259.     // {
  260.     //     return $this->isDiverse;
  261.     // }
  262.     // public function setIsDiverse(?bool $isDiverse): self
  263.     // {
  264.     //     $this->isDiverse = $isDiverse;
  265.     //     return $this;
  266.     // }
  267.     public function getIsDiverse(): ?string
  268.     {
  269.         return $this->isDiverse;
  270.     }
  271.     public function setIsDiverse(?string $isDiverse): self
  272.     {
  273.         $this->isDiverse $isDiverse;
  274.         return $this;
  275.     }
  276.     /**
  277.      * @return Collection<int, OrderDetails>
  278.      */
  279.     public function getOrderDetails(): Collection
  280.     {
  281.         return $this->orderDetails;
  282.     }
  283.     public function addOrderDetail(OrderDetails $orderDetail): self
  284.     {
  285.         if (!$this->orderDetails->contains($orderDetail)) {
  286.             $this->orderDetails[] = $orderDetail;
  287.             $orderDetail->setUser($this);
  288.         }
  289.         return $this;
  290.     }
  291.     public function removeOrderDetail(OrderDetails $orderDetail): self
  292.     {
  293.         if ($this->orderDetails->removeElement($orderDetail)) {
  294.             // set the owning side to null (unless already changed)
  295.             if ($orderDetail->getUser() === $this) {
  296.                 $orderDetail->setUser(null);
  297.             }
  298.         }
  299.         return $this;
  300.     }
  301.     /**
  302.      * @return Collection<int, FilmProject>
  303.      */
  304.     public function getFilmProjects(): Collection
  305.     {
  306.         return $this->filmProjects;
  307.     }
  308.     public function addFilmProject(FilmProject $filmProject): self
  309.     {
  310.         if (!$this->filmProjects->contains($filmProject)) {
  311.             $this->filmProjects[] = $filmProject;
  312.             $filmProject->setOwner($this);
  313.         }
  314.         return $this;
  315.     }
  316.     public function removeFilmProject(FilmProject $filmProject): self
  317.     {
  318.         if ($this->filmProjects->removeElement($filmProject)) {
  319.             // set the owning side to null (unless already changed)
  320.             if ($filmProject->getOwner() === $this) {
  321.                 $filmProject->setOwner(null);
  322.             }
  323.         }
  324.         return $this;
  325.     }
  326.     public function isAdmin(): bool
  327.     {
  328.         $isAdmin false;
  329.         foreach ($this->roles as $role) {
  330.             if ($role == 'ROLE_ADMIN') {
  331.                 $isAdmin true;
  332.                 break;
  333.             }
  334.         }
  335.         return $isAdmin;
  336.     }
  337.     public function isFinanceAdmin(): bool
  338.     {
  339.         $isFinanceAdmin false;
  340.         foreach ($this->roles as $role) {
  341.             if ($role == 'ROLE_FIN_ADMIN') {
  342.                 $isFinanceAdmin true;
  343.                 break;
  344.             }
  345.         }
  346.         return $isFinanceAdmin;
  347.     }
  348.     public function isFilmmaker(): bool
  349.     {
  350.         $isFilmmaker false;
  351.         foreach ($this->roles as $role) {
  352.             if ($role == Constant::ROLE_FILMMAKER) {
  353.                 $isFilmmaker true;
  354.                 break;
  355.             }
  356.         }
  357.         return $isFilmmaker;
  358.     }
  359.     /**
  360.      * @return Collection<int, UserBilling>
  361.      */
  362.     public function getUserBillings(): Collection
  363.     {
  364.         return $this->userBillings;
  365.     }
  366.     public function addUserBilling(UserBilling $userBilling): self
  367.     {
  368.         if (!$this->userBillings->contains($userBilling)) {
  369.             $this->userBillings[] = $userBilling;
  370.             $userBilling->setUser($this);
  371.         }
  372.         return $this;
  373.     }
  374.     public function removeUserBilling(UserBilling $userBilling): self
  375.     {
  376.         if ($this->userBillings->removeElement($userBilling)) {
  377.             // set the owning side to null (unless already changed)
  378.             if ($userBilling->getUser() === $this) {
  379.                 $userBilling->setUser(null);
  380.             }
  381.         }
  382.         return $this;
  383.     }
  384.     public function getOrganisation(): ?string
  385.     {
  386.         return $this->organisation;
  387.     }
  388.     public function setOrganisation(?string $organisation): self
  389.     {
  390.         $this->organisation $organisation;
  391.         return $this;
  392.     }
  393.     public function getAreaInterest(): ?array
  394.     {
  395.         return $this->areaInterest;
  396.     }
  397.     public function setAreaInterest(?array $areaInterest): self
  398.     {
  399.         $this->areaInterest $areaInterest;
  400.         return $this;
  401.     }
  402.     /**
  403.      * @return Collection<int, UserCategory>
  404.      */
  405.     public function getCategories(): Collection
  406.     {
  407.         return $this->categories;
  408.     }
  409.     public function addCategory(UserCategory $category): self
  410.     {
  411.         if (!$this->categories->contains($category)) {
  412.             $this->categories[] = $category;
  413.         }
  414.         return $this;
  415.     }
  416.     public function removeCategory(UserCategory $category): self
  417.     {
  418.         $this->categories->removeElement($category);
  419.         return $this;
  420.     }
  421.     /**
  422.      * @return Collection<int, FilmProject>
  423.      */
  424.     public function getFollowedFilmProjects(): Collection
  425.     {
  426.         return $this->followedFilmProjects;
  427.     }
  428.     public function addFollowedFilmProject(FilmProject $followedFilmProject): self
  429.     {
  430.         if (!$this->followedFilmProjects->contains($followedFilmProject)) {
  431.             $this->followedFilmProjects[] = $followedFilmProject;
  432.         }
  433.         return $this;
  434.     }
  435.     public function removeFollowedFilmProject(FilmProject $followedFilmProject): self
  436.     {
  437.         $this->followedFilmProjects->removeElement($followedFilmProject);
  438.         return $this;
  439.     }
  440.     public function getAccountSalesforceId(): ?string
  441.     {
  442.         return $this->accountSalesforceId;
  443.     }
  444.     public function setAccountSalesforceId(?string $accountSalesforceId): self
  445.     {
  446.         $this->accountSalesforceId $accountSalesforceId;
  447.         return $this;
  448.     }
  449.     /**
  450.      * @return Collection<int, ProjectNotification>
  451.      */
  452.     public function getProjectNotifications(): Collection
  453.     {
  454.         return $this->projectNotifications;
  455.     }
  456.     public function addProjectNotification(ProjectNotification $projectNotification): self
  457.     {
  458.         if (!$this->projectNotifications->contains($projectNotification)) {
  459.             $this->projectNotifications->add($projectNotification);
  460.             $projectNotification->addUser($this);
  461.         }
  462.         return $this;
  463.     }
  464.     public function removeProjectNotification(ProjectNotification $projectNotification): self
  465.     {
  466.         if ($this->projectNotifications->removeElement($projectNotification)) {
  467.             $projectNotification->removeUser($this);
  468.         }
  469.         return $this;
  470.     }
  471.     public function getIsAborigin(): ?string
  472.     {
  473.         return $this->isAborigin;
  474.     }
  475.     public function setIsAborigin(?string $isAborigin): self
  476.     {
  477.         $this->isAborigin $isAborigin;
  478.         return $this;
  479.     }
  480.     public function isIsSuccess(): ?bool
  481.     {
  482.         return $this->isSuccess;
  483.     }
  484.     public function setIsSuccess(?bool $isSuccess): self
  485.     {
  486.         $this->isSuccess $isSuccess;
  487.         return $this;
  488.     }
  489.     public function isIsGuest(): ?bool
  490.     {
  491.         return $this->isGuest;
  492.     }
  493.     public function setIsGuest(?bool $isGuest): self
  494.     {
  495.         $this->isGuest $isGuest;
  496.         return $this;
  497.     }
  498.     public function getEmailAddress(): ?string
  499.     {
  500.         return $this->emailAddress;
  501.     }
  502.     public function setEmailAddress(?string $emailAddress): self
  503.     {
  504.         $this->emailAddress $emailAddress;
  505.         return $this;
  506.     }
  507.     public function setFullName(?string $fullName): self
  508.     {
  509.         $this->fullName $fullName;
  510.         return $this;
  511.     }
  512.     public function toString() {
  513.         if ($this->email) {
  514.             return $this->email;
  515.         }
  516.         return '';
  517.     }
  518.     public function __toString() {
  519.         return $this->toString();
  520.     }
  521. }