src/Entrepreneurs/Bundle/Entrepreneur/Controller/InscriptionController.php line 49

Open in your IDE?
  1. <?php
  2. namespace Entrepreneurs\Bundle\Entrepreneur\Controller;
  3. use Entrepreneurs\Bundle\Admin\Controller\AdminController;
  4. use Entrepreneurs\Bundle\AppBundle\Manager\GeocodeManager;
  5. use Entrepreneurs\Bundle\AppBundle\Manager\MailManager;
  6. use Entrepreneurs\Bundle\AppBundle\Propel\ConfigSurveyQuery;
  7. use Entrepreneurs\Bundle\AppBundle\Propel\Entrepreneur;
  8. use Entrepreneurs\Bundle\AppBundle\Propel\EntrepreneurQuery;
  9. use Entrepreneurs\Bundle\AppBundle\Propel\EntrepreneurStatut;
  10. use Entrepreneurs\Bundle\AppBundle\Propel\Message;
  11. use Entrepreneurs\Bundle\AppBundle\Propel\MessageQuery;
  12. use Entrepreneurs\Bundle\AppBundle\Propel\TypeIntervention;
  13. use Entrepreneurs\Bundle\AppBundle\Propel\TypeInterventionQuery;
  14. use Entrepreneurs\Bundle\Entrepreneur\Form\Questionnaire2HomePageType;
  15. use Entrepreneurs\Bundle\Entrepreneur\Form\Questionnaire2Type;
  16. use Entrepreneurs\Bundle\Entrepreneur\Form\QuestionnaireSEFType;
  17. use Entrepreneurs\Bundle\Entrepreneur\Form\QuestionnaireType;
  18. use Symfony\Component\HttpFoundation\JsonResponse;
  19. use Symfony\Component\HttpFoundation\Request;
  20. use Symfony\Component\HttpFoundation\Response;
  21. use Symfony\Component\Routing\Annotation\Route;
  22. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  23. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  24. class InscriptionController extends AdminController
  25. {
  26.     /**
  27.      * @Route(name="entrepreneur_inscription", path="/inscription/{uid}", defaults={"uid": ""})
  28.      */
  29.     public function indexAction(Request $request): Response
  30.     {
  31.         if ($request->get('uid')) {
  32.             if (!$entrepreneur EntrepreneurQuery::create()->findOneByUid($request->get('uid'))) {
  33.                 throw $this->createNotFoundException("Aucun utilisateur n'existe pour l'UID renseigné.");
  34.             }
  35.             if ($entrepreneur->getMotDePasse()) {
  36.                 return $this->renderTwig('Entrepreneur:Inscription:deja_inscrit.html.twig');
  37.             }
  38.         }
  39.         return $this->redirectToRoute('entrepreneur_questionnaire', ['from_sign_up' => true]);
  40.     }
  41.     /**
  42.      * @Route(name="entrepreneur_questionnaire", path="/questionnaire")
  43.      */
  44.     public function surveyAddAction(Request $requestMailManager $managerGeocodeManager $geocodeManager): Response
  45.     {
  46.         $isFromSurvey2 = (bool) $request->get('from_survey_2');
  47.         $isFromSignUp = (bool) $request->get('from_sign_up');
  48.         /** @var Entrepreneur $entrepreneur */
  49.         $entrepreneur $this->getUser() ?: new Entrepreneur();
  50.         $form $this->createForm(QuestionnaireType::class, $entrepreneur,
  51.             [
  52.                 'entrepreneur' => $entrepreneur,
  53.                 'isFromSurvey2' => $isFromSurvey2,
  54.                 'isFromSignUp' => $isFromSignUp,
  55.             ]
  56.         );
  57.         $form->handleRequest($request);
  58.         if ($form->isSubmitted()) {
  59.             if ($form->isValid()) {
  60.                 $entrepreneur->setReceptionMailingHebdo(true);
  61.                 $entrepreneur->setSouhaiteIntervenir(true);
  62.                 if ($entrepreneur->getPassword()) {
  63.                     $entrepreneur->save();
  64.                 } else {
  65.                     $entrepreneur->initQuestionnaire()->save();
  66.                 }
  67.                 $entrepreneur->matchDemandesIntervention();
  68.                 $geocodeManager->updateGpsDataForEntrepreneur($entrepreneur->getFullEntrepriseAdresse(), $entrepreneur'pro');
  69.                 $geocodeManager->updateGpsDataForEntrepreneur($entrepreneur->getFullAdress(), $entrepreneur);
  70.                 $entrepreneur->logSurvey1();
  71.                 // Only for new Entrepreneurs
  72.                 if (EntrepreneurStatut::EN_ATTENTE_ACTIVATION === $entrepreneur->getStatutId()) {
  73.                     $manager->sendMailEntrepreneurInscription(
  74.                         $entrepreneur,
  75.                         $this->generateUrl('entrepreneur_security_activation', [
  76.                             'uid' => $entrepreneur->getUid(),
  77.                             'mail' => $entrepreneur->getEmail(),
  78.                         ], UrlGeneratorInterface::ABSOLUTE_URL)
  79.                     );
  80.                 }
  81.                 if (in_array($entrepreneur->getSouhaitDevenirRt(), [Entrepreneur::ACCEPT_DEVENIR_RTEntrepreneur::PK_PAS_DEVENIR_RT])) {
  82.                     $manager->sendMailEntrepreneurSouhaitDevenirRT($entrepreneur);
  83.                 }
  84.                 if ($entrepreneur->getPassword()) {
  85.                     $this->addFlash('success''Merci pour votre réponse au questionnaire et à bientôt pour les interventions auprès de vos jeunes');
  86.                     return $this->redirectToRoute('entrepreneur_demande_intervention_list', ['fromSurvey' => true]);
  87.                 }
  88.                 // Log the entrepreneur
  89.                 $token = new UsernamePasswordToken($entrepreneur'main'$entrepreneur->getRoles());
  90.                 $this->container->get('security.token_storage')->setToken($token);
  91.                 $this->container->get('session')->set('_security_main'serialize($token));
  92.                 return $this->render('Entrepreneur/Inscription/confirmation.html.twig', [
  93.                     'entrepreneur' => $entrepreneur,
  94.                     'message' => 'Merci pour votre réponse au questionnaire et à bientôt pour les interventions auprès de vos jeunes',
  95.                 ]);
  96.             } else {
  97.                 $this->addFlash('warning'"Les modifications n'ont pu être enregistrées. Merci de vérifier les informations renseignées et de les modifier au besoin.");
  98.             }
  99.         }
  100.         return $this->render('Entrepreneur/Inscription/questionnaire.html.twig',
  101.             [
  102.                 'form' => $form->createView(),
  103.                 'isFromSurvey2' => $isFromSurvey2,
  104.                 'isFromSignUp' => $isFromSignUp,
  105.             ]);
  106.     }
  107.     /**
  108.      * @Route(name="entrepreneur_questionnaire_edit", path="/modifier/questionnaire")
  109.      */
  110.     public function surveyEditAction(Request $requestMailManager $manager): Response
  111.     {
  112.         /** @var Entrepreneur $entrepreneur */
  113.         $entrepreneur $this->getUser();
  114.         $form $this->createForm(QuestionnaireType::class, $entrepreneur, ['entrepreneur' => $entrepreneur]);
  115.         $form->handleRequest($request);
  116.         if ($form->isSubmitted()) {
  117.             if ($form->isValid()) {
  118.                 $entrepreneur->save();
  119.                 $entrepreneur->logSurvey1();
  120.                 if (in_array($entrepreneur->getSouhaitDevenirRt(), [Entrepreneur::ACCEPT_DEVENIR_RTEntrepreneur::PK_PAS_DEVENIR_RT])) {
  121.                     $manager->sendMailEntrepreneurSouhaitDevenirRT($entrepreneur);
  122.                 }
  123.                 $this->addFlash('success''Merci pour votre réponse au questionnaire et à bientôt pour les interventions auprès de vos jeunes');
  124.                 return $this->redirectToRoute('entrepreneur_intervention_list');
  125.             } else {
  126.                 $this->addFlash('warning'"Les modifications n'ont pu être enregistrées.
  127.                 Merci de vérifier les informations renseignées et de les modifier au besoin.");
  128.             }
  129.         }
  130.         return $this->renderTwig('Entrepreneur:Inscription:questionnaire.html.twig',
  131.             [
  132.                 'entrepreneur' => $entrepreneur,
  133.                 'form' => $form->createView(),
  134.             ]
  135.         );
  136.     }
  137.     /**
  138.      * @Route(name="entrepreneur_questionnaire_verif_compte", path="/questionnaire/verif")
  139.      */
  140.     public function verifAction(Request $request): JsonResponse
  141.     {
  142.         $telephone $request->get('telephone');
  143.         $email $request->get('email');
  144.         $entrepreneurQuery EntrepreneurQuery::create();
  145.         if ($telephone) {
  146.             $entrepreneurQuery->filterByTelephone1($telephone);
  147.         }
  148.         if ($email) {
  149.             $entrepreneurQuery->filterByEmail($email);
  150.         }
  151.         $entrepreneur $entrepreneurQuery->findOne();
  152.         return new JsonResponse(['entrepreneurExist' => (bool) $entrepreneur]);
  153.     }
  154.     #[Route(path'/accueil/questionnaire_dynamique/{code?}'name'questionnaire_2'requirements: ['code' => '\d*'], defaults: ['code' => null])]
  155.     #[Route(path'/questionnaire_dynamique/{uid}/{code?}'name'questionnaire_2_public'requirements: ['uid' => '[a-zA-Z0-9]*''code' => '\d*'], defaults: ['code' => null])]
  156.     public function survey2AddAction(
  157.         Request $request,
  158.         MailManager $manager,
  159.         string $uid null,
  160.         int $code null
  161.     ): Response {
  162.         /** @var Entrepreneur $entrepreneur */
  163.         $entrepreneur $this->getUser() ?: new Entrepreneur();
  164.         if ($uid) {
  165.             $entrepreneur EntrepreneurQuery::create()->findOneByUid($uid);
  166.             if (!$entrepreneur) {
  167.                 $this->addFlash('warning'"Le lien n'est plus valide.");
  168.                 return $this->redirectToRoute('entrepreneur_homepage');
  169.             }
  170.         }
  171.         if (null === $code) {
  172.             $code ConfigSurveyQuery::getEntrepreneurQuestionnaire2Code();
  173.         }
  174.         $form $this->createForm(Questionnaire2Type::class, $entrepreneur, [
  175.             'entrepreneur' => $entrepreneur,
  176.             'code' => $code,
  177.         ]);
  178.         $relaisEnfant $entrepreneur->getRelaisEcoleEnfant();
  179.         $participCommunauteEntrepreneur $entrepreneur->getParticiperCommunauteEntrepreneur();
  180.         $relaisRT $entrepreneur->getSouhaitDevenirRt();
  181.         $form->handleRequest($request);
  182.         if ($form->isSubmitted()) {
  183.             if ($form->isValid()) {
  184.                 $entrepreneur->setReceptionMailingHebdo(true);
  185.                 $entrepreneur->save();
  186.                 $entrepreneur->logSurvey2();
  187.                 if ('Oui' === $entrepreneur->getRelaisEcoleEnfant() && $relaisEnfant != $entrepreneur->getRelaisEcoleEnfant()) {
  188.                     $manager->sendMailRelaisEtablissementEnfant($entrepreneur);
  189.                 }
  190.                 if (in_array($entrepreneur->getParticiperCommunauteEntrepreneur(), ['Oui''Pourquoi pas']) && 'Non' == $participCommunauteEntrepreneur) {
  191.                     $manager->sendMailParticiperCommunauteEntrepreneur($entrepreneur);
  192.                 }
  193.                 if (in_array($entrepreneur->getSouhaitDevenirRt(), [Entrepreneur::ACCEPT_DEVENIR_RTEntrepreneur::PK_PAS_DEVENIR_RT])
  194.                 && Entrepreneur::REFUSE_DEVENIR_RT == $relaisRT) {
  195.                     $manager->sendMailEntrepreneurSouhaitDevenirRT($entrepreneur);
  196.                 }
  197.                 return $this->render('Entrepreneur/Inscription/confirmation_questionnaire2.html.twig', [
  198.                     'entrepreneur' => $entrepreneur,
  199.                 ]);
  200.             } else {
  201.                 $this->addFlash('warning'"Les modifications n'ont pu être enregistrées. Merci de vérifier les informations renseignées et de les modifier au besoin.");
  202.             }
  203.         }
  204.         return $this->render('Entrepreneur/Inscription/questionnaire2.html.twig', [
  205.             'form' => $form->createView(),
  206.         ]);
  207.     }
  208.     /**
  209.      * @Route(name="questionnaire_2_home_page", path="/questionnaire_ent_dynamique")
  210.      *
  211.      * @throws \Exception
  212.      */
  213.     public function survey2HomePageAction(Request $request): Response
  214.     {
  215.         if ($this->getUser()) {
  216.             $this->redirectToRoute('questionnaire_2');
  217.         }
  218.         $form $this->createForm(Questionnaire2HomePageType::class);
  219.         return $this->render('Entrepreneur/Inscription/questionnaire2HomePage.html.twig', [
  220.             'form' => $form->createView(),
  221.             'link_questionnaire_2' => $this->generateUrl('questionnaire_2', [
  222.                 'code' => ConfigSurveyQuery::getEntrepreneurQuestionnaire2Code(),
  223.             ]),
  224.         ]);
  225.     }
  226.     /**
  227.      * @Route(name="entrepreneur_questionnaire_sef", path="/questionnaire/sef")
  228.      */
  229.     public function surveySEFAction(Request $requestMailManager $managerGeocodeManager $geocodeManager): Response
  230.     {
  231.         $isFromSignUp = (bool) $request->get('from_sign_up');
  232.         /** @var Entrepreneur $entrepreneur */
  233.         $entrepreneur $this->getUser() ?: new Entrepreneur();
  234.         $form $this->createForm(QuestionnaireSEFType::class, $entrepreneur,
  235.             [
  236.                 'entrepreneur' => $entrepreneur,
  237.                 'isFromSignUp' => $isFromSignUp,
  238.             ]
  239.         );
  240.         $typeInterventionEF TypeInterventionQuery::create()->findOneByLabel(TypeIntervention::ENTREPRENEURIAT_FEMININ);
  241.         $form->handleRequest($request);
  242.         if ($form->isSubmitted()) {
  243.             if ($form->isValid()) {
  244.                 $entrepreneur->setSouhaiteIntervenir(true);
  245.                 $entrepreneur->setReceptionMailingHebdo(true);
  246.                 $entrepreneur->addTypeIntervention($typeInterventionEF);
  247.                 if ($entrepreneur->getPassword()) {
  248.                     $entrepreneur->save();
  249.                 } else {
  250.                     $entrepreneur->initQuestionnaire()->save();
  251.                 }
  252.                 $geocodeManager->updateGpsDataForEntrepreneur($entrepreneur->getFullEntrepriseAdresse(), $entrepreneur'pro');
  253.                 $entrepreneur->matchDemandesIntervention();
  254.                 $entrepreneur->logSurveySEF();
  255.                 // Only for new Entrepreneurs
  256.                 if (EntrepreneurStatut::EN_ATTENTE_ACTIVATION === $entrepreneur->getStatutId()) {
  257.                     $manager->sendMailEntrepreneurInscription(
  258.                         $entrepreneur,
  259.                         $this->generateUrl('entrepreneur_security_activation', [
  260.                             'uid' => $entrepreneur->getUid(),
  261.                             'mail' => $entrepreneur->getEmail(),
  262.                         ], UrlGeneratorInterface::ABSOLUTE_URL),
  263.                         true
  264.                     );
  265.                     $manager->sendMailEntrepreneurNonForme($entrepreneurtrue);
  266.                     $entrepreneur->setNbRelancesNonForme($entrepreneur->getNbRelancesNonForme() + 1)->save();
  267.                     // Log the entrepreneur
  268.                     $token = new UsernamePasswordToken($entrepreneur'main'$entrepreneur->getRoles());
  269.                     $this->container->get('security.token_storage')->setToken($token);
  270.                     $this->container->get('session')->set('_security_main'serialize($token));
  271.                 }
  272.                 if ($entrepreneur->getPassword()) {
  273.                     $this->addFlash('success''Merci pour votre réponse au questionnaire et à bientôt pour les interventions auprès de vos jeunes');
  274.                     return $this->redirectToRoute('entrepreneur_demande_intervention_list', ['fromSurveySef' => true]);
  275.                 }
  276.                 return $this->renderTwig('Entrepreneur:Inscription:confirmation.html.twig', [
  277.                     'entrepreneur' => $entrepreneur,
  278.                     'message' => 'Merci pour votre réponse au questionnaire et à bientôt pour les interventions auprès de vos jeunes',
  279.                     'fromSurveySef' => true,
  280.                 ]);
  281.             } else {
  282.                 $this->addFlash('warning'"Les modifications n'ont pu être enregistrées. Merci de vérifier les informations renseignées et de les modifier au besoin.");
  283.             }
  284.         }
  285.         return $this->renderTwig('Entrepreneur:Inscription:questionnaire_sef.html.twig',
  286.             [
  287.                 'entrepreneurId' => $entrepreneur->getId(),
  288.                 'form' => $form->createView(),
  289.                 'isFromSignUp' => $isFromSignUp,
  290.                 'introMessage' => MessageQuery::create()->findOneByCode(Message::SURVEY_SEF_INTRO_MESSAGE_ENT)->getMessage(),
  291.             ]);
  292.     }
  293.     /**
  294.      * @Route(name="entrepreneur_questionnaire_sef_edit", path="/modifier/questionnaire-sef")
  295.      */
  296.     public function surveySefEditAction(): Response
  297.     {
  298.         return $this->redirectToRoute('entrepreneur_questionnaire_sef');
  299.     }
  300. }