src/Controller/Front/JobsController.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Front;
  3. use App\Constant\JobApplicationStatus;
  4. use App\Controller\AppController;
  5. use App\Entity\JobApplication;
  6. use App\Entity\JobOffer;
  7. use App\Entity\Media;
  8. use App\Entity\Page;
  9. use App\Form\Front\ContactType;
  10. use App\Form\Front\JobApplicationType;
  11. use App\Repository\JobOfferRepository;
  12. use App\Service\FileUploader;
  13. use Symfony\Component\Form\FormError;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. /**
  17.  * @Route("recrutement", name="front_company_jobs_")
  18.  */
  19. class JobsController extends AppController
  20. {
  21.     /**
  22.      * @Route("", name="list")
  23.      */
  24.     public function list(JobOfferRepository $jobOfferRepository){
  25.         $jobOffers $jobOfferRepository->searchJobOffers(["active" => true], 1100);
  26.         $page = new Page();
  27.         $page->setMetaTitle("Recrutement - Citizens");
  28.         return $this->render('front/jobs/list.html.twig', [
  29.             'page' => $page,
  30.             'jobOffers' => $jobOffers,
  31.         ]);
  32.     }
  33.     /**
  34.      * @Route("/offre-emploi/{id}", name="offer")
  35.      */
  36.     public function offer(Request $requestJobOffer $jobOfferFileUploader $fileUploader){
  37.         $jobApplication = new JobApplication();
  38.         $form $this->createForm(JobApplicationType::class, $jobApplication);
  39.         $form->handleRequest($request);
  40.         //-----------------------------------------------
  41.         // Verify fields
  42.         if($form->isSubmitted()) {
  43.             $cvFile $form->get('cv')->getData();
  44.             if(!$cvFile->isValid() || !$fileUploader->validTypes($cvFile'file')) {
  45.                 $form->get('cv')->addError(new FormError('error.file_error'));
  46.             }
  47.             $motivationFile $form->get('motivation')->getData();
  48.             if(!$motivationFile->isValid() || !$fileUploader->validTypes($motivationFile'file')) {
  49.                 $form->get('motivation')->addError(new FormError('error.file_error'));
  50.             }
  51.         }
  52.         //-----------------------------------------------
  53.         // On submit
  54.         if ($form->isSubmitted() && $form->isValid()) {
  55.             $jobApplication->setStatus(JobApplicationStatus::SENT);
  56.             $jobApplication->setJobOffer($jobOffer);
  57.             $cvFile $form->get('cv')->getData();
  58.             if($cvFile->isValid() && $fileUploader->validTypes($cvFile'file')) {
  59.                 $attachment = new Media();
  60.                 $uploadFolder Media::uploadFolderPrivate();
  61.                 $attachment->setPrivate(true);
  62.                 $fileName $fileUploader->upload($cvFile$uploadFoldertrue);
  63.                 $attachment->setName($fileName);
  64.                 $jobApplication->setCv($attachment);
  65.             }
  66.             $motivationFile $form->get('motivation')->getData();
  67.             if($motivationFile->isValid() && $fileUploader->validTypes($motivationFile'file')) {
  68.                 $attachment = new Media();
  69.                 $uploadFolder Media::uploadFolderPrivate();
  70.                 $attachment->setPrivate(true);
  71.                 $fileName $fileUploader->upload($motivationFile$uploadFoldertrue);
  72.                 $attachment->setName($fileName);
  73.                 $jobApplication->setMotivation($attachment);
  74.             }
  75.             $this->em->persist($jobApplication);
  76.             $this->em->flush();
  77.             $success true;
  78.         }
  79.         $page = new Page();
  80.         $page->setMetaTitle($jobOffer->getName() . " - Offre d'emploi - Citizens");
  81.         return $this->render('front/jobs/offer.html.twig', [
  82.             'jobOffer' => $jobOffer,
  83.             'page' => $page,
  84.             'form' => $form->createView(),
  85.             'success' => !empty($success),
  86.         ]);
  87.     }
  88.     /**
  89.      * AJAX Spontaneous application form
  90.      * @Route("/candidature-spontanee", priority=10, name="spontaneous_application_modal", methods={"GET"})
  91.      */
  92.     public function modalWaitingList(Request $request)
  93.     {
  94.         $jobApplication = new JobApplication();
  95.         $form $this->createForm(JobApplicationType::class, $jobApplication);
  96.         $form->handleRequest($request);
  97.         return $this->json([
  98.             'content' => $this->render(
  99.                 "front/modals/spontaneous-application.html.twig",
  100.                 [
  101.                     "form" => $form->createView(),
  102.                 ]
  103.             )->getContent(),
  104.         ]);
  105.     }
  106.     /**
  107.      * AJAX Submit spontaneous application form
  108.      * @Route("/candidature-spontanee", priority=10, name="spontaneous_application_submit", methods={"post"})
  109.      */
  110.     public function addToWaitingList(Request $request)
  111.     {
  112.         $jobApplication = new JobApplication();
  113.         $form $this->createForm(JobApplicationType::class, $jobApplication);
  114.         $form->handleRequest($request);
  115.         if ($form->isSubmitted() && $form->isValid()) {
  116.             $jobApplication->setStatus(JobApplicationStatus::SENT);
  117.             $this->em->persist($jobApplication);
  118.             $this->em->flush();
  119.             return $this->json([
  120.                 'result' => true,
  121.             ]);
  122.         }
  123.         return $this->json([
  124.             'result' => false,
  125.             'form' => $this->render('front/modals/spontaneous-application.html.twig', [
  126.                 "form" => $form->createView()])->getContent(),
  127.         ], 500);
  128.     }
  129. }