src/Controller/AdminController.php line 37

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use App\Repository\AvocatsRepository;
  7. use App\Entity\Avocats;
  8. use App\Entity\JoursSemaine;
  9. use App\Entity\Tranches;
  10. use App\Repository\JoursSemaineRepository;
  11. use App\Repository\JoursFermeturesRepository;
  12. use App\Repository\TranchesRepository;
  13. use App\Repository\RendezVousRepository;
  14. use App\Repository\LieuxRepository;
  15. use App\Repository\StatutsRepository;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Mailjet\Api\Client;
  18. use Mailjet\Resources;
  19. class AdminController extends AbstractController
  20. {
  21.     /**
  22.      * @Route("/administration", name="app_admin")
  23.      */
  24.     public function index(): Response
  25.     {
  26.         return $this->render('admin/index.html.twig', [
  27.             'controller_name' => 'AdminController',
  28.         ]);
  29.     }
  30.      /**
  31.      * @Route("/tranchesHoraires/{id}", name="tranchesHoraires")
  32.      */
  33.     public function tranchesHoraires(Request $request$id,TranchesRepository $tranchesRepo,  JoursFermeturesRepository $joursFermetureRepo): Response
  34.     {
  35.         $tranches $tranchesRepo->findBy(array('JoursFermetures'=>$joursFermetureRepo->findOneById($id)));
  36.        $jours $joursFermetureRepo->findOneById($id);
  37.        $em $this->getDoctrine()->getManager();
  38.        
  39.        if(!empty($_POST))
  40.        {
  41.             foreach($tranches as $res)
  42.             {
  43.                 $res->setOuvert(0);
  44.                 $em->persist($res);
  45.                 $em->flush();
  46.             }
  47.             foreach($_POST['ouvert'] as $res)
  48.             {
  49.                 $tr $tranchesRepo->findOneById($res);
  50.                 $tr->setOuvert(1);
  51.                 $em->persist($tr);
  52.                 $em->flush();
  53.             }
  54.             return $this->redirectToRoute('tranchesHoraires', ['id'=>$id,'success'=>'ok'], Response::HTTP_SEE_OTHER);
  55.        }
  56.        
  57.         return $this->render('admin/tranches.html.twig', [
  58.             'tranches' => $tranches,
  59.             'jours'=>$jours
  60.         ]);
  61.     }
  62.      /**
  63.      * @Route("/updateJoursSemaineAvocat", name="updateJoursSemaineAvocat")
  64.      */
  65.     public function updateJoursSemaineAvocat(Request $requestJoursSemaineRepository $joursSemaineRepoAvocatsRepository $avocatsRepository): Response
  66.     {
  67.         if(isset($_POST['lundi']))
  68.         {
  69.             $lundi 1;
  70.         }
  71.         else
  72.         {
  73.             $lundi 0;
  74.         }
  75.         if(isset($_POST['mardi']))
  76.         {
  77.             $mardi 1;
  78.         }
  79.         else
  80.         {
  81.             $mardi 0;
  82.         }
  83.         if(isset($_POST['mercredi']))
  84.         {
  85.             $mercredi 1;
  86.         }
  87.         else
  88.         {
  89.             $mercredi 0;
  90.         }
  91.         if(isset($_POST['jeudi']))
  92.         {
  93.             $jeudi 1;
  94.         }
  95.         else
  96.         {
  97.             $jeudi 0;
  98.         }
  99.         if(isset($_POST['vendredi']))
  100.         {
  101.             $vendredi 1;
  102.         }
  103.         else
  104.         {
  105.             $vendredi 0;
  106.         }
  107.         if(isset($_POST['samedi']))
  108.         {
  109.             $samedi 1;
  110.         }
  111.         else
  112.         {
  113.             $samedi 0;
  114.         }
  115.         if(isset($_POST['dimanche']))
  116.         {
  117.             $dimanche 1;
  118.         }
  119.         else
  120.         {
  121.             $dimanche 0;
  122.         }
  123.         $js $joursSemaineRepo->findOneById($_POST['id']);
  124.         $js->setLundi($lundi);
  125.         $js->setMardi($mardi);
  126.         $js->setMercredi($mercredi);
  127.         $js->setJeudi($jeudi);
  128.         $js->setVendredi($vendredi);
  129.         $js->setSamedi($samedi);
  130.         $js->setDimanche($dimanche);
  131.         $joursSemaineRepo->add($jstrue);
  132.         return $this->redirectToRoute('app_avocats_edit', ['id'=>$js->getAvocats()->getId()], Response::HTTP_SEE_OTHER);
  133.         
  134.     }
  135.  /**
  136.      * @Route("/addLieuAvocat/{id}", name="addLieuAvocat")
  137.      */
  138.     public function addLieuAvocat(Request $requestLieuxRepository $lieuxRepo,JoursSemaineRepository $joursSemaineRepoAvocatsRepository $avocatsRepository,$id): Response
  139.     {
  140.         if(!empty($_POST))
  141.         {
  142.             $lieu $lieuxRepo->findOneById($_POST['lieu']);
  143.             $avocat $avocatsRepository->findOneById($_POST['avocat']);
  144.             $lieuExist $joursSemaineRepo->findBy(array('Lieux'=>$lieu,'Avocats'=>$avocat));
  145.             if(count($lieuExist) > 0)
  146.             {
  147.                 return $this->redirectToRoute('app_avocats_edit', ['id'=>$avocat->getId(),'erreur'=>'lieuExist'], Response::HTTP_SEE_OTHER);
  148.             }
  149.             else
  150.             {
  151.             $js = new JoursSemaine();
  152.         $js->setLundi(1);
  153.         $js->setMardi(1);
  154.         $js->setMercredi(1);
  155.         $js->setJeudi(1);
  156.         $js->setVendredi(1);
  157.         $js->setSamedi(0);
  158.         $js->setDimanche(0);
  159.         $js->setLieux($lieu);
  160.         $js->setAvocats($avocat);
  161.         $js->setHoAmLundi('07:00');
  162.         $js->setHfAmLundi('12:00');
  163.         $js->setHoPmLundi('14:00');
  164.         $js->setHfPmLundi('18:00');
  165.         $js->setHoAmMardi('07:00');
  166.         $js->setHfAmMardi('12:00');
  167.         $js->setHoPmMardi('14:00');
  168.         $js->setHfPmMardi('18:00');
  169.         $js->setHoAmMercredi('07:00');
  170.         $js->setHfAmMercredi('12:00');
  171.         $js->setHoPmMercredi('14:00');
  172.         $js->setHfPmMercredi('18:00');
  173.         $js->setHoAmJeudi('07:00');
  174.         $js->setHfAmJeudi('12:00');
  175.         $js->setHoPmJeudi('14:00');
  176.         $js->setHfPmJeudi('18:00');
  177.         $js->setHoAmVendredi('07:00');
  178.         $js->setHfAmVendredi('12:00');
  179.         $js->setHoPmVendredi('14:00');
  180.         $js->setHfPmVendredi('18:00');
  181.         $js->setHoAmSamedi('07:00');
  182.         $js->setHfAmSamedi('12:00');
  183.         $js->setHoPmSamedi('14:00');
  184.         $js->setHfPmSamedi('18:00');
  185.         $js->setHoAmDimanche('07:00');
  186.         $js->setHfAmDimanche('12:00');
  187.         $js->setHoPmDimanche('14:00');
  188.         $js->setHfPmDimanche('18:00');
  189.         $joursSemaineRepo->add($jstrue);
  190.         return $this->redirectToRoute('app_avocats_edit', ['id'=>$avocat->getId()], Response::HTTP_SEE_OTHER);
  191.             }
  192.         }
  193.         return $this->render('admin/addLieuAvocat.html.twig', [
  194.             'lieux' => $lieuxRepo->findAll(),
  195.             'avocat'=>$id
  196.         ]);
  197.     }
  198.      /**
  199.      * @Route("/calendrier/{id}", name="calendrier")
  200.      */
  201.     public function calendrier(Request $requestRendezVousRepository $rdvRepo,JoursSemaineRepository $joursSemaineRepoAvocatsRepository $avocatsRepository,$id): Response
  202.     {
  203.         $avocat=$avocatsRepository->findOneById($id);
  204.         $rdv $rdvRepo->findBy(array('Avocats'=>$avocat));
  205.         return $this->render('admin/calendrier.html.twig', [
  206.             
  207.             'rdv'=>$rdv,
  208.             'avocat'=>$avocat
  209.         ]);
  210.     }
  211.     
  212.      /**
  213.      * @Route("/listeRdv", name="listeRdv")
  214.      */
  215.     public function listeRdv(Request $requestRendezVousRepository $rdvRepoAvocatsRepository $avocatsRepositoryTranchesRepository $tranchesRepositoryJoursFermeturesRepository $joursFermeturesRepository)
  216.     {
  217.         // header('Access-Control-Allow-Origin: *');
  218.         $em $this->getDoctrine()->getManager();
  219.         
  220.         if(empty($_GET['avocat']))
  221.         {
  222.             $_GET['avocat'] = $this->getUser()->getAvocats();
  223.         }
  224.         $avocat=$avocatsRepository->findOneById($_GET['avocat']);
  225.         $rdv $rdvRepo->findBy(array('Avocats'=>$avocat));
  226.        $rappels = array();
  227.        $i=-1;
  228.        $rappels = [];
  229.        foreach($rdv as $res)
  230.        {
  231.         // en attente
  232.         if($res->getStatuts()->getId() == 1)
  233.         {
  234.                 $titre $res->getLieux()->getLibelle().' - '.$res->getNom().' '.$res->getPrenom();
  235.                 $rappels[] = array(
  236.                 'id' => $res->getId(),
  237.                 'title' => $titre,
  238.                 'start' => str_replace(' ''T'$res->getDate()->format('Y-m-d H:i:s')),
  239.                 'end' => str_replace(' ''T'$res->getDateFin()->format('Y-m-d H:i:s')),
  240.                 'color' => '#f3cb55'
  241.             );
  242.         }
  243.         // validé
  244.         if($res->getStatuts()->getId() == 2)
  245.         {
  246.                 $titre $res->getLieux()->getLibelle().' - '.$res->getNom().' '.$res->getPrenom();
  247.                 $rappels[] = array(
  248.                 'id' => $res->getId(),
  249.                 'title' => $titre,
  250.                 'start' => str_replace(' ''T'$res->getDate()->format('Y-m-d H:i:s')),
  251.                 'end' => str_replace(' ''T'$res->getDateFin()->format('Y-m-d H:i:s')),
  252.                 'color' => '#32ae38'
  253.             );
  254.         }
  255.         
  256.        }
  257.         // dispo
  258.         $jours $joursFermeturesRepository->findBy(['Avocats'=>$avocat]);
  259.         $j = array();
  260.         foreach($jours as $res)
  261.         {
  262.             array_push($j$res->getId());
  263.         }
  264.         
  265.         $tranches $tranchesRepository->findBy(['JoursFermetures'=>$j,'Ouvert'=>1]);
  266.         foreach($tranches as $res)
  267.         {
  268.             if($res->getDate()->format('Y-m-d') >= date('Y-m-d'))
  269.             {
  270.      
  271.                 $titre 'Disponible';
  272.                 $rappels[] = array(
  273.                     'id' => $res->getId(),
  274.                     'title' => $titre,
  275.                     'start' => str_replace(' ''T'$res->getDate()->format('Y-m-d H:i:s')),
  276.                     'end' => str_replace(' ''T'$res->getDate()->format('Y-m-d H:i:s')),
  277.                     'color' => '#2986cc'
  278.                 );
  279.             }
  280.         }
  281.         
  282.         $response = new Response();
  283.         $response->setContent(json_encode($rappels));
  284.         // $response->headers->set('Content-Type', 'application/json');
  285.         $response->headers->set('Access-Control-Allow-Origin''*');
  286.         return $response;
  287.     }
  288.         /**
  289.      * @Route("/liste-des-rendez-vous/{etat}", name="listeRdvAConfirmer")
  290.      */
  291.     public function listeRdvAConfirmer(Request $requestRendezVousRepository $rdvRepoAvocatsRepository $avocatsRepository$etat)
  292.     {
  293.         // header('Access-Control-Allow-Origin: *');
  294.         $em $this->getDoctrine()->getManager();
  295.         
  296.         if(empty($_GET['avocat']))
  297.         {
  298.             $_GET['avocat'] = $this->getUser()->getAvocats();
  299.         }
  300.         $avocat=$avocatsRepository->findOneById($_GET['avocat']);
  301.         $rdv $rdvRepo->findBy(array('Avocats'=>$avocat,'Statuts'=>$etat),array('id'=>'desc'));
  302.         return $this->render('admin/rdvEnAttente.html.twig', [
  303.             
  304.             'rdv'=>$rdv,
  305.             'avocat'=>$avocat,
  306.             "etat"=>$etat
  307.         ]);
  308.        
  309.     }
  310.      /**
  311.      * @Route("/details-rendez-vous/{id}", name="detailsRdv")
  312.      */
  313.     public function detailsRdv(Request $requestRendezVousRepository $rdvRepoAvocatsRepository $avocatsRepository$id)
  314.     {
  315.         // header('Access-Control-Allow-Origin: *');
  316.         $em $this->getDoctrine()->getManager();
  317.         
  318.         
  319.         
  320.         $rdv $rdvRepo->findOneById($id);
  321.         return $this->render('admin/detailsRdv.html.twig', [
  322.             
  323.             'rdvs'=>$rdv,
  324.            
  325.         ]);
  326.        
  327.     }
  328.        /**
  329.      * @Route("/updateEtatRdv/{id}/{etat}/{page}", name="updateEtatRdv")
  330.      */
  331.     public function updateEtatRdv(Request $requestRendezVousRepository $rdvRepoAvocatsRepository $avocatsRepositoryStatutsRepository $statutsRepository$id,$etat,$page)
  332.     {
  333.         // header('Access-Control-Allow-Origin: *');
  334.         $em $this->getDoctrine()->getManager();
  335.         $rdv $rdvRepo->findOneById($id);
  336.         if($etat == 'accepter')
  337.         {
  338.             $statut $statutsRepository->findOneById(2);
  339.             $rdv->setStatuts($statut);
  340.             $em->persist($rdv);
  341.             $em->flush();
  342.             $etatRedirect 1;
  343.             $messageSMS "M./Mme ".$rdv->getPrenom()." ".$rdv->getNom().", Nous vous confirmons le rendez-vous fixé en date du ".$rdv->getDate()->format('d-m-Y')." à ".$rdv->getDate()->format('H:i')." heures avec Maître ".$rdv->getAvocats()->getNom().". Lieu : ".$rdv->getLieux()->getAdresse().".";
  344.             //$messageSMS .= "Vous pouvez annuler ce rendez-vous jusqu’à 48h à l’avance via l'adresse suivante ".$rdv->getAvocats()->getEmail().". Nous attirons votre attention sur le fait que tout rendez-vous non annulé qui ne serait pas honoré est de nature à engendrer des désagréments pour notre cabinet de sorte que les frais y relatifs pourraient vous être réclamés à concurrence d’un montant forfaitaire de 50 € tvac.";
  345.           
  346.             $subject 'Confirmation du rendez-vous';
  347.             $message $this->renderView(
  348.                 // templates/emails/registration.txt.twig
  349.                     'emails/confirmationFinale.html.twig',
  350.                     [
  351.                         'nom' => strtoupper($rdv->getNom()), 
  352.                         'prenom' => strtoupper($rdv->getPrenom()), 
  353.                         'date'=>$rdv->getDate()->format('d-m-Y'), 
  354.                         'heure'=>$rdv->getDate()->format('H:i'), 
  355.                         'email'=>$rdv->getEmail(), 
  356.                         'telephone'=>$rdv->getTelephone(), 
  357.                         'lieu'=>$rdv->getLieux()->getLibelle(), 
  358.                         'adresse'=>$rdv->getLieux()->getAdresse(), 
  359.                         'telAvocat'=>$rdv->getAvocats()->getTel(), 
  360.                         'emailAvocat'=>$rdv->getAvocats()->getEmail(), 
  361.                         'avocat'=>$rdv->getAvocats()->getNom().' '.$rdv->getAvocats()->getPrenom(), 
  362.                         ]
  363.                 );
  364.       
  365.       
  366.             
  367.         }
  368.         
  369.         if($etat == 'refuser')
  370.         {
  371.             $em->remove($rdv);
  372.             $em->flush();
  373.             $etatRedirect 1;
  374.             if($_GET['reponse'] == 1)
  375.             {
  376.                 $messageSMS "M./Mme ".$rdv->getPrenom()." ".$rdv->getNom().", malheureusement,  Maître ".$rdv->getAvocats()->getNom()." ne pourra vous recevoir en date du ".$rdv->getDate()->format('d-m-Y')." à ".$rdv->getDate()->format('H:i')." heures à ".$rdv->getLieux()->getAdresse().".";
  377.             }
  378.             else
  379.             {
  380.                 $messageSMS "M./Mme ".$rdv->getPrenom()." ".$rdv->getNom().", malheureusement,  Maître ".$rdv->getAvocats()->getNom()." ne pourra vous recevoir en date du ".$rdv->getDate()->format('d-m-Y')." à ".$rdv->getDate()->format('H:i')." heures à ".$rdv->getLieux()->getAdresse().".";
  381.             }
  382.             $subject 'Annulation du rendez-vous';
  383.             $message $this->renderView(
  384.                 // templates/emails/registration.txt.twig
  385.                     'emails/annulation.html.twig',
  386.                     [
  387.                         'nom' => strtoupper($rdv->getNom()), 
  388.                         'prenom' => strtoupper($rdv->getPrenom()), 
  389.                         'date'=>$rdv->getDate()->format('d-m-Y'), 
  390.                         'heure'=>$rdv->getDate()->format('H:i'), 
  391.                         'email'=>$rdv->getEmail(), 
  392.                         'telephone'=>$rdv->getTelephone(), 
  393.                         'lieu'=>$rdv->getLieux()->getLibelle(), 
  394.                         'adresse'=>$rdv->getLieux()->getAdresse(), 
  395.                         'telAvocat'=>$rdv->getAvocats()->getTel(), 
  396.                         'emailAvocat'=>$rdv->getAvocats()->getEmail(), 
  397.                         'avocat'=>$rdv->getAvocats()->getNom().' '.$rdv->getAvocats()->getPrenom(), 
  398.                         'reponse'=>$_GET['reponse']
  399.                         ]
  400.                 );
  401.       
  402.             
  403.         }
  404.         if($etat == 'archiver')
  405.         {
  406.             $statut $statutsRepository->findOneById(3);
  407.             $rdv->setStatuts($statut);
  408.             $em->persist($rdv);
  409.             $em->flush();
  410.             $etatRedirect 1;
  411.    
  412.         }
  413.         if($etat == 'annuler')
  414.         {
  415.             $em->remove($rdv);
  416.             $em->flush();
  417.             $etatRedirect 2;
  418.             if($_GET['reponse'] == 1)
  419.             {
  420.                 $messageSMS "M./Mme ".$rdv->getPrenom()." ".$rdv->getNom().", malheureusement,  Maître ".$rdv->getAvocats()->getNom()." ne pourra pas vous recevoir en date du ".$rdv->getDate()->format('d-m-Y')." à ".$rdv->getDate()->format('H:i')." heures à ".$rdv->getLieux()->getAdresse().".";
  421.             }
  422.             else
  423.             {
  424.                 $messageSMS "M./Mme ".$rdv->getPrenom()." ".$rdv->getNom().", malheureusement,  Maître ".$rdv->getAvocats()->getNom()." ne pourra pas vous recevoir en date du ".$rdv->getDate()->format('d-m-Y')." à ".$rdv->getDate()->format('H:i')." heures à ".$rdv->getLieux()->getAdresse().".";
  425.             }
  426.             $subject 'Annulation du rendez-vous';
  427.             $message $this->renderView(
  428.                 // templates/emails/registration.txt.twig
  429.                     'emails/annulation.html.twig',
  430.                     [
  431.                         'nom' => strtoupper($rdv->getNom()), 
  432.                         'prenom' => strtoupper($rdv->getPrenom()), 
  433.                         'date'=>$rdv->getDate()->format('d-m-Y'), 
  434.                         'heure'=>$rdv->getDate()->format('H:i'), 
  435.                         'email'=>$rdv->getEmail(), 
  436.                         'telephone'=>$rdv->getTelephone(), 
  437.                         'lieu'=>$rdv->getLieux()->getLibelle(), 
  438.                         'adresse'=>$rdv->getLieux()->getAdresse(), 
  439.                         'telAvocat'=>$rdv->getAvocats()->getTel(), 
  440.                         'emailAvocat'=>$rdv->getAvocats()->getEmail(), 
  441.                         'avocat'=>$rdv->getAvocats()->getNom().' '.$rdv->getAvocats()->getPrenom(),
  442.                         'reponse'=>$_GET['reponse'
  443.                         ]
  444.                 );
  445.       
  446.         }
  447.         $mj = new \Mailjet\Client('9c42ddfa4db6f8f973a32c7087ea2d51',
  448.         'eace5eb7252f4ff3a1b483251360e04c'true,
  449.         ['url' => "api.mailjet.com"'version' => 'v4''call' => false]
  450.       );
  451.      
  452.       if($etat != 'archiver')
  453.       {
  454.    
  455.        /* $body = [
  456.         'Text' => $messageSMS,
  457.         'To' => $rdv->getTelephone(),
  458.         'From' => "LLVD",
  459.         ];
  460.         $response = $mj->post(Resources::$SmsSend, ['body' => $body]);
  461.         $response->success();*/
  462.          // Données du message
  463.                /***************************** */
  464.                $data = array(
  465.                 'key' => '0c33c31c02c1e3ef72692c7bec035c96',
  466.                 'destinataires' => $rdv->getTelephone(),
  467.                 'message' => $messageSMS,
  468.                 'expediteur' => 'LLVD',
  469.                 'date' => '',
  470.                 'smslong' => 1
  471.             );
  472.             // Initialisation de cURL avec l'URL à appeler
  473.             $ch curl_init('https://manager.envoyersmspro.com/api/envoyer/sms');
  474.             // Paramètres cURL pour activer le POST et retour de la réponse
  475.             curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
  476.             curl_setopt($chCURLOPT_POST1);
  477.             // Passage des données
  478.             curl_setopt($chCURLOPT_POSTFIELDS,http_build_query($data'''&'));
  479.             // Appel de l'API Envoyer SMS Pro et récupération de la réponse dans la variable $reponse_json
  480.             $reponse_json curl_exec ($ch);
  481.             curl_close ($ch);
  482.             // Conversion JSON en tableau avec json_decode (http://fr2.php.net/manual/fr/function.json-decode.php)
  483.             $reponse_array json_decode($reponse_jsontrue);
  484.             
  485.           
  486.            
  487.             /*************************/
  488.         
  489.         $to $rdv->getEmail();
  490.         $mj = new \Mailjet\Client('9c42ddfa4db6f8f973a32c7087ea2d51',
  491.         'eace5eb7252f4ff3a1b483251360e04c',true,['version' => 'v3.1']);
  492.         $body = [
  493.             'Messages' => [
  494.                 [
  495.                     'From' => [
  496.                         'Email' => "dontreply@llvd-avocats.be",
  497.                         'Name' => "LLVD AVOCATS"
  498.                     ],
  499.                     'To' => [
  500.                         [
  501.                             'Email' => $to,
  502.                             
  503.                         ]
  504.                     ],
  505.                     'Bcc' => [ // 👈 C’est ici qu’on met Jocelyn en copie cachée
  506.                 [
  507.                     'Email' => 'jocelyn@piranha.lu',
  508.                 ]
  509.             ],
  510.                     'Subject' => $subject,
  511.                     'HTMLPart' => $message,
  512.                 ]
  513.             ]
  514.         ];
  515.         $response $mj->post(Resources::$Email, ['body' => $body]);
  516.         $response->success();
  517.     }
  518.        
  519.         if($page == 'liste')
  520.         {
  521.             return $this->redirectToRoute('listeRdvAConfirmer', ['etat'=>$etatRedirect], Response::HTTP_SEE_OTHER);
  522.         }
  523.         else
  524.         {
  525.             return $this->redirectToRoute('calendrier', ['id'=>$this->getUser()->getAvocats()->getId()], Response::HTTP_SEE_OTHER);
  526.         }
  527.       
  528.     }
  529.     
  530. }