src/Controller/HomeController.php line 24

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