src/Controller/HomeController.php line 40

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Config;
  4. use App\Entity\Emails;
  5. use App\Form\AvisType;
  6. use App\Form\ChatType;
  7. use App\Services\Mercure;
  8. use App\Services\CallApiTab;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use App\Services\CallApiServices;
  11. use DateTime;
  12. use Doctrine\DBAL\Driver\IBMDB2\Result;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use Symfony\Component\HttpFoundation\Session\Session;
  16. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  17. class HomeController extends AbstractController
  18. {
  19.     public function __construct(CallApiTab $callApiTab)
  20.     {
  21.         $this->endpoint $callApiTab->endpoint();
  22.     }
  23.     /**
  24.      * @Route("/", name="app_home")
  25.      */
  26.     public function index(): Response
  27.     {
  28.         return $this->render('home/index.html.twig', [
  29.             'controller_name' => 'HomeController',
  30.         ]);
  31.     }
  32.        /**
  33.      * @Route("/etapes-consultation", name="etapes_consultation")
  34.      */
  35.     public function etapesConsultation(): Response
  36.     {
  37.         return $this->render('content/home/etapes_consultation.html.twig');
  38.     }
  39.     /**
  40.      * @Route("/", name="app_home", methods={"GET", "POST"})
  41.      */
  42.     public function getConseiller(CallApiServices $callApiServicesRequest $request): Response
  43.     {
  44.         $user $this->getUser();
  45.         $serviceId $this->getParameter('app.serviceId');
  46.         if ($user) {
  47.             $client $callApiServices->clientProfileCheck($serviceId$user->getClientId());
  48.             $user->setSolde($client['solde']);
  49.         }
  50.         $accountId $this->getParameter('app.accountId');
  51.         $conseillers $callApiServices->getListConseillers($accountId$serviceId);
  52.         $config $callApiServices->configuratationPlateforme($accountId$serviceId);
  53.         array_multisort(
  54.             array_column($conseillers'userServiceId'),
  55.             SORT_DESC,
  56.             $conseillers
  57.         );
  58.         usort($conseillers, fn ($a$b) => [
  59.             [=> 1=> 2=> 3][$a['userState']],
  60.         ] <=> [
  61.             [=> 1=> 2=> 3][$b['userState']],
  62.         ]);
  63.         $configPlateforme = new Config();
  64.         $configPlateforme->setKindOfCredit($config['kindOfCredit']);
  65.         $configPlateforme->setItemsPerPage($config['itemsPerPage']);
  66.         $configPlateforme->setItemsPerRow($config['itemsPerRow']);
  67.         $configPlateforme->setWelcomeCredit($config['welcomeCredit']);
  68.         $configPlateforme->setRecaptchaTab($config['recaptchaTab']);
  69.         $configPlateforme->setPaymentInfos($config['paymentInfos']);
  70.         $configPlateforme->setMail($config['mail']);
  71.         $configPlateforme->setServiceId($serviceId);
  72.         $configPlateforme->setAccountId($accountId);
  73.         $configPlateforme->setMarchand($config['marchand']);
  74.         $session = new Session();
  75.         $session->set('configPlateforme'$configPlateforme);
  76.         return $this->render('home/index.html.twig', [
  77.             'conseillers' => $conseillers,
  78.             'config' => $config,
  79.         ]);
  80.     }
  81.     /**
  82.      * @Route("/consultant/{id}", name="app_consultant", methods={"GET", "POST"})
  83.      */
  84.     public function conseillerEtPlanning(CallApiServices $callApiServicesRequest $request$id): Response
  85.     {
  86.         $serviceId $this->getParameter('app.serviceId');
  87.         $accountId $this->getParameter('app.accountId');
  88.         $conseillerAvis $callApiServices->conseillerAvis($serviceId$id);
  89.         $conseiller $callApiServices->conseillerEtPlanning($id$serviceId);
  90.         if (!isset($conseiller[0])) {
  91.             // le conseiller n'est pas configuré
  92.             return $this->redirectToRoute('app_home');
  93.         }
  94.         $weekdaysShort = ['Lun''Mar''Mer''Jeu''Ven''Sam''Dim'];
  95.         $daysHoursShort = [
  96.             => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  97.             => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  98.             => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  99.             => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  100.             => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  101.             => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  102.             => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  103.             => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  104.             => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  105.             => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  106.             10 => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  107.             11 => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  108.             12 => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  109.             13 => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  110.             14 => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  111.             15 => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  112.             16 => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  113.             17 => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  114.             18 => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  115.             19 => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  116.             20 => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  117.             21 => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  118.             22 => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false],
  119.             23 => ['Lun' => false'Mar' => false'Mer' => false'Jeu' => false'Ven' => false'Sam' => false'Dim' => false]
  120.         ];
  121.         $i 0;
  122.         foreach ($conseiller[0]['planningArray'] as $planing) {
  123.             if ($planing['weekDayNum'] == null) continue;
  124.             $begin[] = explode(':'$planing['begin']);
  125.             $end[] = explode(':'$planing['end']);
  126.             $day[] = $planing['weekDayNum'];
  127.             $hourEnd[] = $end[$i][0];
  128.             $hourBegin[] = $begin[$i][0];
  129.             $minuteEnd[] = $end[$i][1];
  130.             $minuteBegin[] = $begin[$i][1];
  131.             $calcul $hourEnd[$i] -  $hourBegin[$i];
  132.             $h 0;
  133.             $weekday $weekdaysShort[$planing['weekDayNum']];
  134.             while ($calcul $h) {
  135.                 $daysHoursShort[$begin[$i][0] + $h][$weekday] = true;
  136.                 $h++;
  137.             }
  138.             $i++;
  139.         };
  140.         $plan[] = [];
  141.         $ressources = [];
  142.         $planningEventId "";
  143.         foreach ($conseiller[0]['planningArray'] as $userplanning) {
  144.             $extensionCode =  $conseiller[0]['userId'];
  145.             $userPseudo $conseiller[0]['userPseudo'];
  146.             $datePlan explode("T"$userplanning['date']);
  147.             $start $datePlan[0] . "T" $userplanning['begin'];
  148.             $end $datePlan[0] . "T" $userplanning['end'];
  149.             $planningEventId $userplanning['planningListId'];
  150.             switch ($userplanning['weekDayNum']) {
  151.                 case "0":
  152.                     $dayOfWeek "1";
  153.                     break;
  154.                 case "1":
  155.                     $dayOfWeek "2";
  156.                     break;
  157.                 case "2":
  158.                     $dayOfWeek "3";
  159.                     break;
  160.                 case "3":
  161.                     $dayOfWeek "4";
  162.                     break;
  163.                 case "4":
  164.                     $dayOfWeek "5";
  165.                     break;
  166.                 case "5":
  167.                     $dayOfWeek "6";
  168.                     break;
  169.                 case "6":
  170.                     $dayOfWeek "0";
  171.                     break;
  172.                 case null:
  173.                     $dayOfWeek "0";
  174.                     break;
  175.             }
  176.             $plan[] = [
  177.                 "id" => $userplanning['planningListId'],
  178.                 "title" => "Presence",
  179.                 "daysOfWeek" => $dayOfWeek,
  180.                 "weekDayNum" => $userplanning['weekDayNum'],
  181.                 "startTime" => $userplanning['begin'],
  182.                 "endTime" => $userplanning['end'],
  183.                 "userId" => $userplanning['userId'],
  184.                 "userPseudoId" => $userplanning['userPseudoId'],
  185.                 "resourceId" => $userplanning['userPseudoId'],
  186.                 $ressources[] = [
  187.                     "id" => $userplanning['userPseudoId'],
  188.                     "userId" => $userplanning['userId'],
  189.                     "title" =>  $userPseudo
  190.                 ]
  191.             ];
  192.         }
  193.         $newressources = [];
  194.         $ressources json_encode($ressources);
  195.         $date = new DateTime('now');
  196.         $date $date->format('Y-m-d');
  197.         $data json_encode($plan);
  198.         $avisForm $this->createForm(AvisType::class);
  199.         $avisForm->handleRequest($request);
  200.         if ($avisForm->isSubmitted() && $avisForm->isValid()) {
  201.             $avis =  $request->request->get('avis');
  202.             return $this->redirectToRoute('sendAvis', ['id' => $id'message' => $avis['message'], 'note' => $avis['note']]);
  203.         }
  204.         $avisFormMobile $this->createForm(AvisType::class);
  205.         $avisFormMobile->handleRequest($request);
  206.         if ($avisFormMobile->isSubmitted() && $avisFormMobile->isValid()) {
  207.             $avis =  $request->request->get('avis');
  208.             return $this->redirectToRoute('sendAvis', ['id' => $id'message' => $avis['message'], 'note' => $avis['note']]);
  209.         }
  210.         return $this->render('consultant/index.html.twig', [
  211.             'conseiller' => $conseiller,
  212.             'weekdaysShort' => $weekdaysShort,
  213.             'daysHoursShort' => $daysHoursShort,
  214.             'conseillerAvis' => $conseillerAvis,
  215.             'avisForm' => $avisForm->createView(),
  216.             'avisFormMobile' => $avisFormMobile->createView(),
  217.             'planningFormat' => 'HebdomadaireUtilisateur',
  218.             'data' => $data,
  219.             "date" => $date,
  220.             'ressources' => $ressources,
  221.             'planningEventId' => $planningEventId,
  222.         ]);
  223.     }
  224.     /**
  225.      * @Route("/ping", name="ping", methods={"POST"})
  226.      */
  227.     public function ping(Mercure $mercure): Response
  228.     {
  229.         $topic 'https://star-voyance/mail';
  230.         $data = [0];
  231.         $mercure->mercurePost($topic$data);
  232.         return $this->redirectToRoute('app_home');
  233.     }
  234.     /**
  235.      * @Route("/sendAvis/{id}/{message}/{note}", name="sendAvis", methods={"GET", "POST"})
  236.      */
  237.     public function sendAvis(CallApiServices $callApiServiceCallApiTab $callApiTab$id$message$note): Response
  238.     {
  239.         $user $this->getUser();
  240.         $apiToken[] = $user->getApiToken();
  241.         $serviceId $this->getParameter('app.serviceId');
  242.         $accountId $this->getParameter('app.accountId');
  243.         $clientId $user->getClientId();
  244.         $conseiller $callApiService->conseillerEtPlanning($id$serviceId);
  245.         $date = new DateTime('now');
  246.         $sendAvisData = [
  247.             "clientId" => $clientId,
  248.             "serviceId" => $serviceId,
  249.             "complementId" => $id,
  250.             "userPseudoId" => $conseiller[0]['userPseudoId'],
  251.             "datePost" => $date->format(('Y:m:d'))  . " 00:00:00",
  252.             "commentaire" => $message,
  253.             "note" => $note
  254.         ];
  255.         $utilisateurSendAvis $callApiService->clientAvisNoter($apiToken$sendAvisData);
  256.         // $utilisateurSendAvisEndPoint = $this->endpoint['clientAvisNoter'];
  257.         // $utilisateurSendAvisTab = $callApiTab->tab($apiToken, $sendAvisData);
  258.         // $utilisateurSendAvis = $callApiService->postApi($utilisateurSendAvisEndPoint, $utilisateurSendAvisTab);
  259.         return $this->redirectToRoute('app_consultant', ['id' => $id]);
  260.     }
  261.     /**
  262.      * @Route("/consultants", name="app_all", methods={"GET", "POST"})
  263.      */
  264.     public function getAllConseiller(CallApiServices $callApiServicesRequest $request): Response
  265.     {
  266.         $serviceId $this->getParameter('app.serviceId');
  267.         $accountId $this->getParameter('app.accountId');
  268.         $conseillers $callApiServices->getListConseillers($accountId,  $serviceId);
  269.         $config $callApiServices->configuratationPlateforme($accountId,  $serviceId);
  270.         $session $request->getSession();
  271.         $config $session->get('configPlateforme');
  272.         return $this->render('home/allConseiller.html.twig', [
  273.             'conseillers' => $conseillers,
  274.             'config' => $config,
  275.         ]);
  276.     }
  277. }