src/Controller/HomeController.php line 56

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\CvSportif;
  4. use App\Entity\OffreEmploi;
  5. use App\Entity\User;
  6. use App\Form\RegistrationFormType;
  7. use App\Repository\CandidatureRepository;
  8. use App\Repository\CvSportifRepository;
  9. use App\Repository\OffreEmploiRepository;
  10. use App\Security\UserAuthenticator;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Component\Security\Core\Security;
  18. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  19. use Symfony\Component\Security\Http\Authentication\UserAuthenticatorInterface;
  20. class HomeController extends AbstractController
  21. {
  22.     private EntityManagerInterface $entityManager;
  23.     private UserAuthenticatorInterface $userAuthenticator;
  24.     private UserAuthenticator $authenticator;
  25.     private UserPasswordHasherInterface $userPasswordHasher;
  26.     private OffreEmploiRepository $offreEmploiRepository;
  27.     private CvSportifRepository $cvSportifRepository;
  28.     private CandidatureRepository $candidatureRepository;
  29.     private $msgEmail "";
  30.     /**
  31.      * @var Security
  32.      */
  33.     private $security;
  34.     public function __construct(EntityManagerInterface $entityManager,
  35.                                 UserAuthenticatorInterface $userAuthenticator,
  36.                                 UserAuthenticator $authenticator,
  37.                                 UserPasswordHasherInterface $userPasswordHasher,
  38.                                 OffreEmploiRepository $offreEmploiRepository,
  39.                                 Security $security,
  40.                                 CvSportifRepository $cvSportifRepository,
  41.                                 CandidatureRepository $candidatureRepository)
  42.     {
  43.         $this->entityManager $entityManager;
  44.         $this->userAuthenticator $userAuthenticator;
  45.         $this->authenticator $authenticator;
  46.         $this->userPasswordHasher $userPasswordHasher;
  47.         $this->offreEmploiRepository $offreEmploiRepository;
  48.         $this->security $security;
  49.         $this->cvSportifRepository $cvSportifRepository;
  50.         $this->candidatureRepository $candidatureRepository;
  51.     }
  52.     #[Route('/'name'app_front_home')]
  53.     public function index(Request $requestAuthenticationUtils $authenticationUtils): Response
  54.     {
  55.         $user = new User();
  56.         $form $this->createForm(RegistrationFormType::class, $user);
  57.         $form->handleRequest($request);
  58.         $offresEmplois $this->offreEmploiRepository->findAll();
  59.         if ($form->isSubmitted() && $form->isValid()) {
  60.             // encode the plain password
  61.             $user->setPassword(
  62.                 $this->userPasswordHasher->hashPassword(
  63.                     $user,
  64.                     $form->get('plainPassword')->getData()
  65.                 )
  66.             );
  67.             $user->setUid($form->get('prenom')->getData().$form->get('nom')->getData());
  68.             $cvSportif = new CvSportif();
  69.             $cvSportif->setUser($user);
  70.             $this->entityManager->persist($user);
  71.             $this->entityManager->persist($cvSportif);
  72.             $this->entityManager->flush();
  73.             // do anything else you need here, like send an email
  74.             return $this->userAuthenticator->authenticateUser(
  75.                 $user,
  76.                 $this->authenticator,
  77.                 $request
  78.             );
  79.         }
  80.         // get the login error if there is one
  81.         $error $authenticationUtils->getLastAuthenticationError();
  82.         // last username entered by the user
  83.         $lastUsername $authenticationUtils->getLastUsername();
  84.         $registration $form->createView();
  85.         return $this->render('home.html.twig', [
  86.             'controller_name' => 'Site de Recrutement de Decathlon',
  87.             'error' => $error,
  88.             'registrationForm' => $registration,
  89.             'offres_emploi' => $offresEmplois,
  90.             'last_username' => $lastUsername,
  91.         ]);
  92.     }
  93.     #[Route('offreoffline/{id}'name'acces_job_offline')]
  94.     public function offreEmploiOffline(OffreEmploi $offreEmploi): Response{
  95.         if (!$offreEmploi) {
  96.             throw $this->createNotFoundException('No Offre Emploi found');
  97.         }
  98.         $offresEmplois $this->offreEmploiRepository->findAll();
  99.         $userCurrent $this->security->getUser();
  100.         if ($userCurrent!=null){
  101.             $role count($userCurrent->getRoles());
  102.             $cvSportif $this->cvSportifRepository->findOneBy([
  103.                 'user' => $userCurrent->getId()
  104.             ]);
  105.             $diplomes $cvSportif->getDiplomes();
  106.             $experiencesProfessionnelles $cvSportif->getExperienceProfessionelles();
  107.             $langues $cvSportif->getLangues();
  108.             $sports $cvSportif->getSports();
  109.             $hobbies $cvSportif->getHobbies();
  110.             $candidature $this->candidatureRepository->findOneBy([
  111.                 'user' => $userCurrent->getId(),
  112.                 'offreEmploi' => $offreEmploi->getId(),
  113.             ]);
  114.             $candidatures $this->candidatureRepository->findBy([
  115.                 'offreEmploi' => $offreEmploi->getId(),
  116.             ]);
  117.             $postuler 'postule';
  118.             if ($candidature == NULL){
  119.                 $postuler 'nonpostule';
  120.             }
  121.             return $this->render('offre_emploi.html.twig', [
  122.                 'offres_emploi' => $offresEmplois,
  123.                 'user_current' => $userCurrent,
  124.                 'cv_sportif' => $cvSportif,
  125.                 'diplomes' => $diplomes,
  126.                 'experiences_prof' => $experiencesProfessionnelles,
  127.                 'langues' => $langues,
  128.                 'sports' => $sports,
  129.                 'hobbies' =>$hobbies,
  130.                 'offreEmploi' => $offreEmploi,
  131.                 'postuler' => $postuler,
  132.                 'role' => $role,
  133.                 'candidatures' => $candidatures,
  134.             ]);
  135.         }
  136.         return $this->render('offre_emploi_offline.html.twig', [
  137.             'offres_emploi' => $offresEmplois,
  138.             'offreEmploi' => $offreEmploi,
  139.         ]);
  140.     }
  141.     #[Route('offreemploi/{id}'name'acces_job_new')]
  142.     public function offreEmploiNew(OffreEmploi $offreEmploi): Response{
  143.         if (!$offreEmploi) {
  144.             throw $this->createNotFoundException('No Offre Emploi found');
  145.         }
  146.         $offresEmplois $this->offreEmploiRepository->findAll();
  147.         $userCurrent $this->security->getUser();
  148.         if ($userCurrent!=null){
  149.             $role count($userCurrent->getRoles());
  150.             $cvSportif $this->cvSportifRepository->findOneBy([
  151.                 'user' => $userCurrent->getId()
  152.             ]);
  153.             $diplomes $cvSportif->getDiplomes();
  154.             $experiencesProfessionnelles $cvSportif->getExperienceProfessionelles();
  155.             $langues $cvSportif->getLangues();
  156.             $sports $cvSportif->getSports();
  157.             $hobbies $cvSportif->getHobbies();
  158.             $candidature $this->candidatureRepository->findOneBy([
  159.                 'user' => $userCurrent->getId(),
  160.                 'offreEmploi' => $offreEmploi->getId(),
  161.             ]);
  162.             $candidatures $this->candidatureRepository->findBy([
  163.                 'offreEmploi' => $offreEmploi->getId(),
  164.             ]);
  165.             $postuler 'postule';
  166.             if ($candidature == NULL){
  167.                 $postuler 'nonpostule';
  168.             }
  169.             return $this->render('offreemploi.html.twig', [
  170.                 'offres_emploi' => $offresEmplois,
  171.                 'user_current' => $userCurrent,
  172.                 'cv_sportif' => $cvSportif,
  173.                 'diplomes' => $diplomes,
  174.                 'experiences_prof' => $experiencesProfessionnelles,
  175.                 'langues' => $langues,
  176.                 'sports' => $sports,
  177.                 'hobbies' =>$hobbies,
  178.                 'offreEmploi' => $offreEmploi,
  179.                 'postuler' => $postuler,
  180.                 'role' => $role,
  181.                 'candidatures' => $candidatures,
  182.             ]);
  183.         }
  184.         return $this->render('offreemploi.html.twig', [
  185.             'offres_emploi' => $offresEmplois,
  186.             'offreEmploi' => $offreEmploi,
  187.         ]);
  188.     }
  189.     #[Route('/test'name'app_front_test')]
  190.     public function test(): Response
  191.     {
  192.         return $this->render('front/test.html.twig', [
  193.             'controller_name' => 'HomeController',
  194.         ]);
  195.     }
  196.     #[Route('/accueil'name'acces_accueil')]
  197.     public function allerAccueil(): Response
  198.     {
  199.         return $this->redirectToRoute('app_front_home', ['_fragment' => 'hero']);
  200.     }
  201.     #[Route('/apropos'name'acces_apropos')]
  202.     public function allerApropos(): Response
  203.     {
  204.         return $this->redirectToRoute('app_front_home', ['_fragment' => 'about']);
  205.     }
  206.     #[Route('/nosvaleurs'name'acces_nosvaleurs')]
  207.     public function allerNosValeurs(): Response
  208.     {
  209.         return $this->redirectToRoute('app_front_home', ['_fragment' => 'why-us']);
  210.     }
  211.     #[Route('/services'name'acces_services')]
  212.     public function allerServices(): Response
  213.     {
  214.         return $this->redirectToRoute('app_front_home', ['_fragment' => 'services']);
  215.     }
  216.     #[Route('/offresemploi'name'acces_offresemploi')]
  217.     public function allerOffresEmploi(): Response
  218.     {
  219.         return $this->redirectToRoute('app_front_home', ['_fragment' => 'offresemploi']);
  220.     }
  221.     #[Route('/equipe'name'acces_equipe')]
  222.     public function allerEquipe(): Response
  223.     {
  224.         return $this->redirectToRoute('app_front_home', ['_fragment' => 'team']);
  225.     }
  226.     #[Route('/contact'name'acces_contact')]
  227.     public function allerContact(): Response
  228.     {
  229.         return $this->redirectToRoute('app_front_home', ['_fragment' => 'contact']);
  230.     }
  231.     #[Route('/connexionform'name'acces_connexionform')]
  232.     public function allerConnexion(): Response
  233.     {
  234.         return $this->redirectToRoute('app_login_home');
  235.     }
  236. }