src/Controller/EspaceCandidatController.php line 138

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Candidature;
  4. use App\Entity\Langue;
  5. use App\Entity\OffreEmploi;
  6. use App\Entity\User;
  7. use App\Form\RegistrationFormType;
  8. use App\Repository\CandidatureRepository;
  9. use App\Repository\CvSportifRepository;
  10. use App\Repository\LangueRepository;
  11. use App\Repository\OffreEmploiRepository;
  12. use App\Repository\UserRepository;
  13. use App\Security\UserAuthenticator;
  14. use Doctrine\ORM\EntityManager;
  15. use Doctrine\ORM\EntityManagerInterface;
  16. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  17. use Symfony\Component\HttpFoundation\RedirectResponse;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use Symfony\Component\HttpFoundation\Response;
  20. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  21. use Symfony\Component\Routing\Annotation\Route;
  22. use Symfony\Component\Security\Core\Security;
  23. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  24. use Symfony\Component\Security\Http\Authentication\UserAuthenticatorInterface;
  25. class EspaceCandidatController extends AbstractController
  26. {
  27.     private EntityManagerInterface $entityManager;
  28.     private OffreEmploiRepository $offreEmploiRepository;
  29.     private CvSportifRepository $cvSportifRepository;
  30.     private UserRepository $userRepository;
  31.     private CandidatureRepository $candidatureRepository;
  32.     /**
  33.      * @var Security
  34.      */
  35.     private $security;
  36.     public function __construct(EntityManagerInterface $entityManagerCvSportifRepository $cvSportifRepository,
  37.                                 OffreEmploiRepository $offreEmploiRepositorySecurity $security,
  38.                                 UserRepository $userRepositoryCandidatureRepository $candidatureRepository)
  39.     {
  40.         $this->entityManager $entityManager;
  41.         $this->offreEmploiRepository $offreEmploiRepository;
  42.         $this->security $security;
  43.         $this->cvSportifRepository $cvSportifRepository;
  44.         $this->userRepository $userRepository;
  45.         $this->candidatureRepository $candidatureRepository;
  46.     }
  47.     #[Route('inscriptioncandi'name'app_inscription')]
  48.     public function inscription(Request $request): Response
  49.     {
  50.         return $this->render('inscription.html.twig', [
  51.         ]);
  52.     }
  53.     #[Route('espace_candidat'name'acces_espace_candidat')]
  54.     public function accesEspaceCandidat(Request $request): Response
  55.     {
  56.         $offresEmplois $this->offreEmploiRepository->findAll();
  57.         $userCurrent $this->security->getUser();
  58.         return $this->render('espace_candidat.html.twig', [
  59.             'offres_emploi' => $offresEmplois,
  60.             'user_current' => $userCurrent,
  61.         ]);
  62.     }
  63.     #[Route('menu_candidat'name'acces_menu_candidat')]
  64.     public function menuCandidat(): Response
  65.     {
  66.         $offresEmplois $this->offreEmploiRepository->findAll();
  67.         $userCurrent $this->security->getUser();
  68.         return $this->render('menu_candidat.html.twig', [
  69.             'offres_emploi' => $offresEmplois,
  70.             'user_current' => $userCurrent,
  71.         ]);
  72.     }
  73.     #[Route('cv_sportif_candidat'name'acces_cv_sportif_candidat')]
  74.     public function cvSportifCandidat(): Response
  75.     {
  76.         $offresEmplois $this->offreEmploiRepository->findAll();
  77.         $userCurrent $this->security->getUser();
  78.         $cvSportif $this->cvSportifRepository->findOneBy([
  79.             'user' =>$userCurrent->getId()
  80.         ]);
  81.         $diplomes $cvSportif->getDiplomes();
  82.         $experiencesProfessionnelles $cvSportif->getExperienceProfessionelles();
  83.         $langues $cvSportif->getLangues();
  84.         $sports $cvSportif->getSports();
  85.         $hobbies $cvSportif->getHobbies();
  86.         return $this->render('cv_sportif.html.twig', [
  87.             'offres_emploi' => $offresEmplois,
  88.             'user_current' => $userCurrent,
  89.             'cv_sportif' => $cvSportif,
  90.             'diplomes' => $diplomes,
  91.             'experiences_prof' => $experiencesProfessionnelles,
  92.             'langues' => $langues,
  93.             'sports' => $sports,
  94.             'hobbies' =>$hobbies,
  95.         ]);
  96.     }
  97.     #[Route('offre/{id}'name'acces_job')]
  98.     public function offreEmploi(OffreEmploi $offreEmploi): Response{
  99.         if (!$offreEmploi) {
  100.             throw $this->createNotFoundException('No Offre Emploi found');
  101.         }
  102.         $offresEmplois $this->offreEmploiRepository->findAll();
  103.         $userCurrent $this->security->getUser();
  104.         $role count($userCurrent->getRoles());
  105.         $cvSportif $this->cvSportifRepository->findOneBy([
  106.             'user' => $userCurrent->getId()
  107.         ]);
  108.         $candidature $this->candidatureRepository->findOneBy([
  109.             'user' => $userCurrent->getId(),
  110.             'offreEmploi' => $offreEmploi->getId(),
  111.         ]);
  112.         $candidatures $this->candidatureRepository->findBy([
  113.             'offreEmploi' => $offreEmploi->getId(),
  114.         ]);
  115.         $postuler 'postule';
  116.         if ($candidature == NULL){
  117.             $postuler 'nonpostule';
  118.         }
  119.         return $this->render('offre_emploi.html.twig', [
  120.             'offres_emploi' => $offresEmplois,
  121.             'user_current' => $userCurrent,
  122.             'cv_sportif' => $cvSportif,
  123.             'offreEmploi' => $offreEmploi,
  124.             'postuler' => $postuler,
  125.             'role' => $role,
  126.             'candidatures' => $candidatures,
  127.         ]);
  128.     }
  129.     #[Route('postuler/{id}'name'acces_postuler')]
  130.     public function postuler(OffreEmploi $offreEmploiEntityManagerInterface $entityManager,
  131.                              UserAuthenticatorInterface $userAuthenticator,
  132.                              UserAuthenticator $authenticator,
  133.                              UserPasswordHasherInterface $userPasswordHasher,
  134.                              OffreEmploiRepository $offreEmploiRepository,
  135.                              Security $security,
  136.                              CvSportifRepository $cvSportifRepository,
  137.                              CandidatureRepository $candidatureRepository,Request $requestAuthenticationUtils $authenticationUtils): Response{
  138.         if (!$offreEmploi) {
  139.             throw $this->createNotFoundException('No Offre Emploi found');
  140.         }
  141.         if ($this->security->getUser() == null){
  142.             return $this->redirectToRoute('app_front_home', ['_fragment' => 'testimonials']);
  143.         }
  144.         $userCurrent $this->security->getUser();
  145.         $role count($userCurrent->getRoles());
  146.         $offresEmplois $this->offreEmploiRepository->findAll();
  147.         $userCurrent $this->security->getUser();
  148.         $cvSportif $this->cvSportifRepository->find($userCurrent->getId());
  149.         $diplomes $cvSportif->getDiplomes();
  150.         $experiencesProfessionnelles $cvSportif->getExperienceProfessionelles();
  151.         $langues $cvSportif->getLangues();
  152.         $sports $cvSportif->getSports();
  153.         $hobbies $cvSportif->getHobbies();
  154.         $candidature $this->candidatureRepository->findOneBy([
  155.             'user' => $userCurrent->getId(),
  156.             'offreEmploi' => $offreEmploi->getId(),
  157.         ]);
  158.         $postuler 'postule';
  159.         if ($candidature == NULL){
  160.             $postuler 'nonpostule';
  161.         }
  162.         if ($postuler == 'nonpostule'){
  163.             $user $this->userRepository->find($userCurrent->getId());
  164.             $candidature = new Candidature();
  165.             $candidature->setUser($user);
  166.             $candidature->setOffreEmploi($offreEmploi);
  167.             $candidature->setDate(new \DateTime());
  168.             $this->entityManager->persist($candidature);
  169.             $this->entityManager->flush();
  170.             return $this->redirectToRoute('acces_job');
  171.         }
  172.         return $this->redirectToRoute('acces_job');
  173.     }
  174.     #[Route('mescandidatures'name'acces_candidatures')]
  175.     public function mesCandidatures(): Response{
  176.         $offresEmplois $this->offreEmploiRepository->findAll();
  177.         $userCurrent $this->security->getUser();
  178.         $cvSportif $this->cvSportifRepository->findOneBy([
  179.             'user' => $userCurrent->getId()
  180.         ]);
  181.         $diplomes $cvSportif->getDiplomes();
  182.         $experiencesProfessionnelles $cvSportif->getExperienceProfessionelles();
  183.         $langues $cvSportif->getLangues();
  184.         $sports $cvSportif->getSports();
  185.         $hobbies $cvSportif->getHobbies();
  186.         $mescandidatures $this->candidatureRepository->findBy([
  187.            'user' => $userCurrent->getId()
  188.         ]);
  189.         return $this->render('mes_candidatures.html.twig', [
  190.             'offres_emploi' => $offresEmplois,
  191.             'user_current' => $userCurrent,
  192.             'cv_sportif' => $cvSportif,
  193.             'diplomes' => $diplomes,
  194.             'experiences_prof' => $experiencesProfessionnelles,
  195.             'langues' => $langues,
  196.             'sports' => $sports,
  197.             'hobbies' => $hobbies,
  198.             'candidatures' => $mescandidatures,
  199.         ]);
  200.     }
  201. }