src/Controller/DefaultController.php line 658

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\MessageSite;
  4. use App\Entity\Pharmacy;
  5. use App\Entity\Prestataire;
  6. use App\Entity\User;
  7. use App\Form\AccountRequestType;
  8. use App\Form\MessageSiteType;
  9. use App\Form\UserRemoveDataType;
  10. use App\Manager\AccountRequestManager;
  11. use App\Manager\AppUserManager;
  12. use App\Manager\MessageSiteManager;
  13. use App\Manager\PharmacyManager;
  14. use App\Manager\OrderManager;
  15. use App\Manager\PatientManager;
  16. use App\Service\AppMailer;
  17. use Http\Client\Common\Exception\HttpClientNotFoundException;
  18. use Knp\Snappy\Pdf as SnappyPdf;
  19. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  20. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  21. use Symfony\Component\Config\Definition\Exception\Exception;
  22. use Symfony\Component\HttpFoundation\JsonResponse;
  23. use Symfony\Component\HttpFoundation\RedirectResponse;
  24. use Symfony\Component\HttpFoundation\Request;
  25. use Symfony\Component\HttpFoundation\Response;
  26. use Symfony\Component\Routing\Annotation\Route;
  27. use Symfony\Component\Security\Core\Security as CoreSecurity;
  28. class DefaultController extends AbstractController
  29. {
  30.     /** @var PharmacyManager */
  31.     private $pharmacyManager;
  32.     public function __construct(PharmacyManager $pharmacyManager)
  33.     {
  34.         $this->pharmacyManager $pharmacyManager;
  35.     }
  36.     /**
  37.      * @Route("/redirect", name="redirect")
  38.      *
  39.      * @return RedirectResponse|Response
  40.      */
  41.     public function redirectAction()
  42.     {
  43.         /** @var User|null $user */
  44.         $user $this->getUser();
  45.         if (null === $user)
  46.         {
  47.             throw new HttpClientNotFoundException();
  48.         }
  49.         $route 'homepage';
  50.         if ($user->hasRole('ROLE_ADMINISTRATOR')) {
  51.             $route 'pharmacies';
  52.         } elseif (!$user->getTosRead()) {
  53.             $route 'cgu_read';
  54.         } elseif ($this->isGranted('patient_autodiag')) {
  55.             $route 'patient_auto_diag';
  56.         } elseif ($this->isGranted('order_delivery')) {
  57.             $route 'orders_delivery';
  58.         } elseif ($this->isGranted('carer_launcher')) {
  59.             $route 'launcher';
  60.         } elseif ($this->isGranted('order_admin') || $user->hasRole('ROLE_SUPER_ADMIN')) {
  61.             $route 'orders';
  62.         }
  63.         return $this->redirectToRoute($route);
  64.     }
  65.     /**
  66.      * @Route("/", name="homepage")
  67.      *
  68.      * @return Response
  69.      */
  70.     public function indexAction()
  71.     {
  72.         /** @var User|null $user */
  73.         $user $this->getUser();
  74.         $formContact $this->createForm(MessageSiteType::class);
  75.         if (null === $user)
  76.         {
  77.             return $this->render('default/index.html.twig', ['formContact' => $formContact->createView()]);
  78.         }
  79.         // During 5s redirection on homepage is banned, allow redirect after login
  80.         if (((new \DateTime())->getTimestamp() - $user->getLastLogin()->getTimestamp()) > 5)
  81.         {
  82.             return $this->render('default/index.html.twig', ['formContact' => $formContact->createView()]);
  83.         }
  84.         return $this->redirectToRoute('redirect');
  85.     }
  86.     /**
  87.      * @Route("/site/le-groupe/qui-sommes-nous", name="qui_sommes_nous")
  88.      * @IsGranted("outdated_routes")
  89.      *
  90.      * @return Response
  91.      */
  92.     public function quiSommesNousAction()
  93.     {
  94.         $formContact $this->createForm(MessageSiteType::class);
  95.         return $this->render('default/quiSommesNous.html.twig', ['formContact' => $formContact->createView()]);
  96.     }
  97.     /**
  98.      * @Route("/site/le-groupe/nos-engagements", name="nos_engagements")
  99.      * @IsGranted("outdated_routes")
  100.      *
  101.      * @return Response
  102.      */
  103.     public function nosEngagementsAction()
  104.     {
  105.         $formContact $this->createForm(MessageSiteType::class);
  106.         return $this->render('default/nosEngagements.html.twig', ['formContact' => $formContact->createView()]);
  107.     }
  108.     /**
  109.      * @Route("/site/supports-scientifiques/aide-prescription-antibiotiques", name="aide_antibio")
  110.      *
  111.      * @return Response
  112.      */
  113.     public function aideAntibioAction()
  114.     {
  115.         $formContact $this->createForm(MessageSiteType::class);
  116.         return $this->render('default/aideAntibio.html.twig', ['formContact' => $formContact->createView()]);
  117.     }
  118.     /**
  119.      * @Route("/site/supports-scientifiques/aide-prescription-nutrition", name="aide_nutrition")
  120.      *
  121.      * @return Response
  122.      */
  123.     public function aideNutritionAction()
  124.     {
  125.         $formContact $this->createForm(MessageSiteType::class);
  126.         return $this->render('default/aideNutrition.html.twig', ['formContact' => $formContact->createView()]);
  127.     }
  128.     /**
  129.      * @Route("/site/supports-scientifiques/disponibilite-antibiotiques-iv", name="dispo_antibio")
  130.      *
  131.      * @return Response
  132.      */
  133.     public function dispoAntibioAction()
  134.     {
  135.         $formContact $this->createForm(MessageSiteType::class);
  136.         return $this->render('default/dispoAntibio.html.twig', ['formContact' => $formContact->createView()]);
  137.     }
  138.     /**
  139.      * @Route("/site/supports-scientifiques/fiche-patient_antibiotique_iv", name="fiche_patient_antibio")
  140.      *
  141.      * @return Response
  142.      */
  143.     public function fichePatientAntibioAction()
  144.     {
  145.         $formContact $this->createForm(MessageSiteType::class);
  146.         return $this->render('default/fichePatientAntibio.html.twig', ['formContact' => $formContact->createView()]);
  147.     }
  148.     /**
  149.      * @Route("/site/supports-scientifiques/fiche-patient_sous-nutrition-parenterale", name="fiche_patient_nutrition")
  150.      *
  151.      * @return Response
  152.      */
  153.     public function fichePatientNutritionAction()
  154.     {
  155.         $formContact $this->createForm(MessageSiteType::class);
  156.         return $this->render('default/fichePatientNutrition.html.twig', ['formContact' => $formContact->createView()]);
  157.     }
  158.     /**
  159.      * @Route("/site/supports-scientifiques/aide-prescription-materiel-medical", name="aide_mat_med")
  160.      *
  161.      * @return Response
  162.      */
  163.     public function aideMatMedAction()
  164.     {
  165.         $formContact $this->createForm(MessageSiteType::class);
  166.         return $this->render('default/aideMatMed.html.twig', ['formContact' => $formContact->createView()]);
  167.     }
  168.     /**
  169.      * @Route("/site/supports-scientifiques/conditions-prescription-delivrance-medicaments-stupefiants", name="pres_stup")
  170.      *
  171.      * @return Response
  172.      */
  173.     public function presStupAction()
  174.     {
  175.         $formContact $this->createForm(MessageSiteType::class);
  176.         return $this->render('default/presStup.html.twig', ['formContact' => $formContact->createView()]);
  177.     }
  178.     /**
  179.      * @Route("/site/supports-scientifiques/conditions-delivrance-medicaments-medicaments-exception", name="med_exception")
  180.      *
  181.      * @return Response
  182.      */
  183.     public function medExceptionAction()
  184.     {
  185.         $formContact $this->createForm(MessageSiteType::class);
  186.         return $this->render('default/medException.html.twig', ['formContact' => $formContact->createView()]);
  187.     }
  188.     /**
  189.      * @Route("/site/supports-scientifiques/disponibilite-chimiotherapies-orales", name="chimio_orales")
  190.      *
  191.      * @return Response
  192.      */
  193.     public function chimioOralesAction()
  194.     {
  195.         $formContact $this->createForm(MessageSiteType::class);
  196.         return $this->render('default/chimioOrales.html.twig', ['formContact' => $formContact->createView()]);
  197.     }
  198.     /**
  199.      * @Route("/site/actualites/en-bref", name="en_bref")
  200.      * @IsGranted("outdated_routes")
  201.      *
  202.      * @return Response
  203.      */
  204.     public function enBrefAction()
  205.     {
  206.         $formContact $this->createForm(MessageSiteType::class);
  207.         return $this->render('default/enBref.html.twig', ['formContact' => $formContact->createView()]);
  208.     }
  209.     /**
  210.      * @Route("/site/actualites/point-reglementaire", name="point_reglementaire")
  211.      * @IsGranted("outdated_routes")
  212.      *
  213.      * @return Response
  214.      */
  215.     public function pointReglementaireAction()
  216.     {
  217.         $formContact $this->createForm(MessageSiteType::class);
  218.         return $this->render('default/pointReglementaire.html.twig', ['formContact' => $formContact->createView()]);
  219.     }
  220.     /**
  221.      * @Route("/site/actualites/demarche-qualite", name="demarche_qualite")
  222.      * @IsGranted("outdated_routes")
  223.      *
  224.      * @return Response
  225.      */
  226.     public function demarcheQualiteAction()
  227.     {
  228.         $formContact $this->createForm(MessageSiteType::class);
  229.         return $this->render('default/demarcheQualite.html.twig', ['formContact' => $formContact->createView()]);
  230.     }
  231.     /**
  232.      * @Route("/site/actualites/newsletters", name="newsletters")
  233.      * @IsGranted("outdated_routes")
  234.      *
  235.      * @return Response
  236.      */
  237.     public function newslettersAction()
  238.     {
  239.         $formContact $this->createForm(MessageSiteType::class);
  240.         return $this->render('default/newsletters.html.twig', ['formContact' => $formContact->createView()]);
  241.     }
  242.     /**
  243.      * @Route("/site/actualites/epu-bonnes-pratiques", name="epu")
  244.      *
  245.      * @return Response
  246.      */
  247.     public function epuAction()
  248.     {
  249.         $formContact $this->createForm(MessageSiteType::class);
  250.         return $this->render('default/epu.html.twig', ['formContact' => $formContact->createView()]);
  251.     }
  252.     /**
  253.      * @Route("/site/le-groupe/notre-organisation", name="notre_organisation")
  254.      * @IsGranted("outdated_routes")
  255.      *
  256.      * @return Response
  257.      */
  258.     public function notreOrganisationAction()
  259.     {
  260.         $formContact $this->createForm(MessageSiteType::class);
  261.         return $this->render('default/notreOrganisation.html.twig', ['formContact' => $formContact->createView()]);
  262.     }
  263.     /**
  264.      * @Route("/site/nos-services/tracabilite-des-medicaments", name="tracabilite_medicaments")
  265.      * @IsGranted("outdated_routes")
  266.      *
  267.      * @return Response
  268.      */
  269.     public function tracabiliteMedicamentsAction()
  270.     {
  271.         $formContact $this->createForm(MessageSiteType::class);
  272.         return $this->render('default/tracabiliteDesMedicaments.html.twig',
  273.             ['formContact' => $formContact->createView()]);
  274.     }
  275.     /**
  276.      * @Route("/site/nos-services/tracabilite-des-soins", name="tracabilite_soins")
  277.      * @IsGranted("outdated_routes")
  278.      *
  279.      * @return Response
  280.      */
  281.     public function tracabiliteSoinsAction()
  282.     {
  283.         $formContact $this->createForm(MessageSiteType::class);
  284.         return $this->render('default/tracabiliteDesSoins.html.twig', ['formContact' => $formContact->createView()]);
  285.     }
  286.     /**
  287.      * @Route("/site/nos-services/depot-securise-ordonnances", name="depot_ordonnances")
  288.      * @IsGranted("outdated_routes")
  289.      *
  290.      * @return Response
  291.      */
  292.     public function depotOrdonnancesAction()
  293.     {
  294.         $formContact $this->createForm(MessageSiteType::class);
  295.         return $this->render('default/depotOrdonnances.html.twig', ['formContact' => $formContact->createView()]);
  296.     }
  297.     /**
  298.      * @Route("/site/nos-services/suivi-patient-temps-reel", name="suivi_temps_reel")
  299.      * @IsGranted("outdated_routes")
  300.      *
  301.      * @return Response
  302.      */
  303.     public function suiviTempsReelAction()
  304.     {
  305.         $formContact $this->createForm(MessageSiteType::class);
  306.         return $this->render('default/suiviTempsReel.html.twig', ['formContact' => $formContact->createView()]);
  307.     }
  308.     /**
  309.      * @Route("/site/nos-services/edition-automatisee-compte-rendu", name="edition_auto")
  310.      * @IsGranted("outdated_routes")
  311.      *
  312.      * @return Response
  313.      */
  314.     public function editionAutoAction()
  315.     {
  316.         $formContact $this->createForm(MessageSiteType::class);
  317.         return $this->render('default/editionAuto.html.twig', ['formContact' => $formContact->createView()]);
  318.     }
  319.     /**
  320.      * @Route("/site/nos-services/pharmacovigilance", name="pharmacovigilance")
  321.      * @IsGranted("outdated_routes")
  322.      *
  323.      * @return Response
  324.      */
  325.     public function pharmacovigilanceOrdonnancesAction()
  326.     {
  327.         $formContact $this->createForm(MessageSiteType::class);
  328.         return $this->render('default/pharmacovigilance.html.twig', ['formContact' => $formContact->createView()]);
  329.     }
  330.     /**
  331.      * @Route("/new", name="new")
  332.      *
  333.      * @return Response
  334.      */
  335.     public function newAction()
  336.     {
  337.         return $this->redirectToRoute('homepage');
  338.     }
  339.     /**
  340.      * @Route("/login-pro", name="login_pro")
  341.      *
  342.      * @param Request $request
  343.      *
  344.      * @return Response
  345.      */
  346.     public function loginProAction(Request $request)
  347.     {
  348.         $session $request->getSession();
  349.         $session->set('type''pro');
  350.         return $this->redirectToRoute('fos_user_security_login');
  351.     }
  352.     /**
  353.      * @Route("/login-patient", name="login_patient")
  354.      * @IsGranted("outdated_routes")
  355.      *
  356.      * @param Request $request
  357.      *
  358.      * @return Response
  359.      */
  360.     public function loginPatientAction(Request $request)
  361.     {
  362.         $session $request->getSession();
  363.         $session->set('type''patient');
  364.         return $this->redirectToRoute('fos_user_security_login');
  365.     }
  366.     /**
  367.      * @Route("/sitemap.xml", name="sitemap")
  368.      *
  369.      * @param Request $request
  370.      *
  371.      * @return RedirectResponse
  372.      */
  373.     public function sitemapAction(Request $request)
  374.     {
  375.         return $this->redirect('/sitemap.xml');
  376.     }
  377.     /**
  378.      * @Route("contact/send", name="contact_send", options={"expose"=true}, methods={"POST"})
  379.      *
  380.      * @param Request $request
  381.      * @param MessageSiteManager $messageSiteManager
  382.      * @param AppMailer $appMailer
  383.      *
  384.      * @return JsonResponse
  385.      */
  386.     public function messageTypeAction(Request $requestMessageSiteManager $messageSiteManagerAppMailer $appMailer)
  387.     {
  388.         $data $request->request->get('appbundle_message_site');
  389.         $messageSite $messageSiteManager->create(
  390.             $data['name'],
  391.             $data['email'],
  392.             $data['message']
  393.         );
  394.         if ($messageSite instanceof MessageSite)
  395.         {
  396.             $appMailer->sendMessageSite($this->getParameter('contact_email'), $messageSite);
  397.         }
  398.         return new JsonResponse('success');
  399.     }
  400.     /**
  401.      * @Route("/account/request", name="account_request")
  402.      *
  403.      * @param Request $request
  404.      * @param AccountRequestManager $accountRequestManager
  405.      * @param AppMailer $appMailer
  406.      *
  407.      * @return Response
  408.      */
  409.     public function accountRequestAction(Request $request,
  410.         AccountRequestManager $accountRequestManager,
  411.         AppMailer $appMailer)
  412.     {
  413.         $ended false;
  414.         $form $this->createForm(AccountRequestType::class);
  415.         $form->handleRequest($request);
  416.         if ($form->isSubmitted() && $form->isValid())
  417.         {
  418.             $accountRequest $form->getData();
  419.             $accountRequestManager->create($accountRequest);
  420.             $appMailer->sendAccountRequest($accountRequest);
  421.             // Clear form
  422.             $form $this->createForm(AccountRequestType::class);
  423.             $ended true;
  424.         }
  425.         return $this->render('default/account_request.html.twig', [
  426.             'form' => $form->createView(),
  427.             'ended' => $ended,
  428.         ]);
  429.     }
  430.     /**
  431.      * @Route("cgu_read", name="cgu_read")
  432.      *
  433.      * @return RedirectResponse|Response
  434.      */
  435.     public function tosReadAction()
  436.     {
  437.         /** @var User $user */
  438.         $user $this->getUser();
  439.         if ($user->getTosRead())
  440.         {
  441.             $this->redirectToRoute('redirect');
  442.         }
  443.         return $this->render('user/cgu_read.html.twig');
  444.     }
  445.     /**
  446.      * @Route("cgu_accept", name="cgu_accept")
  447.      *
  448.      * @param AppUserManager $appUserManager
  449.      *
  450.      * @return RedirectResponse
  451.      */
  452.     public function cguAcceptAction(AppUserManager $appUserManager)
  453.     {
  454.         /** @var User $user */
  455.         $user $this->getUser();
  456.         $appUserManager->acceptTos($user$this->getParameter('cgu_file'));
  457.         return $this->redirectToRoute('redirect');
  458.     }
  459.     /**
  460.      * @Route("launcher", name="launcher")
  461.      * @IsGranted("carer_launcher")
  462.      *
  463.      * @param Request $request
  464.      * @param PatientManager $patientManager
  465.      * @param OrderManager $orderManager
  466.      *
  467.      * @return Response
  468.      */
  469.     public function launcherAction(Request $requestPatientManager $patientManagerOrderManager $orderManager)
  470.     {
  471.         /** @var User $user */
  472.         $user $this->getUser();
  473.         $pharmacy = !empty($request->get('pharmacy')) ? $request->get('pharmacy') : null;
  474.         $patients = [];
  475.         $pendingOrders = [];
  476.         if (($user->hasRole('ROLE_HEALTH_PROVIDER') || $user->hasRole('ROLE_HOSPITAL')) && $user->getPrestataire() instanceof Prestataire)
  477.         {
  478.             $patients $patientManager->getByPrestataire($user->getPrestataire(), $pharmacy);
  479.             $pendingOrders $orderManager->getByPrestataire($user->getPrestataire(),
  480.                 false,
  481.                 false,
  482.                 'ASC',
  483.                 false,
  484.                 $pharmacy);
  485.         } elseif ($user->hasRole('ROLE_NURSE'))
  486.         {
  487.             $patients $patientManager->getByNurseUser($user$pharmacy);
  488.             $pendingOrders $orderManager->getByNurseUser($userfalsefalse$pharmacy);
  489.         }
  490.         $pharmacies $this->pharmacyManager->getCurrentUserPharmacyList();
  491.         return $this->render(
  492.             'default/launcher.html.twig',
  493.             [
  494.                 'pharmacies' => $pharmacies,
  495.                 'patients' => $patients,
  496.                 'pendingOrders' => $pendingOrders,
  497.                 'selectedPharmacy' => $pharmacy,
  498.             ]
  499.         );
  500.     }
  501.     /**
  502.      * @Route("/site/le-groupe/documentation-rgpd", name="documentation_rgpd")
  503.      * @IsGranted("outdated_routes")
  504.      *
  505.      * @return Response
  506.      */
  507.     public function rgpdDocumentation()
  508.     {
  509.         $formContact $this->createForm(MessageSiteType::class);
  510.         return $this->render('default/rgpdDocumentation.html.twig', ['formContact' => $formContact->createView()]);
  511.     }
  512.     /**
  513.      * @Route("/user/disabled", name="user_disabled")
  514.      *
  515.      * @return Response
  516.      */
  517.     public function userDisabledAction()
  518.     {
  519.         $formContact $this->createForm(MessageSiteType::class);
  520.         return $this->render('default/userDisabled.html.twig', ['formContact' => $formContact->createView()]);
  521.     }
  522.     /**
  523.      * @Route("/user/password/expired", name="user_password_expired")
  524.      *
  525.      * @return Response
  526.      */
  527.     public function userPasswordExpiredAction()
  528.     {
  529.         $formContact $this->createForm(MessageSiteType::class);
  530.         return $this->render('default/passwordExpire.html.twig', ['formContact' => $formContact->createView()]);
  531.     }
  532.     /**
  533.      * @Route("/user/remove/data", name="user_remove_data")
  534.      *
  535.      * @param Request $request
  536.      * @param AppMailer $appMailer
  537.      *
  538.      * @return Response
  539.      */
  540.     public function userRemoveDataAction(Request $requestAppMailer $appMailer)
  541.     {
  542.         $form $this->createForm(UserRemoveDataType::class);
  543.         $formContact $this->createForm(MessageSiteType::class);
  544.         $form->handleRequest($request);
  545.         if ($form->isSubmitted() && $form->isValid())
  546.         {
  547.             $userRemoveData $form->getData();
  548.             $appMailer->sendUserRemoveData($this->getParameter('contact_email'), $userRemoveData);
  549.             return $this->render('default/userRemoveDataConfirmation.html.twig',
  550.                 ['formContact' => $formContact->createView()]);
  551.         }
  552.         return $this->render('default/userRemoveData.html.twig', [
  553.             'form' => $form->createView(),
  554.             'formContact' => $formContact->createView()
  555.         ]);
  556.     }
  557.     /**
  558.      * @Route("qui-sommes-nous", name="vh_qui_sommes_nous")
  559.      *
  560.      * @return Response
  561.      */
  562.     public function vhQuiSommesNousAction()
  563.     {
  564.         $formContact $this->createForm(MessageSiteType::class);
  565.         return $this->render('default/vhQuiSommesNous.html.twig', ['formContact' => $formContact->createView()]);
  566.     }
  567. }