src/Entity/Core/Users.php line 37

Open in your IDE?
  1. <?php
  2. namespace App\Entity\Core;
  3. use App\Entity\Cvs\Candidates;
  4. use App\Entity\Cvs\Invitations;
  5. use App\Entity\Cvs\Shares;
  6. use App\Entity\Houses\Syndicats;
  7. use App\Repository\Core\UsersRepository;
  8. use Doctrine\DBAL\Types\Types;
  9. use Doctrine\ORM\Mapping as ORM;
  10. use Symfony\Component\Security\Core\User\UserInterface;
  11. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  12. use Symfony\Component\Validator\Constraints as Assert;
  13. use Vich\UploaderBundle\Mapping\Annotation as Vich;
  14. use Symfony\Component\HttpFoundation\File\File;
  15. use Symfony\Component\HttpFoundation\File\UploadedFile;
  16. use Vich\UploaderBundle\Entity\File as EmbeddedFile;
  17. use ApiPlatform\Core\Annotation\ApiResource;
  18. use Symfony\Component\Serializer\Annotation\Groups;
  19. use Symfony\Component\Serializer\Annotation\SerializedName;
  20. use Serializable;
  21. use DateTimeImmutable;
  22. use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
  23. /**
  24.  * @ORM\Entity(repositoryClass=UsersRepository::class)
  25.  * @ORM\Table(name="users")
  26.  * @ORM\HasLifecycleCallbacks()
  27.  * @Vich\Uploadable
  28.  *
  29.  * @ApiResource(
  30.  *     normalizationContext={"groups"={"user:read"}},
  31.  *     denormalizationContext={"groups"={"user:write"}}
  32.  * )
  33.  */
  34. class Users implements UserInterfacePasswordAuthenticatedUserInterface\Serializable
  35. {
  36.     /**
  37.      * @ORM\Id
  38.      * @ORM\GeneratedValue
  39.      * @ORM\Column(type="integer")
  40.      *
  41.      * @Groups("user:read")
  42.      */
  43.     private $id;
  44.     /**
  45.      * @var datetime
  46.      *
  47.      * @ORM\Column(name="createdAt", type="datetime", nullable=true)
  48.      *
  49.      * @Groups("user:read")
  50.      */
  51.     private $createdAt;
  52.     /**
  53.      * @var datetime
  54.      *
  55.      * @ORM\Column(name="updatedAt", type="datetime", nullable=true)
  56.      */
  57.     private $updatedAt;
  58.     /**
  59.      * @var datetime
  60.      *
  61.      * @ORM\Column(name="last_login", type="datetime", nullable=true)
  62.      */
  63.     private $lastLogin;
  64.     /**
  65.      * @ORM\Column(type="string", length=180, unique=true)
  66.      * @Groups("user:read")
  67.      */
  68.     private $email;
  69.     /**
  70.      * @ORM\Column(type="string", length=180, nullable=true)
  71.      * @Groups("user:read")
  72.      */
  73.     private $name;
  74.     /**
  75.      * @ORM\Column(type="string", length=180, nullable=true)
  76.      * @Groups("user:read")
  77.      */
  78.     private $lastname;
  79.     /**
  80.      * @ORM\Column(type="json")
  81.      */
  82.     private $roles = [];
  83.     /**
  84.      * @var string The hashed password
  85.      * @ORM\Column(type="string")
  86.      */
  87.     private $password;
  88.     /**
  89.      * @ORM\Column(type="string", length=180, nullable=true)
  90.      */
  91.     private $username;
  92.     /**
  93.      * @ORM\Column(type="boolean", length=180, nullable=true)
  94.      */
  95.     private $first;
  96.     /**
  97.      * @ORM\Column(type="boolean", length=180, nullable=true)
  98.      */
  99.     private $enabled;
  100.     /**
  101.      * @var string
  102.      *
  103.      * @ORM\Column(name="premium", type="boolean", nullable=false)
  104.      */
  105.     private $premium;
  106.     /**
  107.      * NOTE: This is not a mapped field of entity metadata, just a simple property.
  108.      *
  109.      * @Vich\UploadableField(mapping="avatars_files", fileNameProperty="image.name", size="image.size", mimeType="image.mimeType", originalName="image.originalName", dimensions="image.dimensions")
  110.      *
  111.      * @var File|null
  112.      */
  113.     private $imageFile;
  114.     /**
  115.      * @ORM\Embedded(class="Vich\UploaderBundle\Entity\File")
  116.      *
  117.      * @var EmbeddedFile
  118.      */
  119.     private $image;
  120.     /**
  121.      * @var \Agencies
  122.      *
  123.      * @ORM\ManyToOne(targetEntity="App\Entity\Core\Agencies")
  124.      * @ORM\JoinColumns({
  125.      *   @ORM\JoinColumn(name="current_agency_id", referencedColumnName="id", nullable=true)
  126.      * })
  127.      */
  128.     protected $currentAgency;
  129.     /**
  130.      * @var \Agencies
  131.      *
  132.      * @ORM\ManyToOne(targetEntity="App\Entity\Houses\Syndicats")
  133.      * @ORM\JoinColumns({
  134.      *   @ORM\JoinColumn(name="current_syndicat_id", referencedColumnName="id", nullable=true)
  135.      * })
  136.      */
  137.     protected $currentSyndicat;
  138.     /**
  139.      * @ORM\Column(name="password_forgotten", type="string", length=180, nullable=true)
  140.      */
  141.     private $passwordForgotten;
  142.     /**
  143.      * @var datetime
  144.      *
  145.      * @ORM\Column(name="password_forgotten_last_date", type="datetime", nullable=true)
  146.      */
  147.     private $passwordForgottenLastDate;
  148.     /**
  149.      * @var \Rib
  150.      *
  151.      * @ORM\ManyToOne(targetEntity="App\Entity\Core\Rib")
  152.      * @ORM\JoinColumns({
  153.      *   @ORM\JoinColumn(name="rib_id", referencedColumnName="id", nullable=true)
  154.      * })
  155.      */
  156.     protected $rib;
  157.     /**
  158.      * @var string
  159.      *
  160.      * @ORM\Column(name="partenariat", type="boolean", nullable=true)
  161.      */
  162.     private $partenariat;
  163.     /**
  164.      * @ORM\Column(name="description", type="text", nullable=true)
  165.      */
  166.     private $description;
  167.     /**
  168.      * @var string
  169.      *
  170.      * @ORM\Column(name="notifications_messages", type="boolean", nullable=true)
  171.      */
  172.     private $notificationsMessages;
  173.     /**
  174.      * @var string
  175.      *
  176.      * @ORM\Column(name="notifications_suivis", type="boolean", nullable=true)
  177.      */
  178.     private $notificationsSuivis;
  179.     /**
  180.      * @var string
  181.      *
  182.      * @ORM\Column(name="user_commission_unit", type="float", length=11, nullable=true)
  183.      */
  184.     private $userCommissionUnit;
  185.     /**
  186.      * @var string
  187.      *
  188.      * @ORM\Column(name="user_commission_pourcent", type="float", length=11, nullable=true)
  189.      */
  190.     private $userCommissionPourcent;
  191.     /**
  192.      * @var string
  193.      *
  194.      * @ORM\Column(name="type_account", type="string", length=255, nullable=true)
  195.      */
  196.     private $typeAccount;
  197.     /**
  198.      * @var \Candidates
  199.      *
  200.      * @ORM\ManyToOne(targetEntity="App\Entity\Cvs\Candidates")
  201.      * @ORM\JoinColumns({
  202.      *   @ORM\JoinColumn(name="candidate_id", referencedColumnName="id", nullable=true)
  203.      * })
  204.      */
  205.     protected $candidate;
  206.     /**
  207.      * @var string
  208.      *
  209.      * @ORM\Column(name="subscription_customer_stripe", type="string", length=255, nullable=true)
  210.      */
  211.     private $subscriptionCustomerStripe;
  212.     /**
  213.      * @var \Shares
  214.      *
  215.      * @ORM\ManyToOne(targetEntity="App\Entity\Cvs\Shares")
  216.      * @ORM\JoinColumns({
  217.      *   @ORM\JoinColumn(name="share_id", referencedColumnName="id", nullable=true)
  218.      * })
  219.      */
  220.     protected $share;
  221.     /**
  222.      * @var \Invitations
  223.      *
  224.      * @ORM\ManyToOne(targetEntity="App\Entity\Cvs\Invitations")
  225.      * @ORM\JoinColumns({
  226.      *   @ORM\JoinColumn(name="invitation_id", referencedColumnName="id", nullable=true)
  227.      * })
  228.      */
  229.     protected $invitation;
  230.     public function __construct()
  231.     {
  232.         $this->image = new \Vich\UploaderBundle\Entity\File();
  233.     }
  234.     /**
  235.      * @ORM\PrePersist
  236.      */
  237.     public function setCreatedAtValue(): void
  238.     {
  239.         $this->setCreatedAt( new \DateTime("now"));
  240.         $this->setUpdatedAt( new \DateTime("now"));
  241.         $this->setPremium(false);
  242.     }
  243.     /**
  244.      * @ORM\PreUpdate
  245.      */
  246.     public function setUpdatedAtValue(): void
  247.     {
  248.         $this->setUpdatedAt( new \DateTime("now"));
  249.     }
  250.     public function __toString()
  251.     {
  252.         return "#".$this->id." ".$this->getName()." ".$this->getLastname();
  253.     }
  254.     public function getTitlePartner(): ?string
  255.     {
  256.         return "#".$this->id." ".$this->getName()." ".$this->getLastname();
  257.     }
  258.     public function serialize(): string
  259.     {
  260.         return serialize([
  261.             $this->id,
  262.             $this->email,
  263.             $this->password,
  264.             // autres propriétés que vous souhaitez sérialiser, sauf $imageFile
  265.         ]);
  266.     }
  267.     public function unserialize($serialized): void
  268.     {
  269.         list(
  270.             $this->id,
  271.             $this->email,
  272.             $this->password,
  273.             // autres propriétés que vous souhaitez désérialiser, sauf $imageFile
  274.             ) = unserialize($serialized);
  275.     }
  276.     public function getId(): ?int
  277.     {
  278.         return $this->id;
  279.     }
  280.     public function getEmail(): ?string
  281.     {
  282.         return $this->email;
  283.     }
  284.     public function setEmail(string $email): self
  285.     {
  286.         $this->email $email;
  287.         return $this;
  288.     }
  289.     /**
  290.      * @see UserInterface
  291.      */
  292.     public function getRoles(): array
  293.     {
  294.         $roles $this->roles;
  295.         // guarantee every user at least has ROLE_USER
  296.         $roles[] = 'ROLE_USER';
  297.         return array_unique($roles);
  298.     }
  299.     public function setRoles(array $roles): self
  300.     {
  301.         $this->roles $roles;
  302.         return $this;
  303.     }
  304.     /**
  305.      * If manually uploading a file (i.e. not using Symfony Form) ensure an instance
  306.      * of 'UploadedFile' is injected into this setter to trigger the  update. If this
  307.      * bundle's configuration parameter 'inject_on_load' is set to 'true' this setter
  308.      * must be able to accept an instance of 'File' as the bundle will inject one here
  309.      * during Doctrine hydration.
  310.      *
  311.      * @param File|UploadedFile|null $imageFile
  312.      */
  313.     public function setImageFile(?File $imageFile null)
  314.     {
  315.         $this->imageFile $imageFile;
  316.         if (null !== $imageFile) {
  317.             // It is required that at least one field changes if you are using doctrine
  318.             // otherwise the event listeners won't be called and the file is lost
  319.             $this->setUpdatedAt(new \DateTime("now"));
  320.         }
  321.     }
  322.     public function getImageFile(): ?File
  323.     {
  324.         return $this->imageFile;
  325.     }
  326.     public function setImage(EmbeddedFile $image): void
  327.     {
  328.         $this->image $image;
  329.     }
  330.     public function getImage(): ?EmbeddedFile
  331.     {
  332.         return $this->image;
  333.     }
  334.     /**
  335.      * @see UserInterface
  336.      */
  337.     public function getPassword(): string
  338.     {
  339.         return (string) $this->password;
  340.     }
  341.     /**
  342.      * @see UserInterface
  343.      */
  344.     public function getUsername(): string
  345.     {
  346.         return (string) $this->username;
  347.     }
  348.     public function setPassword(string $password): self
  349.     {
  350.         $this->password $password;
  351.         return $this;
  352.     }
  353.     /**
  354.      * @see UserInterface
  355.      */
  356.     public function getSalt()
  357.     {
  358.         // not needed when using the "bcrypt" algorithm in security.yaml
  359.     }
  360.     /**
  361.      * @see UserInterface
  362.      */
  363.     public function eraseCredentials()
  364.     {
  365.         // If you store any temporary, sensitive data on the user, clear it here
  366.         // $this->plainPassword = null;
  367.     }
  368.     public function getCreatedAt(): ?\DateTimeInterface
  369.     {
  370.         return $this->createdAt;
  371.     }
  372.     public function setCreatedAt(?\DateTimeInterface $createdAt): self
  373.     {
  374.         $this->createdAt $createdAt;
  375.         return $this;
  376.     }
  377.     public function getUpdatedAt(): ?\DateTimeInterface
  378.     {
  379.         return $this->updatedAt;
  380.     }
  381.     public function setUpdatedAt(?\DateTimeInterface $updatedAt): self
  382.     {
  383.         $this->updatedAt $updatedAt;
  384.         return $this;
  385.     }
  386.     public function getLastLogin(): ?\DateTimeInterface
  387.     {
  388.         return $this->lastLogin;
  389.     }
  390.     public function setLastLogin(?\DateTimeInterface $lastLogin): self
  391.     {
  392.         $this->lastLogin $lastLogin;
  393.         return $this;
  394.     }
  395.     public function getName(): ?string
  396.     {
  397.         return $this->name;
  398.     }
  399.     public function setName(?string $name): self
  400.     {
  401.         $this->name $name;
  402.         return $this;
  403.     }
  404.     public function getLastname(): ?string
  405.     {
  406.         return $this->lastname;
  407.     }
  408.     public function setLastname(?string $lastname): self
  409.     {
  410.         $this->lastname $lastname;
  411.         return $this;
  412.     }
  413.     public function setUsername(?string $username): self
  414.     {
  415.         $this->username $username;
  416.         return $this;
  417.     }
  418.     public function getFirst(): ?bool
  419.     {
  420.         return $this->first;
  421.     }
  422.     public function setFirst(?bool $first): self
  423.     {
  424.         $this->first $first;
  425.         return $this;
  426.     }
  427.     public function getEnabled(): ?bool
  428.     {
  429.         return $this->enabled;
  430.     }
  431.     public function setEnabled(?bool $enabled): self
  432.     {
  433.         $this->enabled $enabled;
  434.         return $this;
  435.     }
  436.     public function getPremium(): ?bool
  437.     {
  438.         return $this->premium;
  439.     }
  440.     public function setPremium(bool $premium): self
  441.     {
  442.         $this->premium $premium;
  443.         return $this;
  444.     }
  445.     public function getPasswordForgotten(): ?string
  446.     {
  447.         return $this->passwordForgotten;
  448.     }
  449.     public function setPasswordForgotten(?string $passwordForgotten): self
  450.     {
  451.         $this->passwordForgotten $passwordForgotten;
  452.         return $this;
  453.     }
  454.     public function getPasswordForgottenLastDate(): ?\DateTimeInterface
  455.     {
  456.         return $this->passwordForgottenLastDate;
  457.     }
  458.     public function setPasswordForgottenLastDate(?\DateTimeInterface $passwordForgottenLastDate): self
  459.     {
  460.         $this->passwordForgottenLastDate $passwordForgottenLastDate;
  461.         return $this;
  462.     }
  463.     public function getPartenariat(): ?bool
  464.     {
  465.         return $this->partenariat;
  466.     }
  467.     public function setPartenariat(?bool $partenariat): self
  468.     {
  469.         $this->partenariat $partenariat;
  470.         return $this;
  471.     }
  472.     public function getDescription(): ?string
  473.     {
  474.         return $this->description;
  475.     }
  476.     public function setDescription(?string $description): self
  477.     {
  478.         $this->description $description;
  479.         return $this;
  480.     }
  481.     public function getNotificationsMessages(): ?bool
  482.     {
  483.         return $this->notificationsMessages;
  484.     }
  485.     public function setNotificationsMessages(?bool $notificationsMessages): self
  486.     {
  487.         $this->notificationsMessages $notificationsMessages;
  488.         return $this;
  489.     }
  490.     public function getNotificationsSuivis(): ?bool
  491.     {
  492.         return $this->notificationsSuivis;
  493.     }
  494.     public function setNotificationsSuivis(?bool $notificationsSuivis): self
  495.     {
  496.         $this->notificationsSuivis $notificationsSuivis;
  497.         return $this;
  498.     }
  499.     public function getUserCommissionUnit(): ?float
  500.     {
  501.         return $this->userCommissionUnit;
  502.     }
  503.     public function setUserCommissionUnit(?float $userCommissionUnit): self
  504.     {
  505.         $this->userCommissionUnit $userCommissionUnit;
  506.         return $this;
  507.     }
  508.     public function getUserCommissionPourcent(): ?float
  509.     {
  510.         return $this->userCommissionPourcent;
  511.     }
  512.     public function setUserCommissionPourcent(?float $userCommissionPourcent): self
  513.     {
  514.         $this->userCommissionPourcent $userCommissionPourcent;
  515.         return $this;
  516.     }
  517.     public function getCurrentAgency(): ?Agencies
  518.     {
  519.         return $this->currentAgency;
  520.     }
  521.     public function setCurrentAgency(?Agencies $currentAgency): self
  522.     {
  523.         $this->currentAgency $currentAgency;
  524.         return $this;
  525.     }
  526.     public function getRib(): ?Rib
  527.     {
  528.         return $this->rib;
  529.     }
  530.     public function setRib(?Rib $rib): self
  531.     {
  532.         $this->rib $rib;
  533.         return $this;
  534.     }
  535.     public function getCurrentSyndicat(): ?Syndicats
  536.     {
  537.         return $this->currentSyndicat;
  538.     }
  539.     public function setCurrentSyndicat(?Syndicats $currentSyndicat): self
  540.     {
  541.         $this->currentSyndicat $currentSyndicat;
  542.         return $this;
  543.     }
  544.     public function isFirst(): ?bool
  545.     {
  546.         return $this->first;
  547.     }
  548.     public function isEnabled(): ?bool
  549.     {
  550.         return $this->enabled;
  551.     }
  552.     public function isPremium(): ?bool
  553.     {
  554.         return $this->premium;
  555.     }
  556.     public function isPartenariat(): ?bool
  557.     {
  558.         return $this->partenariat;
  559.     }
  560.     public function isNotificationsMessages(): ?bool
  561.     {
  562.         return $this->notificationsMessages;
  563.     }
  564.     public function isNotificationsSuivis(): ?bool
  565.     {
  566.         return $this->notificationsSuivis;
  567.     }
  568.     public function getTypeAccount(): ?string
  569.     {
  570.         return $this->typeAccount;
  571.     }
  572.     public function setTypeAccount(?string $description): self
  573.     {
  574.         $this->typeAccount $description;
  575.         return $this;
  576.     }
  577.     public function getCandidate(): ?Candidates
  578.     {
  579.         return $this->candidate;
  580.     }
  581.     public function setCandidate(?Candidates $candidate): static
  582.     {
  583.         $this->candidate $candidate;
  584.         return $this;
  585.     }
  586.     public function getSubscriptionCustomerStripe(): ?string
  587.     {
  588.         return $this->subscriptionCustomerStripe;
  589.     }
  590.     public function setSubscriptionCustomerStripe(?string $subscriptionCustomerStripe): static
  591.     {
  592.         $this->subscriptionCustomerStripe $subscriptionCustomerStripe;
  593.         return $this;
  594.     }
  595.     public function getShare(): ?Shares
  596.     {
  597.         return $this->share;
  598.     }
  599.     public function setShare(?Shares $share): static
  600.     {
  601.         $this->share $share;
  602.         return $this;
  603.     }
  604.     public function getInvitation(): ?Invitations
  605.     {
  606.         return $this->invitation;
  607.     }
  608.     public function setInvitation(?Invitations $invitation): static
  609.     {
  610.         $this->invitation $invitation;
  611.         return $this;
  612.     }
  613. }