src/Controller/HomeController.php line 34

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