src/Entity/Profile.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Entity\Enum\ContratType;
  4. use App\Repository\ProfileRepository;
  5. use Cassandra\Uuid;
  6. use Doctrine\Common\Collections\ArrayCollection;
  7. use Doctrine\Common\Collections\Collection;
  8. use Doctrine\DBAL\Types\Types;
  9. use Doctrine\ORM\Mapping as ORM;
  10. use Symfony\Component\Serializer\Normalizer\NormalizableInterface;
  11. use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
  12. use Symfony\Component\String\Slugger\AsciiSlugger;
  13. use Symfony\Component\Validator\Constraints as Assert;
  14. /**
  15.  * @ORM\Entity(repositoryClass=ProfileRepository::class)
  16.  */
  17. class Profile implements NormalizableInterface
  18. {
  19.     /**
  20.      * @ORM\Id
  21.      * @ORM\GeneratedValue
  22.      * @ORM\Column(type="integer")
  23.      */
  24.     public $id;
  25.     /**
  26.      * @ORM\Column(type="integer")
  27.      */
  28.     public $cost;
  29.     /**
  30.      * @ORM\Column(type="smallint")
  31.      */
  32.     public $cost_type 0;
  33.     /**
  34.      * @ORM\Column(type="string", length=255)
  35.      */
  36.     public $experience_number;
  37.     /**
  38.      * @ORM\Column(type="smallint")
  39.      */
  40.     public $profile_type;
  41.     /**
  42.      * @ORM\Column(type="text", nullable=true)
  43.      */
  44.     public $about;
  45.     /**
  46.      * @ORM\Column(type="string", length=255, nullable=true)
  47.      */
  48.     public $photo;
  49.     /**
  50.      * @ORM\Column(type="string", length=255, nullable=true)
  51.      */
  52.     public $cv_file;
  53.     /**
  54.      * @ORM\Column(type="string", length=255)
  55.      */
  56.     public $location;
  57.     /**
  58.      * @ORM\Column(type="string", nullable=true)
  59.      */
  60.     public ?string $mobility null;
  61.     /**
  62.      * @ORM\Column(type="string", length=255)
  63.      */
  64.     public $disponibility;
  65.     /**
  66.      * @ORM\ManyToOne(targetEntity=User::class, inversedBy="profiles")
  67.      * @ORM\JoinColumn(nullable=false, onDelete="CASCADE")
  68.      */
  69.     public $user;
  70.     /**
  71.      * @ORM\Column(type="string", length=255)
  72.      */
  73.     public $name;
  74.     /**
  75.      * @ORM\Column(type="string", length=255, nullable=true)
  76.      */
  77.     public $linkedin;
  78.     /**
  79.      * @ORM\Column(type="string", length=255)
  80.      */
  81.     public $title;
  82.     /**
  83.      * @ORM\OneToMany(targetEntity=Skill::class, mappedBy="profile", orphanRemoval=true, cascade={"persist"})
  84.      */
  85.     public $skills;
  86.     /**
  87.      * @ORM\OneToMany(targetEntity=Experience::class, mappedBy="profile", orphanRemoval=true, cascade={"persist"})
  88.      */
  89.     public $experiences;
  90.     /**
  91.      * @ORM\OneToMany(targetEntity=Diplome::class, mappedBy="profile", orphanRemoval=true, cascade={"persist"})
  92.      */
  93.     public $diplomes;
  94.     /**
  95.      * @ORM\OneToMany(targetEntity=Certification::class, mappedBy="profile", cascade={"persist"})
  96.      */
  97.     public $certifications;
  98.     /**
  99.      * @ORM\OneToMany(targetEntity=Candidature::class, mappedBy="profile")
  100.      */
  101.     public $candidatures;
  102.     /**
  103.      * @return mixed
  104.      */
  105.     public function getFinished()
  106.     {
  107.         return $this->finished;
  108.     }
  109.     /**
  110.      * @param mixed $finished
  111.      */
  112.     public function setFinished($finished): void
  113.     {
  114.         $this->finished $finished;
  115.     }
  116.     /**
  117.      * @ORM\Column(type="boolean", nullable=true)
  118.      */
  119.     public $isIntercontrat;
  120.     /**
  121.      * @ORM\Column(type="boolean", nullable=true)
  122.      */
  123.     public $finished;
  124.     /**
  125.      * @ORM\OneToMany(targetEntity=ProfileVisit::class, mappedBy="profile", orphanRemoval=true)
  126.      */
  127.     public $profileVisits;
  128.     /**
  129.      * @ORM\Column(type="string", length=150)
  130.      */
  131.     public $firstname;
  132.     /**
  133.      * @ORM\Column(type="string", length=50)
  134.      */
  135.     public $englishLevel;
  136.     /**
  137.      * @ORM\Column(type="string", length=50)
  138.      */
  139.     public $legalStatus;
  140.     /**
  141.      * @ORM\Column(type="string", length=20, nullable=true)
  142.      */
  143.     public $phone;
  144.     /**
  145.      * @ORM\Column(type="string", length=150)
  146.      */
  147.     public $url;
  148.     /**
  149.      * @ORM\Column(type="string", length=190, nullable=true)
  150.      */
  151.     public $cvname;
  152.     /**
  153.      * @ORM\Column(type="boolean", nullable=true)
  154.      */
  155.     public $isVisible;
  156.     /**
  157.      * @ORM\Column(type="boolean", nullable=true)
  158.      */
  159.     public $isHighlight;
  160.     /**
  161.      * @ORM\OneToMany(targetEntity=ProfileFavorite::class, mappedBy="profile")
  162.      */
  163.     private $profileFavorites;
  164.     /**
  165.      *
  166.      * @ORM\ManyToOne(targetEntity=User::class)
  167.      */
  168.     private $userRecruteur;
  169.     /**
  170.      *
  171.      * @ORM\Column(type="string", length=255, nullable=true)
  172.      */
  173.     private $cvOlderScan;
  174.     /**
  175.      * @ORM\Column(type="text", nullable=true)
  176.      */
  177.     public $cvText;
  178.     /**
  179.      * @ORM\Column(type="string", length=150, nullable=true)
  180.      */
  181.     private $slug null;
  182.     /**
  183.      * @ORM\Column(type="date", nullable=true)
  184.      */
  185.     private ?\DateTimeInterface $birthday null;
  186.     /**
  187.      * @ORM\Column(type="string", length=50, nullable=true)
  188.      */
  189.     private $cdi;
  190.     /**
  191.      * @ORM\Column(type="integer",  nullable=true)
  192.      */
  193.     private $montant;
  194.     /**
  195.      * @ORM\Column(type="json", nullable=true)
  196.      */
  197.     private ?array $contrats = []; // Stocke plusieurs contrats en tant que tableau
  198.     public function getContrats(): ?array
  199.     {
  200.         return $this->contrats;
  201.     }
  202.     public function setContrats(?array $contrats): self
  203.     {
  204.         $this->contrats $contrats// Le tableau de valeurs
  205.         return $this;
  206.     }
  207.     // Getter and Setter
  208.     public function getMontant(): ?int
  209.     {
  210.         return $this->montant;
  211.     }
  212.     public function setMontant(?int $montant): self
  213.     {
  214.         $this->montant $montant;
  215.         return $this;
  216.     }
  217.     public function getBirthday(): ?\DateTimeInterface
  218.     {
  219.         return $this->birthday;
  220.     }
  221.     /**
  222.      * @return mixed
  223.      */
  224.     public function getCdi()
  225.     {
  226.         return $this->cdi;
  227.     }
  228.     /**
  229.      * @param mixed $cdi
  230.      */
  231.     public function setCdi($cdi): void
  232.     {
  233.         $this->cdi $cdi;
  234.     }
  235.     public function setBirthday(?\DateTimeInterface $birthday): void
  236.     {
  237.         $this->birthday $birthday;
  238.     }
  239.     // // Getter
  240.     // public function getSalaryBrutCdi(): ?float
  241.     // {
  242.     //     return $this->salaryBrutCdi;
  243.     // }
  244.     //
  245.     // // Setter
  246.     // public function setSalaryBrutCdi(float $salaryBrutCdi): self
  247.     // {
  248.     //     $this->salaryBrutCdi = $salaryBrutCdi;
  249.     //
  250.     //     return $this;
  251.     // }
  252.     //
  253.     // // Getter
  254.     // public function getCdiInterest(): ?bool
  255.     // {
  256.     //     return $this->cdiInterest;
  257.     // }
  258.     //
  259.     // // Setter
  260.     // public function setCdiInterest(bool $cdiInterest): self
  261.     // {
  262.     //     $this->cdiInterest = $cdiInterest;
  263.     //
  264.     //     return $this;
  265.     // }
  266.     public function __construct()
  267.     {
  268.         $this->skills = new ArrayCollection();
  269.         $this->experiences = new ArrayCollection();
  270.         $this->diplomes = new ArrayCollection();
  271.         $this->certifications = new ArrayCollection();
  272.         $this->candidatures = new ArrayCollection();
  273.         $this->profileVisits = new ArrayCollection();
  274.         $this->profileFavorites = new ArrayCollection();
  275.     }
  276.     //----------------------------------
  277.     public function getCivilityString(): string
  278.     {
  279.         if ($this->getUser()) {
  280.             if ($this->getUser()->getType() == "freelance") {
  281.                 return $this->getUser()->getCivilityString();
  282.             }
  283.         }
  284.         return "";
  285.     }
  286.     public function updateSlug()
  287.     {
  288.         $slugger = new AsciiSlugger();
  289.         $defaultNum 11000;
  290.         // Utiliser `getId()` s'il est disponible, sinon `uniqid()` pour un identifiant unique temporaire
  291.         $numero $this->getId() !== null $defaultNum $this->getId() : uniqid();
  292.         $slug strtolower($slugger->slug($numero '-' $this->getName()));
  293.         $this->setSlug($slug);
  294.     }
  295.     //----------------------------------
  296.     public function getId(): ?int
  297.     {
  298.         return $this->id;
  299.     }
  300.     public function setId(int $id): self
  301.     {
  302.         $this->id $id;
  303.         return $this;
  304.     }
  305.     public function getCost(): ?int
  306.     {
  307.         return $this->cost;
  308.     }
  309.     public function setCost(?int $cost): self
  310.     {
  311.         $this->cost $cost;
  312.         return $this;
  313.     }
  314.     public function getCostType(): ?int
  315.     {
  316.         return $this->cost_type;
  317.     }
  318.     public function setCostType(int $cost_type): self
  319.     {
  320.         $this->cost_type $cost_type;
  321.         return $this;
  322.     }
  323.     public function getExperienceNumber(): ?string
  324.     {
  325.         return $this->experience_number;
  326.     }
  327.     public function setExperienceNumber(string $experience_number): self
  328.     {
  329.         $this->experience_number $experience_number;
  330.         return $this;
  331.     }
  332.     public function getProfileType(): ?int
  333.     {
  334.         return $this->profile_type;
  335.     }
  336.     public function setProfileType(int $profile_type): self
  337.     {
  338.         $this->profile_type $profile_type;
  339.         return $this;
  340.     }
  341.     public function getPhoto(): ?string
  342.     {
  343.         return $this->photo;
  344.     }
  345.     public function setPhoto(?string $photo): self
  346.     {
  347.         $this->photo $photo;
  348.         return $this;
  349.     }
  350.     public function getCvFile(): ?string
  351.     {
  352.         return $this->cv_file;
  353.     }
  354.     public function setCvFile(?string $cv_file): self
  355.     {
  356.         $this->cv_file $cv_file;
  357.         return $this;
  358.     }
  359.     public function getLocation(): ?string
  360.     {
  361.         return $this->location;
  362.     }
  363.     public function setLocation(string $location): self
  364.     {
  365.         $this->location $location;
  366.         return $this;
  367.     }
  368.     public function getMobility(): ?array
  369.     {
  370.         if (is_array($this->mobility)) {
  371.             return $this->mobility;
  372.         }
  373.         if (is_string($this->mobility)) {
  374.             $decoded json_decode($this->mobilitytrue);
  375.             return is_array($decoded) ? $decoded null;
  376.         }
  377.         return null;
  378.     }
  379.     public function setMobility(?array $mobility): self
  380.     {
  381.         if (is_array($mobility)) {
  382.             // Réindexe pour forcer un tableau indexé (0,1,2,...)
  383.             $mobility array_values($mobility);
  384.             $this->mobility json_encode($mobilityJSON_UNESCAPED_UNICODE);
  385.         } else {
  386.             $this->mobility $mobility;
  387.         }
  388.         return $this;
  389.     }
  390.     public function getDisponibility(): ?string
  391.     {
  392.         return $this->disponibility;
  393.     }
  394.     public function setDisponibility(string $disponibility): self
  395.     {
  396.         $this->disponibility $disponibility;
  397.         return $this;
  398.     }
  399.     public function getUser(): ?User
  400.     {
  401.         return $this->user;
  402.     }
  403.     public function setUser(?User $user): self
  404.     {
  405.         $this->user $user;
  406.         return $this;
  407.     }
  408.     public function getName(): ?string
  409.     {
  410.         return $this->name;
  411.     }
  412.     public function setName(string $name): self
  413.     {
  414.         $this->name $name;
  415.         return $this;
  416.     }
  417.     public function getFullName(): ?string
  418.     {
  419.         return $this->firstname ' ' $this->name;
  420.     }
  421.     public function isPrivate(): bool
  422.     {
  423.         return $this->profile_type === \App\Entity\Enum\Profile::PRIVATE;
  424.     }
  425.     public function isPublic(): bool
  426.     {
  427.         return $this->profile_type === \App\Entity\Enum\Profile::PUBLIC;
  428.     }
  429.     public function isHidden(): bool
  430.     {
  431.         return $this->profile_type === \App\Entity\Enum\Profile::HIDDEN;
  432.     }
  433.     public function getPublicName(): string
  434.     {
  435.         if ($this->isPrivate()) {
  436.             return $this->getFirstname()[0] . '.';
  437.         }
  438.         return $this->getFullName();
  439.     }
  440.     public function getLinkedin(): ?string
  441.     {
  442.         return $this->linkedin;
  443.     }
  444.     public function setLinkedin(?string $linkedin): self
  445.     {
  446.         $this->linkedin $linkedin;
  447.         return $this;
  448.     }
  449.     public function getTitle(): ?string
  450.     {
  451.         return $this->title;
  452.     }
  453.     public function setTitle(string $title): self
  454.     {
  455.         $this->title $title;
  456.         return $this;
  457.     }
  458.     /**
  459.      * @return Collection|Skill[]
  460.      */
  461.     public function getSkills(): Collection
  462.     {
  463.         return $this->skills;
  464.     }
  465.     public function addSkill(Skill $skill): self
  466.     {
  467.         if (!$this->skills->contains($skill)) {
  468.             $this->skills->add($skill);
  469.             $skill->setProfile($this);
  470.         }
  471.         return $this;
  472.     }
  473.     public function removeSkill(Skill $skill): self
  474.     {
  475.         if ($this->skills->removeElement($skill)) {
  476.             // set the owning side to null (unless already changed)
  477.             if ($skill->getProfile() === $this) {
  478.                 $skill->setProfile(null);
  479.             }
  480.         }
  481.         return $this;
  482.     }
  483.     /**
  484.      * @return Collection|Experience[]
  485.      */
  486.     public function getExperiences(): Collection
  487.     {
  488.         return $this->experiences;
  489.     }
  490.     public function resetContent()
  491.     {
  492.         $this->experiences = new ArrayCollection();
  493.         $this->diplomes = new ArrayCollection();
  494.         $this->certifications = new ArrayCollection();
  495.         $this->skills = new ArrayCollection();
  496.     }
  497.     public function addExperience(Experience $experience): self
  498.     {
  499.         if (!$this->experiences->contains($experience)) {
  500.             $this->experiences->add($experience);
  501.             $experience->setProfile($this);
  502.         }
  503.         return $this;
  504.     }
  505.     public function removeExperience(Experience $experience): self
  506.     {
  507.         if ($this->experiences->removeElement($experience)) {
  508.             // set the owning side to null (unless already changed)
  509.             if ($experience->getProfile() === $this) {
  510.                 $experience->setProfile(null);
  511.             }
  512.         }
  513.         return $this;
  514.     }
  515.     /**
  516.      * @return Collection|Diplome[]
  517.      */
  518.     public function getDiplomes(): Collection
  519.     {
  520.         return $this->diplomes;
  521.     }
  522.     public function addDiplome(Diplome $diplome): self
  523.     {
  524.         if (!$this->diplomes->contains($diplome)) {
  525.             $this->diplomes->add($diplome);
  526.             $diplome->setProfile($this);
  527.         }
  528.         return $this;
  529.     }
  530.     public function removeDiplome(Diplome $diplome): self
  531.     {
  532.         if ($this->diplomes->removeElement($diplome)) {
  533.             // set the owning side to null (unless already changed)
  534.             if ($diplome->getProfile() === $this) {
  535.                 $diplome->setProfile(null);
  536.             }
  537.         }
  538.         return $this;
  539.     }
  540.     /**
  541.      * @return Collection|Certification[]
  542.      */
  543.     public function getCertifications(): Collection
  544.     {
  545.         return $this->certifications;
  546.     }
  547.     public function addCertification(Certification $certification): self
  548.     {
  549.         if (!$this->certifications->contains($certification)) {
  550.             $this->certifications[] = $certification;
  551.             $certification->setProfile($this);
  552.         }
  553.         return $this;
  554.     }
  555.     public function removeCertification(Certification $certification): self
  556.     {
  557.         if ($this->certifications->removeElement($certification)) {
  558.             // set the owning side to null (unless already changed)
  559.             if ($certification->getProfile() === $this) {
  560.                 $certification->setProfile(null);
  561.             }
  562.         }
  563.         return $this;
  564.     }
  565.     /**
  566.      * @return Collection|Candidature[]
  567.      */
  568.     public function getCandidatures(): Collection
  569.     {
  570.         return $this->candidatures;
  571.     }
  572.     public function addCandidature(Candidature $candidature): self
  573.     {
  574.         if (!$this->candidatures->contains($candidature)) {
  575.             $this->candidatures->add($candidature);
  576.             $candidature->setProfile($this);
  577.         }
  578.         return $this;
  579.     }
  580.     public function removeCandidature(Candidature $candidature): self
  581.     {
  582.         if ($this->candidatures->removeElement($candidature)) {
  583.             // set the owning side to null (unless already changed)
  584.             if ($candidature->getProfile() === $this) {
  585.                 $candidature->setProfile(null);
  586.             }
  587.         }
  588.         return $this;
  589.     }
  590.     public function getIsIntercontrat(): ?bool
  591.     {
  592.         return $this->isIntercontrat;
  593.     }
  594.     public function setIsIntercontrat(?bool $isIntercontrat): self
  595.     {
  596.         $this->isIntercontrat $isIntercontrat;
  597.         return $this;
  598.     }
  599.     /**
  600.      * @return Collection|ProfileVisit[]
  601.      */
  602.     public function getProfileVisits(): Collection
  603.     {
  604.         return $this->profileVisits;
  605.     }
  606.     public function addProfileVisit(ProfileVisit $profileVisit): self
  607.     {
  608.         if (!$this->profileVisits->contains($profileVisit)) {
  609.             $this->profileVisits[] = $profileVisit;
  610.             $profileVisit->setProfile($this);
  611.         }
  612.         return $this;
  613.     }
  614.     public function removeProfileVisit(ProfileVisit $profileVisit): self
  615.     {
  616.         if ($this->profileVisits->removeElement($profileVisit)) {
  617.             // set the owning side to null (unless already changed)
  618.             if ($profileVisit->getProfile() === $this) {
  619.                 $profileVisit->setProfile(null);
  620.             }
  621.         }
  622.         return $this;
  623.     }
  624.     public function getFirstname(): ?string
  625.     {
  626.         return $this->firstname;
  627.     }
  628.     public function setFirstname(string $firstname): self
  629.     {
  630.         $this->firstname $firstname;
  631.         return $this;
  632.     }
  633.     public function getEnglishLevel(): ?string
  634.     {
  635.         return $this->englishLevel;
  636.     }
  637.     public function setEnglishLevel(string $englishLevel): self
  638.     {
  639.         $this->englishLevel $englishLevel;
  640.         return $this;
  641.     }
  642.     public function getLegalStatus(): ?string
  643.     {
  644.         return $this->legalStatus;
  645.     }
  646.     public function setLegalStatus(?string $legalStatus): self
  647.     {
  648.         $this->legalStatus $legalStatus;
  649.         return $this;
  650.     }
  651.     public function getUrl(): ?string
  652.     {
  653.         return $this->url;
  654.     }
  655.     public function setUrl(string $url): self
  656.     {
  657.         $this->url $url;
  658.         return $this;
  659.     }
  660.     public function normalize(NormalizerInterface $normalizerstring $format null, array $context = [])
  661.     {
  662.         $experiences = [];
  663.         $formations = [];
  664.         $certifications = [];
  665.         $skills = [];
  666.         $experienceList $this->getExperiences();
  667.         $formationList $this->getDiplomes();
  668.         $certificationList $this->getCertifications();
  669.         $skillList $this->getSkills();
  670.         foreach ($experienceList as $experience) {
  671.             $experiences[] = [
  672.                 'title' => $experience->getTitle(),
  673.                 'environnement' => $experience->getEnvironment(),
  674.                 'missions' => $experience->getMissions(),
  675.                 'objectif' => $experience->getObjectif(),
  676.             ];
  677.         }
  678.         foreach ($formationList as $formation) {
  679.             $formations[] = [
  680.                 'title' => $formation->getTitle(),
  681.                 'description' => $formation->getDescription(),
  682.             ];
  683.         }
  684.         foreach ($certificationList as $certification) {
  685.             $certifications[] = $certification->getTitle();
  686.         }
  687.         foreach ($skillList as $skill) {
  688.             $skills[] = [
  689.                 'name' => $skill->getName(),
  690.                 'level' => $skill->getLevel(),
  691.             ];
  692.         }
  693.         return [
  694.             'title' => $this->getTitle(),
  695.             'experiences' => $experiences,
  696.             'formations' => $formations,
  697.             'certifications' => $certifications,
  698.             'skills' => $skills,
  699.             'cost' => $this->getCost(),
  700.             'category' => $this->getIsIntercontrat() ? 'intercontrat' 'profile',
  701.             'mobility' => $this->getMobility(),
  702.             'disponibility' => $this->getDisponibility(),
  703.             'visible' => $this->isVisible ?? false,
  704.             'highlight' => $this->isHighlight ?? false,
  705.             'description' => $this->getAbout(),
  706.             'identification' => $this->getId(),
  707.         ];
  708.     }
  709.     public function getCvname(): ?string
  710.     {
  711.         return $this->cvname;
  712.     }
  713.     public function setCvname(?string $cvname): self
  714.     {
  715.         $this->cvname $cvname;
  716.         return $this;
  717.     }
  718.     public function getIsVisible(): ?bool
  719.     {
  720.         return $this->isVisible;
  721.     }
  722.     public function setIsVisible(?bool $isVisible): self
  723.     {
  724.         $this->isVisible $isVisible;
  725.         return $this;
  726.     }
  727.     public function getIsHighlight(): ?bool
  728.     {
  729.         return $this->isHighlight;
  730.     }
  731.     public function setIsHighlight(?bool $isHighlight): self
  732.     {
  733.         $this->isHighlight $isHighlight;
  734.         return $this;
  735.     }
  736.     /**
  737.      * @return Collection<int, ProfileFavorite>
  738.      */
  739.     public function getProfileFavorites(): Collection
  740.     {
  741.         return $this->profileFavorites;
  742.     }
  743.     public function addProfileFavorite(ProfileFavorite $profileFavorite): self
  744.     {
  745.         if (!$this->profileFavorites->contains($profileFavorite)) {
  746.             $this->profileFavorites[] = $profileFavorite;
  747.             $profileFavorite->setProfile($this);
  748.         }
  749.         return $this;
  750.     }
  751.     public function removeProfileFavorite(ProfileFavorite $profileFavorite): self
  752.     {
  753.         if ($this->profileFavorites->removeElement($profileFavorite)) {
  754.             // set the owning side to null (unless already changed)
  755.             if ($profileFavorite->getProfile() === $this) {
  756.                 $profileFavorite->setProfile(null);
  757.             }
  758.         }
  759.         return $this;
  760.     }
  761.     public function getAbout(): ?string
  762.     {
  763.         return $this->about;
  764.     }
  765.     public function setAbout(?string $about): self
  766.     {
  767.         $this->about $about;
  768.         return $this;
  769.     }
  770.     public function isIsIntercontrat(): ?bool
  771.     {
  772.         return $this->isIntercontrat;
  773.     }
  774.     public function getPhone(): ?string
  775.     {
  776.         return $this->phone;
  777.     }
  778.     public function setPhone(?string $phone): self
  779.     {
  780.         $this->phone $phone;
  781.         return $this;
  782.     }
  783.     public function isIsVisible(): ?bool
  784.     {
  785.         return $this->isVisible;
  786.     }
  787.     public function isIsHighlight(): ?bool
  788.     {
  789.         return $this->isHighlight;
  790.     }
  791.     public function getUserRecruteur(): ?User
  792.     {
  793.         return $this->userRecruteur;
  794.     }
  795.     public function setUserRecruteur(?User $userRecruteur): self
  796.     {
  797.         $this->userRecruteur $userRecruteur;
  798.         return  $this;
  799.     }
  800.     public function getCvOlderScan(): ?string
  801.     {
  802.         return $this->cvOlderScan;
  803.     }
  804.     public function setCvOlderScan(?string $cvOlderScan): self
  805.     {
  806.         $this->cvOlderScan $cvOlderScan;
  807.         return $this;
  808.     }
  809.     public function getCvText(): ?string
  810.     {
  811.         return $this->cvText;
  812.     }
  813.     public function setCvText(?string $cvText): self
  814.     {
  815.         $this->cvText $cvText;
  816.         return $this;
  817.     }
  818.     public function getSlug(): ?string
  819.     {
  820.         return $this->slug;
  821.     }
  822.     public function setSlug(?string $slug): self
  823.     {
  824.         $this->slug $slug;
  825.         return $this;
  826.     }
  827. }