src/Entity/User.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\UserRepository;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\DBAL\Types\Types;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use libphonenumber\PhoneNumberUtil;
  9. use libphonenumber\NumberParseException;
  10. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  11. use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
  12. use Symfony\Component\Security\Core\User\UserInterface;
  13. #[ORM\Entity(repositoryClassUserRepository::class)]
  14. #[UniqueEntity(fields: ['email'], message'Cette adresse mail est déjà associée à un compte.')]
  15. #[UniqueEntity(fields: ['companyName'], message'Ce nom de compagnie est déjà associé à un compte.')]
  16. class User implements UserInterfacePasswordAuthenticatedUserInterface
  17. {
  18.     #[ORM\Id]
  19.     #[ORM\GeneratedValue]
  20.     #[ORM\Column]
  21.     private ?int $id null;
  22.     #[ORM\Column(length180uniquetrue)]
  23.     private ?string $email null;
  24.     #[ORM\Column]
  25.     private array $roles = [];
  26.     /**
  27.      * @var string The hashed password
  28.      */
  29.     #[ORM\Column]
  30.     private ?string $password null;
  31.     #[ORM\Column(length100)]
  32.     private ?string $firstName null;
  33.     #[ORM\Column(length100)]
  34.     private ?string $lastName null;
  35.     #[ORM\Column(type'boolean')]
  36.     private $isVerified false;
  37.     #[ORM\Column(length255nullabletrue)]
  38.     private ?string $image null;
  39.     #[ORM\OneToMany(mappedBy'user'targetEntityArticle::class)]
  40.     private Collection $articles;
  41.     #[ORM\Column(typeTypes::TEXT)]
  42.     private ?string $customerKey null;
  43.     #[ORM\Column(nullabletrue)]
  44.     private ?float $credit null;
  45.     #[ORM\Column(length100)]
  46.     private ?string $phoneNumber null;
  47.     #[ORM\OneToMany(mappedBy'user'targetEntityUserPackage::class)]
  48.     private Collection $userPackages;
  49.     #[ORM\Column(nullabletrue)]
  50.     private ?int $pbnId null;
  51.     #[ORM\Column(typeTypes::TEXTnullabletrue)]
  52.     private ?string $customerSubjects null;
  53.     #[ORM\OneToMany(mappedBy'user'targetEntityOrder::class, orphanRemovaltrue)]
  54.     private Collection $orders;
  55.     #[ORM\Column(length100nullabletrue)]
  56.     private ?string $wordpressUsername null;
  57.     #[ORM\Column(length150nullabletrue)]
  58.     private ?string $wordpressPassword null;
  59.     #[ORM\Column(length100nullabletrue)]
  60.     private ?string $wordpressUrl null;
  61.     #[ORM\Column(length60nullabletrue options: ['default' => 'yoastseo'])]
  62.     private ?string $seoPlugin null;
  63.     #[ORM\Column(options: ['default' => 0])]
  64.     private ?bool $autoPublish null;
  65.     #[ORM\Column(typeTypes::DATETIME_MUTABLEnullabletrue)]
  66.     private ?\DateTimeInterface $creationDate null;
  67.     #[ORM\Column(typeTypes::SMALLINTnullabletrueoptions: ['default' => 3])]
  68.     private ?int $numberOfTestArticle null;
  69.     #[ORM\Column(length100nullabletrueuniquetrue)]
  70.     private ?string $companyName null;
  71.     #[ORM\Column(typeTypes::TEXTnullabletrue)]
  72.     private ?string $tempToken null;
  73.     #[ORM\Column(options: ['default' => 0])]
  74.     private ?bool $memberOptionAutoPublish null;
  75.     #[ORM\OneToMany(mappedBy'user'targetEntitySms::class, orphanRemovaltrue)]
  76.     private Collection $sms;
  77.     #[ORM\OneToMany(mappedBy'user'targetEntityProposedArticle::class, orphanRemovaltrue)]
  78.     private Collection $proposedArticles;
  79.     #[ORM\OneToMany(mappedBy'user'targetEntityNotification::class)]
  80.     private Collection $notifications;
  81.     public function __construct()
  82.     {
  83.         $this->articles = new ArrayCollection();
  84.         $this->packages = new ArrayCollection();
  85.         $this->userPackages = new ArrayCollection();
  86.         $this->orders = new ArrayCollection();
  87.         $this->sms = new ArrayCollection();
  88.         $this->proposedArticles = new ArrayCollection();
  89.         $this->notifications = new ArrayCollection();
  90.     }
  91.     public function getId(): ?int
  92.     {
  93.         return $this->id;
  94.     }
  95.     public function getEmail(): ?string
  96.     {
  97.         return $this->email;
  98.     }
  99.     public function setEmail(string $email): static
  100.     {
  101.         $this->email $email;
  102.         return $this;
  103.     }
  104.     /**
  105.      * A visual identifier that represents this user.
  106.      *
  107.      * @see UserInterface
  108.      */
  109.     public function getUserIdentifier(): string
  110.     {
  111.         return (string) $this->email;
  112.     }
  113.     /**
  114.      * @see UserInterface
  115.      */
  116.     public function getRoles(): array
  117.     {
  118.         $roles $this->roles;
  119.         // guarantee every user at least has ROLE_USER
  120.         $roles[] = 'ROLE_USER';
  121.         return array_unique($roles);
  122.     }
  123.     public function setRoles(array $roles): static
  124.     {
  125.         $this->roles $roles;
  126.         return $this;
  127.     }
  128.     /**
  129.      * @see PasswordAuthenticatedUserInterface
  130.      */
  131.     public function getPassword(): string
  132.     {
  133.         return $this->password;
  134.     }
  135.     public function setPassword(string $password): static
  136.     {
  137.         $this->password $password;
  138.         return $this;
  139.     }
  140.     /**
  141.      * @see UserInterface
  142.      */
  143.     public function eraseCredentials(): void
  144.     {
  145.         // If you store any temporary, sensitive data on the user, clear it here
  146.         // $this->plainPassword = null;
  147.     }
  148.     public function getFirstName(): ?string
  149.     {
  150.         return $this->firstName;
  151.     }
  152.     public function setFirstName(string $firstName): static
  153.     {
  154.         $this->firstName $firstName;
  155.         return $this;
  156.     }
  157.     public function getLastName(): ?string
  158.     {
  159.         return $this->lastName;
  160.     }
  161.     public function setLastName(string $lastName): static
  162.     {
  163.         $this->lastName $lastName;
  164.         return $this;
  165.     }
  166.     public function isVerified(): bool
  167.     {
  168.         return $this->isVerified;
  169.     }
  170.     public function setIsVerified(bool $isVerified): static
  171.     {
  172.         $this->isVerified $isVerified;
  173.         return $this;
  174.     }
  175.     public function getImage(): ?string
  176.     {
  177.         return $this->image;
  178.     }
  179.     public function setImage(?string $image): static
  180.     {
  181.         $this->image $image;
  182.         return $this;
  183.     }
  184.     /**
  185.      * @return Collection<int, Article>
  186.      */
  187.     public function getArticles(): Collection
  188.     {
  189.         return $this->articles;
  190.     }
  191.     public function addArticle(Article $article): static
  192.     {
  193.         if (!$this->articles->contains($article)) {
  194.             $this->articles->add($article);
  195.             $article->setUser($this);
  196.         }
  197.         return $this;
  198.     }
  199.     public function removeArticle(Article $article): static
  200.     {
  201.         if ($this->articles->removeElement($article)) {
  202.             // set the owning side to null (unless already changed)
  203.             if ($article->getUser() === $this) {
  204.                 $article->setUser(null);
  205.             }
  206.         }
  207.         return $this;
  208.     }
  209.     public function getCustomerKey(): ?string
  210.     {
  211.         return $this->customerKey;
  212.     }
  213.     public function setCustomerKey(string $customerKey): static
  214.     {
  215.         $this->customerKey $customerKey;
  216.         return $this;
  217.     }
  218.     public function getCredit(): ?float
  219.     {
  220.         return $this->credit;
  221.     }
  222.     public function setCredit(?float $credit): static
  223.     {
  224.         $this->credit $credit;
  225.         return $this;
  226.     }
  227.     public function getPhoneNumber(): ?string
  228.     {
  229.         return $this->phoneNumber;
  230.     }
  231.     public function setPhoneNumber(string $phoneNumber): self
  232.     {
  233.         /*
  234.         $phoneUtil = PhoneNumberUtil::getInstance();
  235.         
  236.         try {
  237.             $numberProto = $phoneUtil->parse($phoneNumber, "FR");
  238.             if ($phoneUtil->isValidNumber($numberProto)) {
  239.                 $this->phoneNumber = $phoneUtil->format($numberProto, \libphonenumber\PhoneNumberFormat::E164);
  240.             } else {
  241.                 $this->phoneNumber = "null";
  242.                 //throw new \InvalidArgumentException("Numéro de téléphone invalide.");
  243.             }
  244.         } catch (NumberParseException $e) {
  245.             $this->phoneNumber = "null";
  246.             //throw new \InvalidArgumentException("Erreur de parsing du numéro de téléphone: " . $e->getMessage());
  247.         }
  248.     
  249.         return $this;*/
  250.         $this->phoneNumber $phoneNumber;
  251.         return $this;
  252.     }
  253.     /**
  254.      * @return Collection<int, UserPackage>
  255.      */
  256.     public function getUserPackages(): Collection
  257.     {
  258.         return $this->userPackages;
  259.     }
  260.     public function addUserPackage(UserPackage $userPackage): static
  261.     {
  262.         if (!$this->userPackages->contains($userPackage)) {
  263.             $this->userPackages->add($userPackage);
  264.             $userPackage->setUser($this);
  265.         }
  266.         return $this;
  267.     }
  268.     public function removeUserPackage(UserPackage $userPackage): static
  269.     {
  270.         if ($this->userPackages->removeElement($userPackage)) {
  271.             // set the owning side to null (unless already changed)
  272.             if ($userPackage->getUser() === $this) {
  273.                 $userPackage->setUser(null);
  274.             }
  275.         }
  276.         return $this;
  277.     }
  278.     public function getPbnId(): ?int
  279.     {
  280.         return $this->pbnId;
  281.     }
  282.     public function setPbnId(?int $pbnId): static
  283.     {
  284.         $this->pbnId $pbnId;
  285.         return $this;
  286.     }
  287.     public function getCustomerSubjects(): ?string
  288.     {
  289.         return $this->customerSubjects;
  290.     }
  291.     public function setCustomerSubjects(?string $customerSubjects): static
  292.     {
  293.         $this->customerSubjects $customerSubjects;
  294.         return $this;
  295.     }
  296.     /**
  297.      * @return Collection<int, Order>
  298.      */
  299.     public function getOrders(): Collection
  300.     {
  301.         return $this->orders;
  302.     }
  303.     public function addOrder(Order $order): static
  304.     {
  305.         if (!$this->orders->contains($order)) {
  306.             $this->orders->add($order);
  307.             $order->setUser($this);
  308.         }
  309.         return $this;
  310.     }
  311.     public function removeOrder(Order $order): static
  312.     {
  313.         if ($this->orders->removeElement($order)) {
  314.             // set the owning side to null (unless already changed)
  315.             if ($order->getUser() === $this) {
  316.                 $order->setUser(null);
  317.             }
  318.         }
  319.         return $this;
  320.     }
  321.     public function getWordpressUsername(): ?string
  322.     {
  323.         return $this->wordpressUsername;
  324.     }
  325.     public function setWordpressUsername(?string $wordpressUsername): static
  326.     {
  327.         $this->wordpressUsername $wordpressUsername;
  328.         return $this;
  329.     }
  330.     public function getWordpressPassword(): ?string
  331.     {
  332.         return $this->wordpressPassword;
  333.     }
  334.     public function setWordpressPassword(?string $wordpressPassword): static
  335.     {
  336.         $this->wordpressPassword $wordpressPassword;
  337.         return $this;
  338.     }
  339.     public function getWordpressUrl(): ?string
  340.     {
  341.         return $this->wordpressUrl;
  342.     }
  343.     public function setWordpressUrl(?string $wordpressUrl): static
  344.     {
  345.         $this->wordpressUrl $wordpressUrl;
  346.         return $this;
  347.     }
  348.     public function getSeoPlugin(): ?string
  349.     {
  350.         return $this->seoPlugin;
  351.     }
  352.     public function setSeoPlugin(string $seoPlugin): static
  353.     {
  354.         $this->seoPlugin $seoPlugin;
  355.         return $this;
  356.     }
  357.     public function isAutoPublish(): ?bool
  358.     {
  359.         return $this->autoPublish;
  360.     }
  361.     public function setAutoPublish(bool $autoPublish): static
  362.     {
  363.         $this->autoPublish $autoPublish;
  364.         return $this;
  365.     }
  366.     public function getCreationDate(): ?\DateTimeInterface
  367.     {
  368.         return $this->creationDate;
  369.     }
  370.     public function setCreationDate(\DateTimeInterface $creationDate): static
  371.     {
  372.         $this->creationDate $creationDate;
  373.         return $this;
  374.     }
  375.     public function getNumberOfTestArticle(): ?int
  376.     {
  377.         return $this->numberOfTestArticle;
  378.     }
  379.     public function setNumberOfTestArticle(?int $numberOfTestArticle): static
  380.     {
  381.         $this->numberOfTestArticle $numberOfTestArticle;
  382.         return $this;
  383.     }
  384.     public function getCompanyName(): ?string
  385.     {
  386.         return $this->companyName;
  387.     }
  388.     public function setCompanyName(?string $companyName): static
  389.     {
  390.         $this->companyName $companyName;
  391.         return $this;
  392.     }
  393.     public function getTempToken(): ?string
  394.     {
  395.         return $this->tempToken;
  396.     }
  397.     public function setTempToken(?string $tempToken): static
  398.     {
  399.         $this->tempToken $tempToken;
  400.         return $this;
  401.     }
  402.     public function isMemberOptionAutoPublish(): ?bool
  403.     {
  404.         return $this->memberOptionAutoPublish;
  405.     }
  406.     public function setMemberOptionAutoPublish(bool $memberOptionAutoPublish): static
  407.     {
  408.         $this->memberOptionAutoPublish $memberOptionAutoPublish;
  409.         return $this;
  410.     }
  411.     /**
  412.      * @return Collection<int, Sms>
  413.      */
  414.     public function getSms(): Collection
  415.     {
  416.         return $this->sms;
  417.     }
  418.     public function addSms(Sms $sms): static
  419.     {
  420.         if (!$this->sms->contains($sms)) {
  421.             $this->sms->add($sms);
  422.             $sms->setUser($this);
  423.         }
  424.         return $this;
  425.     }
  426.     public function removeSms(Sms $sms): static
  427.     {
  428.         if ($this->sms->removeElement($sms)) {
  429.             // set the owning side to null (unless already changed)
  430.             if ($sms->getUser() === $this) {
  431.                 $sms->setUser(null);
  432.             }
  433.         }
  434.         return $this;
  435.     }
  436.     /**
  437.      * @return Collection<int, ProposedArticle>
  438.      */
  439.     public function getProposedArticles(): Collection
  440.     {
  441.         return $this->proposedArticles;
  442.     }
  443.     public function addProposedArticle(ProposedArticle $proposedArticle): static
  444.     {
  445.         if (!$this->proposedArticles->contains($proposedArticle)) {
  446.             $this->proposedArticles->add($proposedArticle);
  447.             $proposedArticle->setUser($this);
  448.         }
  449.         return $this;
  450.     }
  451.     public function removeProposedArticle(ProposedArticle $proposedArticle): static
  452.     {
  453.         if ($this->proposedArticles->removeElement($proposedArticle)) {
  454.             // set the owning side to null (unless already changed)
  455.             if ($proposedArticle->getUser() === $this) {
  456.                 $proposedArticle->setUser(null);
  457.             }
  458.         }
  459.         return $this;
  460.     }
  461.     /**
  462.      * @return Collection<int, Notification>
  463.      */
  464.     public function getNotifications(): Collection
  465.     {
  466.         return $this->notifications;
  467.     }
  468.     public function addNotification(Notification $notification): static
  469.     {
  470.         if (!$this->notifications->contains($notification)) {
  471.             $this->notifications->add($notification);
  472.             $notification->setUser($this);
  473.         }
  474.         return $this;
  475.     }
  476.     public function removeNotification(Notification $notification): static
  477.     {
  478.         if ($this->notifications->removeElement($notification)) {
  479.             // set the owning side to null (unless already changed)
  480.             if ($notification->getUser() === $this) {
  481.                 $notification->setUser(null);
  482.             }
  483.         }
  484.         return $this;
  485.     }
  486. }