src/Entrepreneurs/Bundle/Enseignant/Controller/InscriptionController.php line 47

Open in your IDE?
  1. <?php
  2. namespace Entrepreneurs\Bundle\Enseignant\Controller;
  3. use Entrepreneurs\Bundle\Admin\Controller\AdminController;
  4. use Entrepreneurs\Bundle\AppBundle\Manager\MailManager;
  5. use Entrepreneurs\Bundle\AppBundle\Propel\Enseignant;
  6. use Entrepreneurs\Bundle\AppBundle\Propel\EnseignantQuery;
  7. use Entrepreneurs\Bundle\AppBundle\Propel\EnseignantStatut;
  8. use Entrepreneurs\Bundle\AppBundle\Propel\Message;
  9. use Entrepreneurs\Bundle\AppBundle\Propel\MessageQuery;
  10. use Entrepreneurs\Bundle\AppBundle\Propel\TypeIntervention;
  11. use Entrepreneurs\Bundle\AppBundle\Propel\TypeInterventionQuery;
  12. use Entrepreneurs\Bundle\Enseignant\DTO\EpaDTO;
  13. use Entrepreneurs\Bundle\Enseignant\EventListener\EpaRequestListener;
  14. use Entrepreneurs\Bundle\Enseignant\Form\QuestionnaireSEFType;
  15. use Entrepreneurs\Bundle\Enseignant\Form\QuestionnaireType;
  16. use Symfony\Component\HttpFoundation\JsonResponse;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\Response;
  19. use Symfony\Component\Routing\Annotation\Route;
  20. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  21. use Webmozart\Assert\Assert;
  22. class InscriptionController extends AdminController
  23. {
  24.     /**
  25.      * @Route(name="enseignant_inscription", path="/inscription/{uid}", defaults={"uid": ""})
  26.      */
  27.     public function indexAction(Request $request): Response
  28.     {
  29.         if ($request->get('uid')) {
  30.             if (!$enseignant EnseignantQuery::create()->findOneByUid($request->get('uid'))) {
  31.                 throw $this->createNotFoundException("Aucun utilisateur n'existe pour l'UID renseigné.");
  32.             }
  33.             if ($enseignant->getMotDePasse()) {
  34.                 return $this->renderTwig('Enseignant:Inscription:deja_inscrit.html.twig');
  35.             }
  36.         }
  37.         return $this->redirectToRoute('enseignant_questionnaire', ['from_sign_up' => true]);
  38.     }
  39.     /**
  40.      * @Route(name="enseignant_questionnaire", path="/questionnaire")
  41.      */
  42.     public function surveyAddAction(Request $requestMailManager $manager): Response
  43.     {
  44.         /** @var Enseignant $enseignant */
  45.         $enseignant $this->getUser() ?: new Enseignant();
  46.         $isFromSignUp = (bool) $request->get('from_sign_up');
  47.         /** @var ?EpaDTO $epaDTO */
  48.         $epaDTO $request->getSession()->get(EpaRequestListener::SESSION_EPA_KEY);
  49.         Assert::nullOrIsInstanceOf($epaDTOEpaDTO::class);
  50.         $form $this->createForm(QuestionnaireType::class, $enseignant,
  51.             [
  52.                 'enseignant' => $enseignant,
  53.                 'isFromSignUp' => $isFromSignUp,
  54.                 'epaDTO' => $epaDTO,
  55.             ]
  56.         );
  57.         $form->handleRequest($request);
  58.         if ($form->isSubmitted()) {
  59.             if ($form->isValid()) {
  60.                 $enseignant->setDateMajFront(time());
  61.                 if ($enseignant->getPassword()) {
  62.                     $enseignant->save();
  63.                 } else {
  64.                     $enseignant->initQuestionnaire()->save();
  65.                 }
  66.                 $enseignant->logSurvey();
  67.                 if (in_array($enseignant->getParticiperAssociation(), [
  68.                     Enseignant::PARTICIPATION_COMMUNAUTE_OUI,
  69.                     Enseignant::PARTICIPATION_COMMUNAUTE_POURQUOI_PAS,
  70.                 ])) {
  71.                     $manager->sendMailParticipationAssociation($enseignant);
  72.                 }
  73.                 $successMessage 'Merci pour votre réponse au questionnaire et à bientôt pour les interventions auprès de vos jeunes';
  74.                 if ($enseignant->getPassword()) {
  75.                     $this->addFlash('success'$successMessage);
  76.                     return $this->redirectToRoute('enseignant_demande_intervention_list');
  77.                 } elseif (EnseignantStatut::EN_ATTENTE_ACTIVATION === $enseignant->getStatutId()) { // Only for new Enseignants
  78.                     $manager->sendMailEnseignantInscription(
  79.                         $enseignant,
  80.                         $this->generateUrl('enseignant_security_activation', [
  81.                             'uid' => $enseignant->getUid(),
  82.                             'mail' => $enseignant->getEmail(),
  83.                         ], UrlGeneratorInterface::ABSOLUTE_URL)
  84.                     );
  85.                 }
  86.                 return $this->render('Enseignant/Inscription/remerciements.html.twig', ['message' => $successMessage]);
  87.             } else {
  88.                 $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.");
  89.             }
  90.         }
  91.         return $this->render('Enseignant/Inscription/questionnaire.html.twig', [
  92.             'form' => $form->createView(),
  93.             'isFromSignUp' => $isFromSignUp,
  94.         ]);
  95.     }
  96.     /**
  97.      * @Route(name="enseignant_questionnaire_edit", path="/modifier/questionnaire")
  98.      */
  99.     public function surveyEditAction(Request $requestMailManager $manager): Response
  100.     {
  101.         return $this->redirectToRoute('enseignant_questionnaire');
  102.     }
  103.     /**
  104.      * @Route(name="enseignant_questionnaire_verif_compte", path="/questionnaire/verif")
  105.      */
  106.     public function verifAction(Request $request): JsonResponse
  107.     {
  108.         $telephone $request->get('telephone');
  109.         $email $request->get('email');
  110.         $enseignantQuery EnseignantQuery::create();
  111.         if ($telephone) {
  112.             $enseignantQuery->filterByTelephone1($telephone);
  113.         }
  114.         if ($email) {
  115.             $enseignantQuery->filterByEmail($email);
  116.         }
  117.         $enseignant $enseignantQuery->findOne();
  118.         return new JsonResponse(['enseignantExist' => (bool) $enseignant]);
  119.     }
  120.     /**
  121.      * @Route(name="enseignant_questionnaire_sef", path="/questionnaire-sef")
  122.      */
  123.     public function surveySEFAction(Request $requestMailManager $manager): Response
  124.     {
  125.         /** @var Enseignant $enseignant */
  126.         $enseignant $this->getUser() ?: new Enseignant();
  127.         $isFromSignUp = (bool) $request->get('from_sign_up');
  128.         $form $this->createForm(QuestionnaireSEFType::class, $enseignant,
  129.             [
  130.                 'enseignant' => $enseignant,
  131.                 'isFromSignUp' => $isFromSignUp,
  132.             ]
  133.         );
  134.         $typeInterventionEF TypeInterventionQuery::create()->findOneByLabel(TypeIntervention::ENTREPRENEURIAT_FEMININ);
  135.         $form->handleRequest($request);
  136.         if ($form->isSubmitted()) {
  137.             if ($form->isValid()) {
  138.                 if ($typeInterventionEF) {
  139.                     $enseignant->addTypeIntervention($typeInterventionEF);
  140.                 }
  141.                 if ($enseignant->getPassword()) {
  142.                     $enseignant->save();
  143.                 } else {
  144.                     $enseignant->initQuestionnaire()->save();
  145.                 }
  146.                 $enseignant->logSurveySEF();
  147.                 $successMessage 'Merci pour votre réponse au questionnaire et à bientôt pour les interventions auprès de vos jeunes ';
  148.                 if ($enseignant->getPassword()) {
  149.                     $this->addFlash('success'$successMessage);
  150.                     $manager->sendMailEnseignantSefSurvey(
  151.                         $enseignant,
  152.                         $this->generateUrl('enseignant_security_activation', [
  153.                             'uid' => $enseignant->getUid(),
  154.                             'mail' => $enseignant->getEmail(),
  155.                         ], UrlGeneratorInterface::ABSOLUTE_URL)
  156.                     );
  157.                     return $this->redirectToRoute('enseignant_demande_intervention_list', ['fromSurveySef' => true]);
  158.                 } elseif (EnseignantStatut::EN_ATTENTE_ACTIVATION === $enseignant->getStatutId()) { // Only for new Enseignants
  159.                     $manager->sendMailEnseignantInscription(
  160.                         $enseignant,
  161.                         $this->generateUrl('enseignant_security_activation', [
  162.                             'uid' => $enseignant->getUid(),
  163.                             'mail' => $enseignant->getEmail(),
  164.                         ], UrlGeneratorInterface::ABSOLUTE_URL),
  165.                         true
  166.                     );
  167.                 }
  168.                 return $this->renderTwig('Enseignant:Inscription:remerciements.html.twig', ['message' => $successMessage'fromSurveySef' => true]);
  169.             } else {
  170.                 $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.");
  171.             }
  172.         }
  173.         return $this->renderTwig('Enseignant:Inscription:questionnaire_sef.html.twig', [
  174.             'form' => $form->createView(),
  175.             'isFromSignUp' => $isFromSignUp,
  176.             'enseignantId' => $enseignant->getId(),
  177.             'introMessage' => MessageQuery::create()->findOneByCode(Message::SURVEY_SEF_INTRO_MESSAGE_ENS)->getMessage(),
  178.         ]);
  179.     }
  180.     /**
  181.      * @Route(name="enseignant_questionnaire_sef_edit", path="/modifier/questionnaire-sef")
  182.      */
  183.     public function surveySefEditAction(): Response
  184.     {
  185.         return $this->redirectToRoute('enseignant_questionnaire_sef');
  186.     }
  187. }