src/Controller/EvenementController.php line 308

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Compte;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\HttpFoundation\JsonResponse;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use App\Entity\Evenement;
  9. use App\Entity\Prestations;
  10. use App\Entity\Coiffeur;
  11. use App\Entity\Client;
  12. use App\Entity\Logs;
  13. use App\Entity\User;
  14. use Doctrine\Common\Collections\ArrayCollection;
  15. class EvenementController extends AbstractController
  16. {
  17.     const CONFIRMER 20;
  18.     /**
  19.      * @Route("/admin/event/list/{idcompte}/{date}/{type}/{endDate}",
  20.     name="app_event_list",
  21.     defaults = {"type" = 0, "endDate" = null }
  22.     )
  23.      */
  24.     public function listEvenementAction($idcompte$date$type 0$endDate "")
  25.     {
  26.         $this->denyAccessUnlessGranted('ROLE_ADMIN');
  27.         // or add an optional message - seen by developers
  28.         $this->denyAccessUnlessGranted('ROLE_ADMIN'null'User tried to access a page without having ROLE_ADMIN');
  29.         $userID $this->getUser()->getId();
  30.         $repository $this->getDoctrine()->getRepository(Evenement::class);
  31.         $events $repository->findByCompte($idcompte$date$type$endDate);
  32.         return new JsonResponse($events);
  33.     }
  34.     /**
  35.      * @Route("/admin/event/telclient/{id}", name="app_tel_list")
  36.      */
  37.     public function listTelAction($id null)
  38.     {
  39.         $this->denyAccessUnlessGranted('ROLE_ADMIN');
  40.         // or add an optional message - seen by developers
  41.         $this->denyAccessUnlessGranted('ROLE_ADMIN'null'User tried to access a page without having ROLE_ADMIN');
  42.         $userID $this->getUser()->getId();
  43.         $repository $this->getDoctrine()->getRepository(Evenement::class);
  44.         $tels $repository->getAllTels($id);
  45.         return new JsonResponse($tels);
  46.     }
  47.     /**
  48.      * @Route("/admin/event/annuler/{id}", name="app_annuler")
  49.      */
  50.     public function annulerRdvAction($id null)
  51.     {
  52.         $this->denyAccessUnlessGranted('ROLE_ADMIN');
  53.         // or add an optional message - seen by developers
  54.         $this->denyAccessUnlessGranted('ROLE_ADMIN'null'User tried to access a page without having ROLE_ADMIN');
  55.         $userID $this->getUser()->getId();
  56.         $entityManager $this->getDoctrine()->getManager();
  57.         $event $this->getDoctrine()->getRepository(Evenement::class)->find($id);
  58.         $event->setEtat(5);
  59.         $event->setUpdatedAt(new \DateTime());
  60.         $event->setUpdatedBy($userID);
  61.         $entityManager->persist($event);
  62.         $entityManager->flush();
  63.         $this->setLog($event->getId(), "annuler");
  64.         //$this->sendSms($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte(), "annuler");
  65.        // $this->sendMessageWhatsup($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte(), "annuler");
  66.         return new JsonResponse(array(
  67.             'status' => 'OK',
  68.             'code' => 200,
  69.             'events' => array([
  70.                 'id' => $event->getId(),
  71.                 'title' => $event->getEtat(),
  72.                 'etat' => $event->getEtat(),
  73.                 'start' => $event->getDatedebut()->format('Y-m-d H:i:s'),
  74.                 'end' => $event->getDatefin()->format('Y-m-d H:i:s'),
  75.                 'resourceId' => $event->getCoiffeur()->getId(),
  76.                 'nomClient' => $event->getNom(),
  77.                 'tel' => $event->getTel(),
  78.                 'email' => $event->getEmail(),
  79.                 'commentaire' => $event->getCommentaire(),
  80.                 'bgColor' => '#945992',
  81.             ])
  82.         ));
  83.     }
  84.     public function setLog($idEvent$type)
  85.     {
  86.         $userID $this->getUser()->getId();
  87.         $entityManager $this->getDoctrine()->getManager();
  88.         $user $this->getDoctrine()->getRepository(User::class)->find($userID);
  89.         $event $this->getDoctrine()->getRepository(Evenement::class)->findById($idEvent);
  90.         $email $user->getEmail();
  91.         $date date('d-m-Y H:i:s');
  92.         $tel $event['tel'];
  93.         $nom $event['nom'];
  94.         $coiffeur $event['coiffeur_nom'];
  95.         $logs = new Logs();
  96.         $logs->setEvent($idEvent);
  97.         $logs->setUser($userID);
  98.         $logs->setType($type);
  99.         $logs->setCreatedAt(new \DateTime());
  100.         $logs->setMessage("l'utilisateur $email à $type le rendez-vous $idEvent (Nom client : $nom, Tél : $tel)) à $date pour le coiffeur : $coiffeur]");
  101.         $entityManager->persist($logs);
  102.         $entityManager->flush();
  103.     }
  104.     private function sendSms($tel$date$compte null$type null)
  105.     {
  106.         if ($compte->getIsSms() === 0) {
  107.             return;
  108.         }
  109.         $compte strtoupper($compte);
  110.         // Supprimer les espaces
  111.         $telephone str_replace(' '''$tel);
  112.         // Supprimer le préfixe '0' si présent
  113.         $telephone ltrim($telephone'0');
  114.         // Code pays
  115.         $code_pays '212';
  116.         // Numéro de téléphone au format international
  117.         $numero_international $code_pays $telephone;
  118.         $message "Bonjour, c’est Salon ZEN $compte. Votre rendez-vous est confirmé pour $date. Merci! A bientôt.";
  119.         if ($type === "annuler") {
  120.             $message "Bonjour, c’est Salon ZEN $compte. Nous vous informons que votre rendez-vous prévu pour $date a été annulé.";
  121.         }
  122.         $message = (((str_replace(" ""%20"urlencode($message)))));
  123.         // Initialisation de la session cURL
  124.         $ch curl_init();
  125.         $url "https://smartmessage-utilisateur.orange.ma:3007/campaignService/campaigns/";
  126.         $url .= "qs?recipient=$numero_international&msg=$message&user=sendAdmin&pswd=Nice_Look@88&dr=0&msgCategory=4.5&contentType=3.7&sender=SalonZEN&channel=2.1";
  127.         // Configuration des options de la requête
  128.         curl_setopt($chCURLOPT_URL$url); // URL de la requête
  129.         curl_setopt($chCURLOPT_RETURNTRANSFERtrue); // Retourner la réponse dans une variable au lieu de l'afficher directement
  130.         // Exécution de la requête et récupération de la réponse
  131.         $response curl_exec($ch);
  132.         // Vérification des erreurs éventuelles
  133.         if ($response === false) {
  134.             // echo 'Erreur cURL : ' . curl_error($ch);die;
  135.         }
  136.         // Fermeture de la session cURL
  137.         curl_close($ch);
  138.     }
  139.     /**
  140.      * @Route("/admin/event/confirmer/{id}", name="app_confirmer")
  141.      */
  142.     public function confirmerRdvAction($id null)
  143.     {
  144.         $this->denyAccessUnlessGranted('ROLE_ADMIN');
  145.         // or add an optional message - seen by developers
  146.         $this->denyAccessUnlessGranted('ROLE_ADMIN'null'User tried to access a page without having ROLE_ADMIN');
  147.         $userID $this->getUser()->getId();
  148.         $entityManager $this->getDoctrine()->getManager();
  149.         $event $this->getDoctrine()->getRepository(Evenement::class)->find($id);
  150.         $event->setEtat(self::CONFIRMER);
  151.         $event->setUpdatedAt(new \DateTime());
  152.         $event->setUpdatedBy($userID);
  153.         $entityManager->persist($event);
  154.         $entityManager->flush();
  155.         $this->setLog($event->getId(), "confirmer");
  156.         $this->sendMessageWhatsup($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte(), 'confirmer');
  157.         return new JsonResponse(array(
  158.             'status' => 'OK',
  159.             'code' => 200,
  160.             'events' => array([
  161.                 'id' => $event->getId(),
  162.                 'title' => $event->getEtat(),
  163.                 'etat' => $event->getEtat(),
  164.                 'start' => $event->getDatedebut()->format('Y-m-d H:i:s'),
  165.                 'end' => $event->getDatefin()->format('Y-m-d H:i:s'),
  166.                 'resourceId' => $event->getCoiffeur()->getId(),
  167.                 'nomClient' => $event->getNom(),
  168.                 'tel' => $event->getTel(),
  169.                 'email' => $event->getEmail(),
  170.                 'commentaire' => $event->getCommentaire(),
  171.                 'bgColor' => '#945992',
  172.             ])
  173.         ));
  174.     }
  175.     private function sendMessageWhatsup($tel$date$compte null$type null)
  176.     {
  177.         if ($compte->getToken() === null) {
  178.             return;
  179.         }
  180.         // Supprimer les espaces
  181.         $telephone str_replace(' '''$tel);
  182.         // Supprimer le préfixe '0' si présent
  183.         $telephone ltrim($telephone'0');
  184.         // Code pays
  185.         $code_pays '212';
  186.         // Numéro de téléphone au format international
  187.         $numero_international $code_pays $telephone;
  188.         $nameSalon $compte->getNom();
  189.         $token $compte->getToken();
  190.         $message "Bonjour Madame, c’est le $nameSalon. Votre rendez-vous est bien noté pour le $date. Au plaisir de vous accueillir. Nous vous souhaitons une bonne journée ✨";
  191.         if ($type === "annuler") {
  192.             $message "Bonjour Madame, c’est le $nameSalon. Nous vous informons que votre rendez-vous prévu pour le $date a bien été annulé. Nous vous souhaitons une bonne journée ✨";
  193.         }
  194.         if ($type === "update") {
  195.             $message "Bonjour Madame, c’est le $nameSalon. Nous vous informons que la date de votre rendez-vous a bien été modifiée. La nouvelle date de votre rendez-vous est prévue pour le $date. Au plaisir de vous accueillir. Nous vous souhaitons une bonne journée ✨";
  196.         }
  197.         if ($type === "confirmer") {
  198.             $message "Bonjour Madame, c’est le $nameSalon. Votre rendez-vous est bien confirmé pour le $date. Au plaisir de vous accueillir. Nous vous souhaitons une bonne journée ✨";
  199.         }
  200.         $curl curl_init();
  201.         curl_setopt_array($curl, array(
  202.             CURLOPT_URL => 'http://167.114.3.237:9001/send',
  203.             CURLOPT_RETURNTRANSFER => true,
  204.             CURLOPT_ENCODING => '',
  205.             CURLOPT_MAXREDIRS => 10,
  206.             CURLOPT_TIMEOUT => 0,
  207.             CURLOPT_FOLLOWLOCATION => true,
  208.             CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  209.             CURLOPT_CUSTOMREQUEST => 'POST',
  210.             CURLOPT_POSTFIELDS => '{
  211.             "number" :  ' $token ',
  212.             "type" : "chat",
  213.             "message" :  "' $message '",
  214.             "to" : ' $numero_international '
  215.         }',
  216.             CURLOPT_HTTPHEADER => array(
  217.                 'Content-Type: application/json'
  218.             ),
  219.         ));
  220.         $response curl_exec($curl);
  221.         curl_close($curl);
  222.     }
  223.     /**
  224.      * @Route("/admin/event/listclient/{id}", name="app_client_list")
  225.      */
  226.     public function listClientAction($id null)
  227.     {
  228.         $this->denyAccessUnlessGranted('ROLE_ADMIN');
  229.         // or add an optional message - seen by developers
  230.         $this->denyAccessUnlessGranted('ROLE_ADMIN'null'User tried to access a page without having ROLE_ADMIN');
  231.         if (empty($id) || is_null($id)) {
  232.             return new JsonResponse([]);
  233.         }
  234.         $userID $this->getUser()->getId();
  235.         $repository $this->getDoctrine()->getRepository(Client::class);
  236.         $clients $repository->getAllClientsArray($id);
  237.         return new JsonResponse($clients);
  238.     }
  239.     /**
  240.      * @Route("/admin/event/allClient/{page}", name="app_client_all")
  241.      */
  242.     public function allClientActon($page 1)
  243.     {
  244.         $this->denyAccessUnlessGranted('ROLE_ADMIN');
  245.         // or add an optional message - seen by developers
  246.         $this->denyAccessUnlessGranted('ROLE_ADMIN'null'User tried to access a page without having ROLE_ADMIN');
  247.         if (empty($page) || is_null($page)) {
  248.             return new JsonResponse([]);
  249.         }
  250.         $repository $this->getDoctrine()->getRepository(Client::class);
  251.         $clients $repository->getAllClientDataArray($page);
  252.         $count $repository->getCountClient();
  253.         $data = [
  254.             'data' => $clients,
  255.             'count' => $count
  256.         ];
  257.         return new JsonResponse(
  258.             $data
  259.         );
  260.     }
  261.     /**
  262.      * @Route("/admin/event/byid", name="app_byid_list")
  263.      */
  264.     public function byIdEvenementAction(Request $request)
  265.     {
  266.         $this->denyAccessUnlessGranted('ROLE_ADMIN');
  267.         // or add an optional message - seen by developers
  268.         $this->denyAccessUnlessGranted('ROLE_ADMIN'null'User tried to access a page without having ROLE_ADMIN');
  269.         $eventData $request->getContent();
  270.         $userID $this->getUser()->getId();
  271.         if ($eventData == "") {
  272.             return new JsonResponse(null);
  273.         }
  274.         $posts json_decode($eventData);
  275.         $eventId $posts->id;
  276.         $repository $this->getDoctrine()->getRepository(Evenement::class);
  277.         $event $repository->findById($eventId);
  278.         $repository $this->getDoctrine()->getRepository(Client::class);
  279.         $client $repository->findByOneByEvenentId($event['event_id']);
  280.         $logs = array();
  281.         $repositoryLog $this->getDoctrine()->getRepository(Logs::class);
  282.         $logs $repositoryLog->findByEvent($eventId);
  283.         if ($logs == null) {
  284.             $logs = array();
  285.         }
  286.         $event['nom'] = $client $client->getNom() : '';
  287.         $event['tel'] = $client $client->getTelephone() : '';
  288.         $event['email'] = $client $client->getEmail() : '';
  289.         return new JsonResponse(array_merge($event, array('logs' => $logs)));
  290.     }
  291.     /**
  292.      * @Route("/admin/event/logs/{id}", name="app_logs_list")
  293.      */
  294.     public function byIdEvenementLogAction(Request $request$id)
  295.     {
  296.         $this->denyAccessUnlessGranted('ROLE_ADMIN');
  297.         // or add an optional message - seen by developers
  298.         $this->denyAccessUnlessGranted('ROLE_ADMIN'null'User tried to access a page without having ROLE_ADMIN');
  299.         $eventData $request->getContent();
  300.         $userID $this->getUser()->getId();
  301.         $logs = array();
  302.         $repositoryLog $this->getDoctrine()->getRepository(Logs::class);
  303.         $logs $repositoryLog->findByEvent($id);
  304.         if ($logs == null) {
  305.             $logs = array();
  306.         }
  307.         return new JsonResponse(array('logs' => $logs));
  308.     }
  309.     /**
  310.      * @Route("/admin/event/add", name="app_event_add")
  311.      */
  312.     public function addEvenementAction(Request $request)
  313.     {
  314.         $this->denyAccessUnlessGranted('ROLE_ADMIN');
  315.         // or add an optional message - seen by developers
  316.         $this->denyAccessUnlessGranted('ROLE_ADMIN'null'User tried to access a page without having ROLE_ADMIN');
  317.         $eventData $request->getContent();
  318.         $userID $this->getUser()->getId();
  319.         if ($eventData == "") {
  320.             return new JsonResponse(null);
  321.         }
  322.         $posts json_decode($eventData);
  323.         $data $posts->formValues;
  324.         $startDate $posts->start;
  325.         $endDate $posts->end;
  326.         $coiffeur $posts->coiffeur;
  327.         $tel $data->tel_client;
  328.         $nom_client $data->nom_client;
  329.         $email_client $data->email_client;
  330.         $commentaire $data->commentaire;
  331.         $entityManager $this->getDoctrine()->getManager();
  332.         $coiffeur $this->getDoctrine()->getRepository(Coiffeur::class)->find($coiffeur);
  333.         $_endDateFormated null;
  334.         $returnArray = [];
  335.         if (isset($data->prestation)) {
  336.             foreach ($data->prestation as $key => $prestationId) {
  337.                 $event = new Evenement();
  338.                 $prestation $this->getDoctrine()->getRepository(Prestations::class)->find($prestationId);
  339.                 $endDate strtotime($startDate ' + ' $prestation->getDuree() . ' minute');
  340.                 $newEndDate date('Y-m-d H:i:s'$endDate);
  341.                 $event->setCoiffeur($coiffeur);
  342.                 if ($_endDateFormated === null) {
  343.                     $event->setDatedebut(\DateTime::createFromFormat('Y-m-d H:i:s'$startDate));
  344.                     $event->setDatefin(\DateTime::createFromFormat('Y-m-d H:i:s'$newEndDate));
  345.                 } else {
  346.                     $endDate strtotime($_endDateFormated->format('Y-m-d H:i:s') . ' + ' $prestation->getDuree() . ' minute');
  347.                     $newEndDate date('Y-m-d H:i:s'$endDate);
  348.                     $event->setDatedebut(\DateTime::createFromFormat('Y-m-d H:i:s'$_endDateFormated->format('Y-m-d H:i:s')));
  349.                     $event->setDatefin(\DateTime::createFromFormat('Y-m-d H:i:s'$newEndDate));
  350.                 }
  351.                 $event->setUser($userID);
  352.                 $event->setPrestation($prestation);
  353.                 $event->setEtat(1);
  354.                 $event->setEmail($email_client);
  355.                 $event->setCommentaire($commentaire);
  356.                 $event->setTel($tel);
  357.                 $event->setNom($nom_client);
  358.                 $event->setCeatedAt(new \DateTime());
  359.                 $event->setCreatedBy($userID);
  360.                 $entityManager->persist($event);
  361.                 $entityManager->flush();
  362.                 $_endDateFormated $event->getDatefin();
  363.                 $returnArray[] = array(
  364.                     'id' => $event->getId(),
  365.                     'title' => $event->getEtat(),
  366.                     'start' => $event->getDatedebut()->format('Y-m-d H:i:s'),
  367.                     'end' => $event->getDatefin()->format('Y-m-d H:i:s'),
  368.                     'resourceId' => $event->getCoiffeur()->getId(),
  369.                     'nomClient' => $event->getNom(),
  370.                     'tel' => $event->getTel(),
  371.                     'email' => $event->getEmail(),
  372.                     'commentaire' => $event->getCommentaire(),
  373.                     'bgColor' => '#945992',
  374.                 );
  375.             }
  376.            // $this->sendSms($tel, $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte());
  377.             $this->sendMessageWhatsup($tel$event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte());
  378.             return new JsonResponse(array('status' => 'OK''code' => 200'events' => $returnArray));
  379.         }
  380.         $event = new Evenement();
  381.         $event->setCoiffeur($coiffeur);
  382.         $event->setDatedebut(\DateTime::createFromFormat('Y-m-d H:i:s'date('Y-m-d H:i:s'strtotime($startDate))));
  383.         $event->setDatefin(\DateTime::createFromFormat('Y-m-d H:i:s'date('Y-m-d H:i:s'strtotime($endDate))));
  384.         $event->setUser($userID);
  385.         $event->setPrestation(null);
  386.         $event->setEtat(1);
  387.         $event->setEmail($email_client);
  388.         $event->setCommentaire($commentaire);
  389.         $event->setTel($tel);
  390.         $event->setNom($nom_client);
  391.         $entityManager->persist($event);
  392.         $entityManager->flush();
  393.         //$this->sendSms($tel, $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte());
  394.         return new JsonResponse(array(
  395.             'status' => 'OK',
  396.             'code' => 200,
  397.             'events' => array([
  398.                 'id' => $event->getId(),
  399.                 'title' => $event->getEtat(),
  400.                 'etat' => $event->getEtat(),
  401.                 'start' => $event->getDatedebut()->format('Y-m-d H:i:s'),
  402.                 'end' => $event->getDatefin()->format('Y-m-d H:i:s'),
  403.                 'resourceId' => $event->getCoiffeur()->getId(),
  404.                 'nomClient' => $event->getNom(),
  405.                 'tel' => $event->getTel(),
  406.                 'email' => $event->getEmail(),
  407.                 'commentaire' => $event->getCommentaire(),
  408.                 'bgColor' => '#945992',
  409.             ])
  410.         ));
  411.     }
  412.     /**
  413.      * @Route("/admin/event/addCustom", name="app_event_addCustom")
  414.      */
  415.     public function addCustomEvenementAction(Request $request)
  416.     {
  417.         $this->denyAccessUnlessGranted('ROLE_ADMIN');
  418.         // or add an optional message - seen by developers
  419.         $this->denyAccessUnlessGranted('ROLE_ADMIN'null'User tried to access a page without having ROLE_ADMIN');
  420.         $eventData $request->getContent();
  421.         $userID $this->getUser()->getId();
  422.         if ($eventData == "") {
  423.             return new JsonResponse(null);
  424.         }
  425.         $posts json_decode($eventData);
  426.         $data $posts->formValues;
  427.         $startDate $posts->start;
  428.         $endDate $posts->end;
  429.         $coiffeur = isset($data->RDV_coiffeurs) ? $data->RDV_coiffeurs null;
  430.         $startDate strtotime($startDate);
  431.         $startDate date('Y-m-d H:i:s'$startDate);
  432.         $endDate strtotime($endDate);
  433.         $endDate date('Y-m-d H:i:s'$endDate);
  434.         $tel = isset($data->RDV_tel_client) ? $data->RDV_tel_client '';
  435.         $tel explode("("$tel);
  436.         $tel $tel[0];
  437.         $nom_client = isset($data->RDV_nom_client) ? $data->RDV_nom_client '';
  438.         $nom_client explode("("$nom_client);
  439.         $nom_client $nom_client[0];
  440.         $email_client = isset($data->RDV_email_client) ? $data->RDV_email_client '';
  441.         $commentaire = isset($data->RDV_commentaire) ? $data->RDV_commentaire '';
  442.         $entityManager $this->getDoctrine()->getManager();
  443.         $coiffeur $this->getDoctrine()->getRepository(Coiffeur::class)->find($coiffeur);
  444.         $returnArray = [];
  445.         if (isset($data->RDV_prestation) && count($data->RDV_prestation) >= 1) {
  446.             foreach ($data->RDV_prestation as $key => $prestationId) {
  447.                 $client $this->getDoctrine()->getRepository(Client::class)
  448.                     ->findByOneByNomAndEmail($nom_client$tel);
  449.                 if (!$client) {
  450.                     $client = new Client();
  451.                     $client->setNom($nom_client);
  452.                     $client->setTelephone($tel);
  453.                     $client->setEmail($nom_client);
  454.                     $client->setCreateAt(new \DateTime());
  455.                     $client->setUpdateat(new \DateTime());
  456.                     $entityManager->persist($client);
  457.                 }
  458.                 $event = new Evenement();
  459.                 $prestation $this->getDoctrine()->getRepository(Prestations::class)->find($prestationId);
  460.                 $event->setCoiffeur($coiffeur);
  461.                 $event->setDatedebut(\DateTime::createFromFormat('Y-m-d H:i:s'date('Y-m-d H:i:s'strtotime($startDate))));
  462.                 $event->setDatefin(\DateTime::createFromFormat('Y-m-d H:i:s'date('Y-m-d H:i:s'strtotime($endDate))));
  463.                 $event->setUser($userID);
  464.                 $event->setPrestation($prestation);
  465.                 $event->setEtat(1);
  466.                 $event->setEmail($email_client);
  467.                 $event->setCommentaire($commentaire);
  468.                 $event->setTel($tel);
  469.                 $event->setNom($nom_client);
  470.                 $event->setClient($client);
  471.                 $event->setCeatedAt(new \DateTime());
  472.                 $event->setCreatedBy($userID);
  473.                 $entityManager->persist($event);
  474.                 $entityManager->flush();
  475.                 $this->setLog($event->getId(), "ajouter");
  476.                 $returnArray[] = array(
  477.                     'id' => $event->getId(),
  478.                     'title' => $event->getEtat(),
  479.                     'start' => $event->getDatedebut()->format('Y-m-d H:i:s'),
  480.                     'end' => $event->getDatefin()->format('Y-m-d H:i:s'),
  481.                     'resourceId' => $event->getCoiffeur()->getId(),
  482.                     'nomClient' => $event->getNom(),
  483.                     'tel' => $event->getTel(),
  484.                     'email' => $event->getEmail(),
  485.                     'commentaire' => $event->getCommentaire(),
  486.                     'bgColor' => '#945992',
  487.                 );
  488.             }
  489.             //$this->sendSms($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte());
  490.             $this->sendMessageWhatsup($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte());
  491.             return new JsonResponse(array('status' => 'OK''code' => 200'events' => $returnArray));
  492.         }
  493.         $client $this->getDoctrine()->getRepository(Client::class)
  494.             ->findByOneByNomAndEmail($nom_client$tel);
  495.         if (!$client) {
  496.             $client = new Client();
  497.             $client->setNom($nom_client);
  498.             $client->setTelephone($tel);
  499.             $client->setEmail($nom_client);
  500.             $client->setCreateAt(new \DateTime());
  501.             $client->setUpdateat(new \DateTime());
  502.             //$client->setCreatedBy( new \DateTime());
  503.             $entityManager->persist($client);
  504.         }
  505.         $event = new Evenement();
  506.         $event->setCoiffeur($coiffeur);
  507.         $event->setDatedebut(\DateTime::createFromFormat('Y-m-d H:i:s'date('Y-m-d H:i:s'strtotime($startDate))));
  508.         $event->setDatefin(\DateTime::createFromFormat('Y-m-d H:i:s'date('Y-m-d H:i:s'strtotime($endDate))));
  509.         $event->setUser($userID);
  510.         $event->setPrestation(null);
  511.         $event->setEtat(1);
  512.         $event->setTel($tel); // not used
  513.         $event->setNom($nom_client); // not used
  514.         $event->setCommentaire($commentaire);
  515.         $event->setClient($client);
  516.         $event->setCeatedAt(new \DateTime());
  517.         $event->setCreatedBy($userID);
  518.         $entityManager->persist($event);
  519.         $entityManager->flush();
  520.         $this->setLog($event->getId(), "ajouter");
  521.         //$this->sendSms($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $coiffeur->getCompte());
  522.         $this->sendMessageWhatsup($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte());
  523.         return new JsonResponse(array(
  524.             'status' => 'OK',
  525.             'code' => 200,
  526.             'events' => array([
  527.                 'id' => $event->getId(),
  528.                 'title' => $event->getEtat(),
  529.                 'etat' => $event->getEtat(),
  530.                 'start' => $event->getDatedebut()->format('Y-m-d H:i:s'),
  531.                 'end' => $event->getDatefin()->format('Y-m-d H:i:s'),
  532.                 'resourceId' => $event->getCoiffeur()->getId(),
  533.                 'nomClient' => $event->getNom(),
  534.                 'tel' => $event->getTel(),
  535.                 'email' => $event->getEmail(),
  536.                 'commentaire' => $event->getCommentaire(),
  537.                 'bgColor' => '#945992',
  538.             ])
  539.         ));
  540.     }
  541.     /**
  542.      * @Route("/admin/event/update", name="app_event_update")
  543.      */
  544.     public function updateEvenementAction(Request $request)
  545.     {
  546.         $this->denyAccessUnlessGranted('ROLE_ADMIN');
  547.         // or add an optional message - seen by developers
  548.         $this->denyAccessUnlessGranted('ROLE_ADMIN'null'User tried to access a page without having ROLE_ADMIN');
  549.         $userID $this->getUser()->getId();
  550.         $eventData $request->getContent();
  551.         $posts json_decode($eventData);
  552.         $idEvent $posts->id;
  553.         $start $posts->start;
  554.         $end $posts->end;
  555.         $entityManager $this->getDoctrine()->getManager();
  556.         $event $this->getDoctrine()->getRepository(Evenement::class)->find($idEvent);
  557. //        $event->setDatedebut(\DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($start))));
  558. //        $event->setDatefin(\DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($end))));
  559.         $event->setDatedebut(\DateTime::createFromFormat('Y-m-d H:i:s'date('Y-m-d H:i:s'strtotime($start))));
  560.         $event->setDateFin(\DateTime::createFromFormat('Y-m-d H:i:s'date('Y-m-d H:i:s'strtotime($end))));
  561.         if (isset($posts->resourceId)) {
  562.             $coiffeur $this->getDoctrine()->getRepository(Coiffeur::class)->find($posts->resourceId);
  563.             $event->setCoiffeur($coiffeur);
  564.         }
  565.         $event->setUpdatedAt(new \DateTime());
  566.         $event->setUpdatedBy($userID);
  567.         $entityManager->persist($event);
  568.         $entityManager->flush();
  569.        // $this->sendMessageWhatsup($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte(), "update");
  570.         return new JsonResponse(array(
  571.             'status' => 'OK',
  572.             'code' => 200,
  573.             'events' => array(
  574.                 'id' => $event->getId(),
  575.                 'title' => $event->getEtat(),
  576.                 'etat' => $event->getEtat(),
  577.                 'start' => $event->getDatedebut()->format('Y-m-d H:i:s'),
  578.                 'end' => $event->getDatefin()->format('Y-m-d H:i:s'),
  579.                 'resourceId' => $event->getCoiffeur()->getId(),
  580.                 'nomClient' => $event->getNom(),
  581.                 'tel' => $event->getTel(),
  582.                 'email' => $event->getEmail(),
  583.                 'commentaire' => $event->getCommentaire(),
  584.                 'bgColor' => '#945992',
  585.             )
  586.         ));
  587.     }
  588.     /**
  589.      * @Route("/admin/event/updateinfo", name="app_eventinfo_update")
  590.      */
  591.     public function updateEvenementInfoAction(Request $request)
  592.     {
  593.         $this->denyAccessUnlessGranted('ROLE_ADMIN');
  594.         // or add an optional message - seen by developers
  595.         $this->denyAccessUnlessGranted('ROLE_ADMIN'null'User tried to access a page without having ROLE_ADMIN');
  596.         $eventData $request->getContent();
  597.         $posts json_decode($eventData);
  598.         $data $posts->formValues;
  599.         $idEvent $posts->id;
  600.         $start $data->date_debut;
  601.         $end $data->date_fin;
  602.         $entityManager $this->getDoctrine()->getManager();
  603.         $event $this->getDoctrine()->getRepository(Evenement::class)->find($idEvent);
  604.         /* @var $event Evenement */
  605.         $event->setDatedebut(\DateTime::createFromFormat('Y-m-d H:i:s'date('Y-m-d H:i:s'strtotime($start) + 3600)));
  606.         $event->setDateFin(\DateTime::createFromFormat('Y-m-d H:i:s'date('Y-m-d H:i:s'strtotime($end) + 3600)));
  607.         //$event->setDatedebut(\DateTime::createFromFormat( 'Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($start) )));
  608.         //$event->setDateFin(\DateTime::createFromFormat( 'Y-m-d H:i:s', date('Y-m-d H:i:s', strtotime($end)  )));
  609.         $event->setCommentaire($data->commentaire);
  610.         $client $this->getDoctrine()->getRepository(Client::class)
  611.             ->findByOneByNomAndEmail($data->nom_client$data->tel_client);
  612.         if (!$client) {
  613.             $client = new Client();
  614.             $client->setNom($data->nom_client);
  615.             $client->setTelephone($data->tel_client);
  616.             $client->setEmail($data->email_client ?? '');
  617.             $client->setCreateAt(new \DateTime());
  618.             $client->setUpdateat(new \DateTime());
  619.             $entityManager->persist($client);
  620.         }
  621.         $event->setTel($data->tel_client);
  622.         $event->setEmail($data->email_client ?? '');
  623.         $event->setNom($data->nom_client);
  624.         $coiffeur $this->getDoctrine()->getRepository(Coiffeur::class)->find($data->coiffeur);
  625.         $event->setCoiffeur($coiffeur);
  626.         $event->setClient($client);
  627.         $event->setEtat($data->reporter == true 1);
  628.         $entityManager->persist($event);
  629.         $this->setLog($idEvent"modifié");
  630.         $entityManager->flush();
  631.         //$this->sendSms($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte(), "update");
  632.         //$this->sendMessageWhatsup($event->getTel(), $event->getDatedebut()->format('d-m-Y à H:i'), $event->getCoiffeur()->getCompte(), "update");
  633.         return new JsonResponse(array(
  634.             'status' => 'OK',
  635.             'code' => 200,
  636.             'events' => array([
  637.                 'id' => $event->getId(),
  638.                 'title' => $event->getEtat(),
  639.                 'etat' => $event->getEtat(),
  640.                 'start' => $event->getDatedebut()->format('Y-m-d H:i:s'),
  641.                 'end' => $event->getDatefin()->format('Y-m-d H:i:s'),
  642.                 'resourceId' => $event->getCoiffeur()->getId(),
  643.                 'nomClient' => $event->getNom(),
  644.                 'tel' => $event->getTel(),
  645.                 'email' => $event->getEmail(),
  646.                 'commentaire' => $event->getCommentaire(),
  647.                 'bgColor' => '#945992',
  648.             ])
  649.         ));
  650.     }
  651.     /**
  652.      * @Route("/admin/event/copy", name="app_eventinfo_copy")
  653.      */
  654.     public function copyEvenementInfoAction(Request $request)
  655.     {
  656.         $this->denyAccessUnlessGranted('ROLE_ADMIN');
  657.         // or add an optional message - seen by developers
  658.         $this->denyAccessUnlessGranted('ROLE_ADMIN'null'User tried to access a page without having ROLE_ADMIN');
  659.         $eventData $request->getContent();
  660.         $data json_decode($eventData);
  661.         $entityManager $this->getDoctrine()->getManager();
  662.         /* @var $event Evenement */
  663.         $event $this->getDoctrine()->getRepository(Evenement::class)->find($data->id);
  664.         if ($event) {
  665.             // Use Doctrine's clone method to clone the entity (shallow copy)
  666.             $event2 = clone $event;
  667.             $event2->setUser($event->getUser());
  668.             $event2->setClient($event->getClient());
  669.             $event2->setPrestation($event->getPrestation());
  670.             $event2->setCoiffeur($event->getCoiffeur());
  671.             // Persist the new entity if needed
  672.             $entityManager->persist($event2);
  673.             $entityManager->flush();
  674.         }
  675.         return new JsonResponse(array(
  676.             'status' => 'OK',
  677.             'code' => 200,
  678.             'events' => array([
  679.                 'id' => $event2->getId(),
  680.                 'title' => $event2->getEtat(),
  681.                 'etat' => $event2->getEtat(),
  682.                 'start' => $event2->getDatedebut()->format('Y-m-d H:i:s'),
  683.                 'end' => $event2->getDatefin()->format('Y-m-d H:i:s'),
  684.                 'resourceId' => $event2->getCoiffeur()->getId(),
  685.                 'nomClient' => $event2->getNom(),
  686.                 'tel' => $event2->getTel(),
  687.                 'email' => $event2->getEmail(),
  688.                 'commentaire' => $event2->getCommentaire(),
  689.                 'bgColor' => '#945992',
  690.             ])
  691.         ));
  692.     }
  693.     /**
  694.      * @Route("/admin/event/remove", name="app_event_remove")
  695.      */
  696.     public function removeEvenementAction(Request $request)
  697.     {
  698.         $this->denyAccessUnlessGranted('ROLE_ADMIN');
  699.         // or add an optional message - seen by developers
  700.         $this->denyAccessUnlessGranted('ROLE_ADMIN'null'User tried to access a page without having ROLE_ADMIN');
  701.         $eventData $request->getContent();
  702.         $userID $this->getUser()->getId();
  703.         $posts json_decode($eventData);
  704.         $idEvent $posts->id;
  705.         $entityManager $this->getDoctrine()->getManager();
  706.         $event $this->getDoctrine()->getRepository(Evenement::class)->find($idEvent);
  707.         if ($event->getToRemove() == '') {
  708.             $event->setSoftdelete("1");
  709.             $event->setDeletedby($userID);
  710.             //$entityManager->remove($event);
  711.             $entityManager $this->getDoctrine()->getManager();
  712.             $user $this->getDoctrine()->getRepository(User::class)->find($userID);
  713.             $this->setLog($idEvent"supprimer");
  714.             $entityManager->persist($event);
  715.             $entityManager->flush();
  716.         } else {
  717.             $events $this->getDoctrine()->getRepository(Evenement::class)->findBy(
  718.                 ['toRemove' => $event->getToRemove(), 'coiffeur' => $event->getCoiffeur()]
  719.             );
  720.             foreach ($events as $event) {
  721.                 //$entityManager->remove($event);
  722.                 $event->setSoftdelete("1");
  723.                 $event->setDeletedby($userID);
  724.                 $entityManager->persist($event);
  725.             }
  726.             $entityManager->flush();
  727.         }
  728.         return new JsonResponse(array(
  729.             'status' => 'OK',
  730.             'code' => 200,
  731.             'events' => array(
  732.                 'id' => $event->getId(),
  733.                 'title' => $event->getEtat(),
  734.                 'etat' => $event->getEtat(),
  735.                 'start' => $event->getDatedebut()->format('Y-m-d H:i:s'),
  736.                 'end' => $event->getDatefin()->format('Y-m-d H:i:s'),
  737.                 'resourceId' => $event->getCoiffeur()->getId(),
  738.                 'nomClient' => $event->getNom(),
  739.                 'tel' => $event->getTel(),
  740.                 'email' => $event->getEmail(),
  741.                 'commentaire' => $event->getCommentaire(),
  742.                 'bgColor' => '#945992',
  743.             )
  744.         ));
  745.     }
  746.     /**
  747.      * @Route("/admin/event/freedays", name="days")
  748.      */
  749.     public function freedaysAction(Request $request)
  750.     {
  751.         $this->denyAccessUnlessGranted('ROLE_ADMIN');
  752.         // or add an optional message - seen by developers
  753.         $this->denyAccessUnlessGranted('ROLE_ADMIN'null'User tried to access a page without having ROLE_ADMIN');
  754.         $userID $this->getUser()->getId();
  755.         $eventData $request->getContent();
  756.         $posts json_decode($eventData);
  757.         $data $posts->formValues;
  758.         $days = [=> 'lundi'=> 'mardi'=> 'mercredi'=> 'jeudi',
  759.             => 'vendredi'=> 'samedi'=> 'dimanche'];
  760.         ///var_dump($data->jours);die;
  761.         $_days array_intersect($days$data->jours);
  762.         foreach ($data->coiffeurs as $coiffeur) {
  763.             $startDate $posts->startDate;
  764.             $endDate $posts->endDate;
  765.             $datesToInsert = [];
  766.             $rrules time();
  767.             foreach ($_days as $key => $value) {
  768.                 for ($i strtotime($startDate); $i <= strtotime($endDate); $i strtotime('+1 day'$i)) {
  769.                     if (date('N'$i) == $key) {
  770.                         $start str_replace(":"""str_replace("-"""$startDate));
  771.                         $end str_replace(":"""str_replace("-"""$endDate));
  772.                         $start_formated date('Y-m-d'$i) . " " date('H:i:s'strtotime($startDate));
  773.                         $end_formated date('Y-m-d'$i) . " " date('H:i:s'strtotime($endDate));
  774.                         $entityManager $this->getDoctrine()->getManager();
  775.                         $event = new Evenement();
  776.                         $coiffeur $this->getDoctrine()->getRepository(Coiffeur::class)->find($coiffeur);
  777.                         $dateDebutPlusHour = \DateTime::createFromFormat('Y-m-d H:i:s'date('Y-m-d H:i:s'strtotime($start_formated)));
  778.                         $event->setDatedebut($dateDebutPlusHour);
  779.                         $event->setDatefin(\DateTime::createFromFormat('Y-m-d H:i:s'date('Y-m-d H:i:s'strtotime($end_formated))));
  780.                         $event->setToRemove($rrules);
  781.                         $event->setCoiffeur($coiffeur);
  782.                         $event->setUser($userID);
  783.                         $event->setPrestation(null);
  784.                         $event->setEtat(2);
  785.                         $event->setEmail("");
  786.                         $event->setCommentaire("");
  787.                         $event->setTel("");
  788.                         $event->setNom("");
  789.                         $entityManager->persist($event);
  790.                         $entityManager->flush();
  791.                     }
  792.                 }
  793.             }
  794.         }
  795.         return new JsonResponse(array(
  796.             'status' => 'OK',
  797.             'code' => 200
  798.         ));
  799.     }
  800. }