src/Entrepreneurs/Bundle/FrontBundle/Controller/EvaluationController.php line 189

Open in your IDE?
  1. <?php
  2. namespace Entrepreneurs\Bundle\FrontBundle\Controller;
  3. use Entrepreneurs\Bundle\AppBundle\Manager\MailManager;
  4. use Entrepreneurs\Bundle\AppBundle\Propel\DemandeInterventionQuery;
  5. use Entrepreneurs\Bundle\AppBundle\Propel\DemandeInterventionStatut;
  6. use Entrepreneurs\Bundle\AppBundle\Propel\EnseignantQuery;
  7. use Entrepreneurs\Bundle\AppBundle\Propel\EntrepreneurQuery;
  8. use Entrepreneurs\Bundle\AppBundle\Propel\EvaluationEnseignant;
  9. use Entrepreneurs\Bundle\AppBundle\Propel\EvaluationEnseignantQuery;
  10. use Entrepreneurs\Bundle\AppBundle\Propel\EvaluationEntrepreneur;
  11. use Entrepreneurs\Bundle\AppBundle\Propel\EvaluationEntrepreneurQuery;
  12. use Entrepreneurs\Bundle\AppBundle\Propel\EvaluationJeune;
  13. use Entrepreneurs\Bundle\AppBundle\Propel\InterventionQuery;
  14. use Entrepreneurs\Bundle\AppBundle\Propel\InterventionStatut;
  15. use Entrepreneurs\Bundle\FrontBundle\Form\EvaluationEnseignantType;
  16. use Entrepreneurs\Bundle\FrontBundle\Form\EvaluationEntrepreneurType;
  17. use Entrepreneurs\Bundle\FrontBundle\Form\EvaluationJeuneType;
  18. use Propel\Runtime\ActiveQuery\Criteria;
  19. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  20. use Symfony\Component\HttpFoundation\Request;
  21. use Symfony\Component\HttpFoundation\Response;
  22. use Symfony\Component\Routing\Annotation\Route;
  23. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  24. class EvaluationController extends AbstractController
  25. {
  26.     protected UrlGeneratorInterface $urlGenerator;
  27.     public function __construct(UrlGeneratorInterface $urlGenerator)
  28.     {
  29.         $this->urlGenerator $urlGenerator;
  30.     }
  31.     /**
  32.      * @Route(name="front_evaluation_entrepreneur", path="/evaluation/entrepreneur/{uid}/{demande_uid}")
  33.      */
  34.     public function entrepreneurAction(Request $requestMailManager $manager): Response
  35.     {
  36.         $entrepreneur EntrepreneurQuery::create()->findOneByUid($request->get('uid'));
  37.         $demandeHash DemandeInterventionQuery::create()->findOneByUid($request->get('demande_uid'));
  38.         if (!$entrepreneur || !$demandeHash) {
  39.             return $this->render('Front/Evaluation/erreur_uai.html.twig', ['profil' => 'entrepreneur']);
  40.         }
  41.         $eval EvaluationEntrepreneurQuery::create()
  42.             ->filterByDemandeInterventionId($demandeHash->getId())
  43.             ->filterByEntrepreneurId($entrepreneur->getId())
  44.             ->useDemandeInterventionQuery()
  45.                 ->useInterventionQuery()
  46.                     ->useEntrepreneurQuery()
  47.                         ->filterByUid($request->get('uid'))
  48.                     ->endUse()
  49.                 ->endUse()
  50.             ->endUse()
  51.             ->findOne();
  52.         if ($eval) {
  53.             return $this->render('Front/Evaluation/confirmation.html.twig', ['deja_realisee' => true'type' => 'entrepreneur']);
  54.         }
  55.         $intervention InterventionQuery::create()
  56.             ->filterByStatutId(InterventionStatut::INTERVENANT_POSITIONNECriteria::IN)
  57.             ->useDemandeInterventionQuery()
  58.                 ->filterById($demandeHash->getId())
  59.             ->endUse()
  60.             ->useEntrepreneurQuery()
  61.                 ->filterByUid($request->get('uid'))
  62.             ->endUse()
  63.             ->findOne();
  64.         if (!$intervention) {
  65.             throw $this->createNotFoundException("L'évaluation demandée n'existe pas.");
  66.         }
  67.         $evaluation = new EvaluationEntrepreneur();
  68.         $evaluation->setEntrepreneurId($intervention->getEntrepreneurId());
  69.         $evaluation->setDemandeInterventionId($intervention->getDemandeInterventionId());
  70.         $form $this->createForm(EvaluationEntrepreneurType::class, $evaluation);
  71.         $form->handleRequest($request);
  72.         if ($form->isSubmitted()) {
  73.             if ($form->isValid()) {
  74.                 $evaluation->save();
  75.                 $manager->sendMailEnseignantReponseEvaluationEntrepreneur($evaluation$intervention);
  76.                 $manager->sendMailEntrepreneurIncitationCreationIntervention($entrepreneur);
  77.                 $intervention->setStatutId(InterventionStatut::TERMINEE);
  78.                 $intervention->save();
  79.                 return $this->render('Front/Evaluation/confirmation.html.twig', [
  80.                     'type' => 'entrepreneur',
  81.                     'displayButtonAction' => 'Oui' == $evaluation->getRenewExperience(),
  82.                 ]);
  83.             } else {
  84.                 $this->addFlash('warning'"Merci de renseigner une valeur pour chaque critère d'évaluation de ce formulaire.");
  85.             }
  86.         }
  87.         return $this->render('Front/Evaluation/form_entrepreneur.html.twig', [
  88.             'form' => $form->createView(),
  89.             'intervention' => $intervention,
  90.             'demande' => $intervention->getDemandeIntervention(),
  91.             'type' => 'entrepreneur',
  92.         ]);
  93.     }
  94.     /**
  95.      * @Route(name="front_evaluation_enseignant", path="/evaluation/enseignant/{demande_uid}/{uid}")
  96.      */
  97.     public function enseignantAction(Request $requestMailManager $manager): Response
  98.     {
  99.         $enseignant EnseignantQuery::create()->findOneByUid($request->get('uid'));
  100.         $demandeHash DemandeInterventionQuery::create()->findOneByUid($request->get('demande_uid'));
  101.         if (!$enseignant || !$demandeHash) {
  102.             return $this->render('Front/Evaluation/erreur_uai.html.twig', ['profil' => 'enseignant']);
  103.         }
  104.         $eval EvaluationEnseignantQuery::create()
  105.             ->filterByEnseignantId(nullCriteria::ISNOTNULL)
  106.             ->filterByDemandeInterventionId($demandeHash->getId())
  107.             ->useDemandeInterventionQuery()
  108.                 ->useEnseignantQuery()
  109.                     ->filterByUid($request->get('uid'))
  110.                 ->endUse()
  111.             ->endUse()
  112.             ->findOne();
  113.         if ($eval) {
  114.             return $this->render('Front/Evaluation/confirmation.html.twig', ['deja_realisee' => true'type' => 'enseignant']);
  115.         }
  116.         $demande DemandeInterventionQuery::create()
  117.             ->filterByStatutId([DemandeInterventionStatut::EN_ATTENTE_EVALUATIONDemandeInterventionStatut::INTERVENANT_POSITIONNE], Criteria::IN)
  118.             ->filterByUid($request->get('demande_uid'))
  119.             ->useEnseignantQuery()
  120.                 ->filterByUid($request->get('uid'))
  121.             ->endUse()
  122.             ->findOne();
  123.         if (!$demande) {
  124.             throw $this->createNotFoundException("L'évaluation demandée n'existe pas.");
  125.         }
  126.         $evaluation = new EvaluationEnseignant();
  127.         $evaluation->setEnseignantId($demande->getEnseignantId());
  128.         $evaluation->setDemandeInterventionId($demande->getId());
  129.         $form $this->createForm(EvaluationEnseignantType::class, $evaluation);
  130.         $form->handleRequest($request);
  131.         if ($form->isSubmitted()) {
  132.             if ($form->isValid()) {
  133.                 foreach ($demande->getInterventionsAcceptees() as $intervention) {
  134.                     $manager->sendMailEntrepreneurReponseEvaluationEnseignant($evaluation$intervention'enseignant');
  135.                 }
  136.                 $manager->sendMailEnseignantIncitationCreationDemandeIntervention($demande$enseignant);
  137.                 $demande->setStatutId(DemandeInterventionStatut::TERMINEE);
  138.                 $demande->save();
  139.                 $form->getData()->save();
  140.                 return $this->render('Front/Evaluation/confirmation.html.twig', [
  141.                     'type' => 'enseignant',
  142.                     'displayButtonAction' => 'Oui' == $evaluation->getRenewExperience(),
  143.                 ]);
  144.             } else {
  145.                 $this->addFlash('warning'"Merci de renseigner une valeur pour chaque critère d'évaluation de ce formulaire.");
  146.             }
  147.         }
  148.         $url $this->urlGenerator->generate('front_evaluation_jeune', ['uid' => $demande->getUid()], UrlGeneratorInterface::ABSOLUTE_URL);
  149.         return $this->render('Front/Evaluation/form_enseignant.html.twig', [
  150.             'form' => $form->createView(),
  151.             'type' => 'enseignant',
  152.             'enseignant' => $enseignant,
  153.             'qrCode' => $demande->generateQrCode($url),
  154.             'url' => $url,
  155.             'demande' => $demande,
  156.         ]);
  157.     }
  158.     /**
  159.      * @Route(name="front_evaluation_jeune", path="/evaluation-jeune/")
  160.      */
  161.     public function jeuneAction(Request $request): Response
  162.     {
  163.         if ($request->get('uid')) {
  164.             $demande DemandeInterventionQuery::create()->findOneByUid($request->get('uid'));
  165.             if (!$demande) {
  166.                 throw $this->createNotFoundException();
  167.             }
  168.         } else {
  169.             throw $this->createNotFoundException();
  170.         }
  171.         $evaluation = new EvaluationJeune();
  172.         $evaluation->setDemandeInterventionId($demande->getId());
  173.         $isAURA 'Auvergne-Rhône-Alpes' === $demande->getEnseignant()->getDepartement()?->getRegion()->getLabel();
  174.         $form $this->createForm(EvaluationJeuneType::class, $evaluation, [
  175.             'isAura' => $isAURA,
  176.             'action' => $this->generateUrl('front_evaluation_jeune', ['uid' => $demande->getUid()]),
  177.         ]);
  178.         $form->handleRequest($request);
  179.         if ($form->isSubmitted()) {
  180.             if ($form->isValid()) {
  181.                 $evaluation->setDemandeInterventionId($demande->getId());
  182.                 $evaluation->save();
  183.                 return $this->render('Front/EvaluationJeune/confirmation.html.twig', ['type' => 'enseignant']);
  184.             } else {
  185.                 $this->addFlash('warning'"Merci de renseigner une valeur pour chaque critère d'évaluation de ce formulaire.");
  186.             }
  187.         }
  188.         /** @phpstan-ignore-next-line */
  189.         $demandeDate $demande->getSelectedCreneauDateFormat() ? $demande->getSelectedCreneauDateFormat()?->format('Y-m-d') : $demande->getCreneau1Debut()?->format('Y-m-d');
  190.         $todayFromatedDate = (new \DateTime())->format('Y-m-d');
  191.         $displayForm in_array($demande->getStatutId(), [DemandeInterventionStatut::EN_ATTENTE_EVALUATIONDemandeInterventionStatut::TERMINEE])
  192.             || (DemandeInterventionStatut::INTERVENANT_POSITIONNE === $demande->getStatutId() && $demandeDate === $todayFromatedDate);
  193.         return $this->render('Front/EvaluationJeune/form.html.twig', [
  194.             'form' => $form->createView(),
  195.             'type' => 'enseignant',
  196.             'uid' => $request->get('uid'),
  197.             'isAura' => $isAURA,
  198.             'demande' => $demande,
  199.             'displayForm' => $displayForm,
  200.         ]);
  201.     }
  202. }