src/Entity/User.php line 24

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Enum\Ville;
  4. use DateTime;
  5. use Doctrine\ORM\Mapping as ORM;
  6. use App\Repository\UserRepository;
  7. use Doctrine\Common\Collections\Collection;
  8. use Doctrine\Common\Collections\ArrayCollection;
  9. use PhpParser\Node\Expr\BinaryOp\BooleanOr;
  10. use Symfony\Component\Validator\Constraints as Assert;
  11. use Vich\UploaderBundle\Mapping\Annotation\Uploadable;
  12. use Symfony\Component\Security\Core\User\UserInterface;
  13. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  14. use Vich\UploaderBundle\Mapping\Annotation as Vich;
  15. /**
  16.  * @ORM\Entity(repositoryClass=UserRepository::class)
  17.  * @UniqueEntity("email" , message="Cette adresse est déja utiliseé")
  18.  * @Vich\Uploadable
  19.  */
  20. class User implements UserInterface
  21. {
  22.     /**
  23.      * @ORM\Id
  24.      * @ORM\GeneratedValue
  25.      * @ORM\Column(type="integer")
  26.      */
  27.     private $id;
  28.     /**
  29.      * @ORM\Column(type="string", length=180, unique=true)
  30.      * @Assert\Email(
  31.      *     message = "The email '{{ value }}' is not a valid email."
  32.      * )
  33.      * @Assert\NotBlank(
  34.      *  message= "champs email est obligatiore."
  35.      * ) 
  36.      */
  37.     private $email;
  38.     /**
  39.      * @ORM\Column(type="json")
  40.      */
  41.     private $roles = [];
  42.   
  43.     /**
  44.      * @var string The hashed password
  45.      * @ORM\Column(type="string",nullable=true)
  46.      * @Assert\NotBlank(
  47.      *  message= "champs password est obligatiore."
  48.      * )
  49.      * @Assert\Length(min="8", minMessage="Votre mot de passe doit faire minimum 8 caractéres")
  50.      * @Assert\EqualTo(propertyPath="confirm_password", message="Le mot de passe et sa confirmation ne coïncident pas. ")
  51.      */
  52.     private $password;
  53.     /**
  54.      * @Assert\NotBlank(
  55.      *  message= "champs confirm password est obligatiore."
  56.      * ) 
  57.      * @Assert\EqualTo(propertyPath="password")
  58.      */
  59.     public $confirm_password;
  60.     /**
  61.      * @ORM\Column(type="datetime")
  62.      */
  63.     private $createdAt;
  64.     /**
  65.      * @ORM\Column(type="string", length=255)
  66.      * @Assert\NotBlank(
  67.      *  message= "champs username est obligatiore."
  68.      * ) 
  69.      */
  70.     private $username;
  71.     /**
  72.      * @ORM\Column(type="string", length=255, nullable=true)
  73.      */
  74.     private $token;
  75.     /**
  76.      * @ORM\Column(type="string", length=255)
  77.      * @Assert\NotBlank(
  78.      *  message= "champs lastname est obligatiore."
  79.      * ) 
  80.      */
  81.     private $lastname;
  82.     /**
  83.      * @ORM\Column(type="string", length=255)
  84.      * @Assert\NotBlank(
  85.      *  message= "champs phone est obligatiore."
  86.      * ) 
  87.      * @Assert\Length(min="8", minMessage="Votre numreo de Télèphone doit contenir 8 chiffres")
  88.      */
  89.     private $phone;
  90.     /**
  91.      * @ORM\Column(type="string", length=255,nullable=true)
  92.      * @Assert\NotBlank(
  93.      *  message= "champs address est obligatiore."
  94.      * ) 
  95.      */
  96.     private $address;
  97.     /**
  98.      * @ORM\Column(type="string", length=255)
  99.      * @Assert\NotBlank(
  100.      *  message= "champs ville est obligatiore."
  101.      * ) 
  102.      */
  103.     private $ville;
  104.     /**
  105.      * @ORM\OneToMany(targetEntity=Demande::class, mappedBy="user")
  106.      */
  107.     private $demandes;
  108.     /**
  109.      * @ORM\OneToMany(targetEntity=Comments::class, mappedBy="user")
  110.      */
  111.     private $comments;
  112.     /**
  113.      * @ORM\OneToMany(targetEntity=Offre::class, mappedBy="user")
  114.      */
  115.     private $offres;
  116.     /**
  117.      * @ORM\OneToMany(targetEntity=CommentOffre::class, mappedBy="user")
  118.      */
  119.     private $commentOffres;
  120.     /**
  121.      * @ORM\OneToOne(targetEntity=UserImage::class, mappedBy="userImages", cascade={"persist", "remove"})
  122.      */
  123.     private $userImage;
  124.     /**
  125.      * @ORM\Column(type="string", length=255, nullable=true)
  126.      */
  127.     private $reset_token;
  128.     /**
  129.      * @ORM\Column(type="datetime", nullable=true)
  130.      * @Assert\NotBlank(
  131.      *  message= "champs date naissance est obligatiore."
  132.      * ) 
  133.      */
  134.     private $naissance;
  135.     /**
  136.      * @ORM\Column(type="string", nullable=true)
  137.      */
  138.     private $experience;
  139.     /**
  140.      * @ORM\Column(type="string", nullable=true)
  141.      * @Assert\Length(
  142.      *      min = 10,
  143.      *      max = 12,
  144.      *      minMessage = "numéro social doit avoir  {{ limit }} chiffres minimum",
  145.      *      maxMessage = "Numéro social doit avoir {{ limit }} chiffres maximum"
  146.      * )
  147.      */
  148.     private $sociale;
  149.     /**
  150.      * @ORM\Column(type="string", nullable=true) 
  151.      * @Assert\Length(
  152.      *      min = 20,
  153.      *      max = 20,
  154.      *      minMessage = "numéro bancaire doit avoir  {{ limit }} chiffres minimum",
  155.      *      maxMessage = "Numéro bancaire doit avoir {{ limit }} chiffres maximum"
  156.      * )
  157.      */
  158.     private $bancaire;
  159.     /**
  160.      * @ORM\Column(type="string", nullable=true)
  161.      */
  162.     private $cv;
  163.     /**
  164.      * @ORM\Column(type="string", nullable=true)
  165.      */
  166.     private $identite;
  167.     /**
  168.      * @ORM\Column(type="string", nullable=true)
  169.      */
  170.     private $logo;
  171.     /**
  172.      * @ORM\Column(type="string", length=255, nullable=true)
  173.      */
  174.     private $etablissement;
  175.     /**
  176.      * @ORM\Column(type="string", length=255, nullable=true)
  177.      */
  178.     private $a_propos;
  179.     /**
  180.      * @ORM\Column(type="string", length=255, nullable=true)
  181.      * @Assert\Length(
  182.      *      min = 8,
  183.      *      max = 12,
  184.      *      minMessage = "numéro matricule doit avoir  {{ limit }} chiffres minimum",
  185.      *      maxMessage = "Numéro matricule doit avoir {{ limit }} chiffres maximum"
  186.      * )
  187.      */
  188.     private $matricule;
  189.     /**
  190.      * @ORM\Column(type="boolean", nullable=true)
  191.      */
  192.     private $isBlocked;
  193.     /**
  194.      * @ORM\Column(type="boolean", nullable=true)
  195.      */
  196.     private $enabled;
  197.     /**
  198.      * @ORM\OneToMany(targetEntity=Candidature::class, mappedBy="user")
  199.      */
  200.     private $candidatures;
  201.     public function __construct()
  202.     {
  203.         $this->roles = ['ROLE_USER'];
  204.         $this->createdAt = new \DateTime();
  205.         $this->enabled false;
  206.         $this->isBlocked false;
  207.         $this->demandes = new ArrayCollection();
  208.         $this->comments = new ArrayCollection();
  209.         $this->offres = new ArrayCollection();
  210.         $this->commentOffres = new ArrayCollection();
  211.         $this->candidatures = new ArrayCollection();
  212.     }
  213.     public function getId(): ?int
  214.     {
  215.         return $this->id;
  216.     }
  217.     public function getEmail(): ?string
  218.     {
  219.         return $this->email;
  220.     }
  221.     public function setEmail(string $email): self
  222.     {
  223.         $this->email $email;
  224.         return $this;
  225.     }
  226.     /**
  227.      * A visual identifier that represents this user.
  228.      *
  229.      * @see UserInterface
  230.      */
  231.     public function getUsername(): string
  232.     {
  233.         //return (string) $this->email;
  234.         return $this->username;
  235.     }
  236.     public function getEtablissement(): ?string
  237.     {
  238.         return $this->etablissement;
  239.     }
  240.     public function setEtablissement(?string $etablissement): self
  241.     {
  242.         $this->etablissement $etablissement;
  243.         return $this;
  244.     }
  245.     public function getAPropos(): ?string
  246.     {
  247.         return $this->a_propos;
  248.     }
  249.     public function setAPropos(?string $a_propos): self
  250.     {
  251.         $this->a_propos $a_propos;
  252.         return $this;
  253.     }
  254.     public function getMatricule(): ?string
  255.     {
  256.         return $this->matricule;
  257.     }
  258.     public function setMatricule(?string $matricule): self
  259.     {
  260.         $this->matricule $matricule;
  261.         return $this;
  262.     }
  263.     /**
  264.      * @see UserInterface
  265.      */
  266.     public function getRoles(): array
  267.     {
  268.         $roles $this->roles;
  269.         // guarantee every user at least has ROLE_USER
  270.         $roles[] = 'ROLE_USER';
  271.         return array_unique($roles);
  272.     }
  273.     public function setRoles(array $roles): self
  274.     {
  275.         $this->roles $roles;
  276.         return $this;
  277.     }
  278.     /**
  279.      * @see UserInterface
  280.      */
  281.     public function getPassword(): string
  282.     {
  283.         return (string) $this->password;
  284.     }
  285.     public function setPassword(string $password): self
  286.     {
  287.         $this->password $password;
  288.         return $this;
  289.     }
  290.     /**
  291.      * Returning a salt is only needed, if you are not using a modern
  292.      * hashing algorithm (e.g. bcrypt or sodium) in your security.yaml.
  293.      *
  294.      * @see UserInterface
  295.      */
  296.     public function getSalt(): ?string
  297.     {
  298.         return null;
  299.     }
  300.     /**
  301.      * @see UserInterface
  302.      */
  303.     public function eraseCredentials()
  304.     {
  305.         // If you store any temporary, sensitive data on the user, clear it here
  306.         // $this->plainPassword = null;
  307.     }
  308.     public function getCreatedAt(): ?\DateTimeInterface
  309.     {
  310.         return $this->createdAt;
  311.     }
  312.     public function setCreatedAt(\DateTimeInterface $createdAt): self
  313.     {
  314.         $this->createdAt $createdAt;
  315.         return $this;
  316.     }
  317.     public function getEnabled(): ?bool
  318.     {
  319.         return $this->enabled;
  320.     }
  321.     public function setEnabled(bool $enabled): self
  322.     {
  323.         $this->enabled $enabled;
  324.         return $this;
  325.     }
  326.     public function setUsername(string $username): self
  327.     {
  328.         $this->username $username;
  329.         return $this;
  330.     }
  331.     public function getToken(): ?string
  332.     {
  333.         return $this->token;
  334.     }
  335.     public function setToken(?string $token): self
  336.     {
  337.         $this->token $token;
  338.         return $this;
  339.     }
  340.     public function getLastname(): ?string
  341.     {
  342.         return $this->lastname;
  343.     }
  344.     public function setLastname(string $lastname): self
  345.     {
  346.         $this->lastname $lastname;
  347.         return $this;
  348.     }
  349.     public function getPhone(): ?string
  350.     {
  351.         return $this->phone;
  352.     }
  353.     public function setPhone(string $phone): self
  354.     {
  355.         $this->phone $phone;
  356.         return $this;
  357.     }
  358.     public function getAddress(): ?string
  359.     {
  360.         return $this->address;
  361.     }
  362.     public function setAddress(string $address): self
  363.     {
  364.         $this->address $address;
  365.         return $this;
  366.     }
  367.     public function getVille(): ?string
  368.     {
  369.         return $this->ville;
  370.     }
  371.     public function setVille(string $ville): self
  372.     {
  373.         $this->ville $ville;
  374.         return $this;
  375.     }
  376.     /**
  377.      * @return Collection|Demande[]
  378.      */
  379.     public function getDemandes(): Collection
  380.     {
  381.         return $this->demandes;
  382.     }
  383.     public function addDemande(Demande $demande): self
  384.     {
  385.         if (!$this->demandes->contains($demande)) {
  386.             $this->demandes[] = $demande;
  387.             $demande->setUser($this);
  388.         }
  389.         return $this;
  390.     }
  391.     public function removeDemande(Demande $demande): self
  392.     {
  393.         if ($this->demandes->removeElement($demande)) {
  394.             // set the owning side to null (unless already changed)
  395.             if ($demande->getUser() === $this) {
  396.                 $demande->setUser(null);
  397.             }
  398.         }
  399.         return $this;
  400.     }
  401.     public function __toString()
  402.     {
  403.         return $this->username;
  404.     }
  405.     /**
  406.      * @return Collection|Comments[]
  407.      */
  408.     public function getComments(): Collection
  409.     {
  410.         return $this->comments;
  411.     }
  412.     public function addComment(Comments $comment): self
  413.     {
  414.         if (!$this->comments->contains($comment)) {
  415.             $this->comments[] = $comment;
  416.             $comment->setUser($this);
  417.         }
  418.         return $this;
  419.     }
  420.     public function removeComment(Comments $comment): self
  421.     {
  422.         if ($this->comments->removeElement($comment)) {
  423.             // set the owning side to null (unless already changed)
  424.             if ($comment->getUser() === $this) {
  425.                 $comment->setUser(null);
  426.             }
  427.         }
  428.         return $this;
  429.     }
  430.     /**
  431.      * @return Collection|Offre[]
  432.      */
  433.     public function getOffres(): Collection
  434.     {
  435.         return $this->offres;
  436.     }
  437.     public function addOffre(Offre $offre): self
  438.     {
  439.         if (!$this->offres->contains($offre)) {
  440.             $this->offres[] = $offre;
  441.             $offre->setUser($this);
  442.         }
  443.         return $this;
  444.     }
  445.     public function removeOffre(Offre $offre): self
  446.     {
  447.         if ($this->offres->removeElement($offre)) {
  448.             // set the owning side to null (unless already changed)
  449.             if ($offre->getUser() === $this) {
  450.                 $offre->setUser(null);
  451.             }
  452.         }
  453.         return $this;
  454.     }
  455.     /**
  456.      * @return Collection|CommentOffre[]
  457.      */
  458.     public function getCommentOffres(): Collection
  459.     {
  460.         return $this->commentOffres;
  461.     }
  462.     public function addCommentOffre(CommentOffre $commentOffre): self
  463.     {
  464.         if (!$this->commentOffres->contains($commentOffre)) {
  465.             $this->commentOffres[] = $commentOffre;
  466.             $commentOffre->setUser($this);
  467.         }
  468.         return $this;
  469.     }
  470.     public function removeCommentOffre(CommentOffre $commentOffre): self
  471.     {
  472.         if ($this->commentOffres->removeElement($commentOffre)) {
  473.             // set the owning side to null (unless already changed)
  474.             if ($commentOffre->getUser() === $this) {
  475.                 $commentOffre->setUser(null);
  476.             }
  477.         }
  478.         return $this;
  479.     }
  480.     public function getUserImage(): ?UserImage
  481.     {
  482.         return $this->userImage;
  483.     }
  484.     public function setUserImage(?UserImage $userImage): self
  485.     {
  486.         // unset the owning side of the relation if necessary
  487.         if ($userImage === null && $this->userImage !== null) {
  488.             $this->userImage->setUserImages(null);
  489.         }
  490.         // set the owning side of the relation if necessary
  491.         if ($userImage !== null && $userImage->getUserImages() !== $this) {
  492.             $userImage->setUserImages($this);
  493.         }
  494.         $this->userImage $userImage;
  495.         return $this;
  496.     }
  497.     public function getResetToken(): ?string
  498.     {
  499.         return $this->reset_token;
  500.     }
  501.     public function setResetToken(?string $reset_token): self
  502.     {
  503.         $this->reset_token $reset_token;
  504.         return $this;
  505.     }
  506.     public function getNaissance(): ?Datetime
  507.     {
  508.         return $this->naissance;
  509.     }
  510.     public function setNaissance(DateTime $naissance): self
  511.     {
  512.         $this->naissance $naissance;
  513.         return $this;
  514.     }
  515.     public function getExperience(): ?string
  516.     {
  517.         return $this->experience;
  518.     }
  519.     public function setExperience(string $experience): self
  520.     {
  521.         $this->experience $experience;
  522.         return $this;
  523.     }
  524.     public function getSociale(): ?string
  525.     {
  526.         return $this->sociale;
  527.     }
  528.     public function setSociale(string $sociale): self
  529.     {
  530.         $this->sociale $sociale;
  531.         return $this;
  532.     }
  533.     public function getBancaire(): ?string
  534.     {
  535.         return $this->bancaire;
  536.     }
  537.     public function setBancaire(string $bancaire): self
  538.     {
  539.         $this->bancaire $bancaire;
  540.         return $this;
  541.     }
  542.     public function getCv(): ?string
  543.     {
  544.         return $this->cv;
  545.     }
  546.     public function setLogo(string $logo): self
  547.     {
  548.         $this->logo $logo;
  549.         return $this;
  550.     }
  551.     public function getLogo(): ?string
  552.     {
  553.         return $this->logo;
  554.     }
  555.     public function setCv(string $cv): self
  556.     {
  557.         $this->cv $cv;
  558.         return $this;
  559.     }
  560.     public function getIdentite(): ?string
  561.     {
  562.         return $this->identite;
  563.     }
  564.     public function setIdentite(string $identite): self
  565.     {
  566.         $this->identite $identite;
  567.         return $this;
  568.     }
  569.     public function getIsBlocked(): ?bool
  570.     {
  571.         return $this->isBlocked;
  572.     }
  573.     public function setIsBlocked(bool $isBlocked): self
  574.     {
  575.         $this->isBlocked $isBlocked;
  576.         return $this;
  577.     }
  578.     /**
  579.      * @return Collection|Candidature[]
  580.      */
  581.     public function getCandidatures(): Collection
  582.     {
  583.         return $this->candidatures;
  584.     }
  585.     public function addCandidature(Candidature $candidature): self
  586.     {
  587.         if (!$this->candidatures->contains($candidature)) {
  588.             $this->candidatures[] = $candidature;
  589.             $candidature->setUser($this);
  590.         }
  591.         return $this;
  592.     }
  593.     public function removeCandidature(Candidature $candidature): self
  594.     {
  595.         if ($this->candidatures->removeElement($candidature)) {
  596.             // set the owning side to null (unless already changed)
  597.             if ($candidature->getUser() === $this) {
  598.                 $candidature->setUser(null);
  599.             }
  600.         }
  601.         return $this;
  602.     }
  603. }