src/Controller/MainController.php line 38

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\RedirectResponse;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\JsonResponse;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  10. use Doctrine\Persistence\ManagerRegistry;
  11. use App\Service\Utilities;
  12. use App\Entity\Main\Project;
  13. use App\Entity\Selfoods\SelfoodsOrders;
  14. use App\Entity\Giro\GiroOrders;
  15. use App\Entity\GiroLogistica\GiroLogisticaOrders;
  16. class MainController extends AbstractController
  17. {
  18.     private $logWhatsappRepositoryList;
  19.     public function __construct(){
  20.         $this->logWhatsappRepositoryList = array(
  21.             "tridenia" => TrideniaLogWhatsapp::class,
  22.             "trideniapro" => TrideniaProLogWhatsapp::class,
  23.             "maset" => MasetLogWhatsapp::class
  24.         );
  25.     }
  26.     /**
  27.      * @Route("/", name="main_page", methods={"GET"})
  28.      * 
  29.      */
  30.     public function mainPage(Request $requestUtilities $utilitiesManagerRegistry $doctrine): Response
  31.     {
  32.         $user $this->getUser();
  33.         if (!$user) {
  34.             return $this->redirectToRoute('app_login');
  35.         }
  36.         $em $doctrine->getManager();
  37.         $projectsRawRepository $em->getRepository(Project::class);
  38.         $isAdmin in_array("ROLE_ADMIN",$user->getRoles());
  39.         if($isAdmin){
  40.             $projectsRaw $projectsRawRepository->findBy(array("status" => 1));
  41.         }else{
  42.             $projectsRaw $projectsRawRepository->findBy(array("company" => $user->getCompany()->getId(), "status" => 1));
  43.         }
  44.         if(!$isAdmin && count($projectsRaw)==1)
  45.         {
  46.             return $this->redirectToRoute$projectsRaw[0]->getAlias() . '_dashboard' );
  47.         } 
  48.         $start_date date("Y-m-01");
  49.         $end_date date("Y-m-d" ,strtotime("-1 day"strtotime(date("Y-m-01" ,strtotime("+1 month")))));
  50.         
  51.         $projects = array();
  52.         foreach($projectsRaw as $pr){
  53.             $projectInfo $projectAdminInfo = array();
  54.             if($pr->getType()->getSlug() == "external"){
  55.                 /**
  56.                  * DEJADO ESTE IF POR SI ALGUN DIA DEBE CONTROLARSE UN PROYECTO DE TIPO EXTERNAL 
  57.                  * Y SE DEBEN COGER AQUÍ INFORMACIÓN PARA EL MAIN
  58.                  */
  59.             }else{
  60.                 $emProject $doctrine->getManager($pr->getAlias());
  61.                 switch ($pr->getAlias())
  62.                 {
  63.                     case "selfoods":
  64.                         $filters = [ "start_date" => date("Y-m") . "-01""end_date" => date("Y-m-d") ];
  65.                         $res $emProject->getRepository(SelfoodsOrders::class)->getOrdersInfo$emProject$filters );
  66.     
  67.                         $projectInfo["total_orders"] = $res["totals"]["total_orders"];
  68.                         $projectInfo["total_amount"] = $res["totals"]["total_amount"];
  69.                         break;
  70.                     case "giro":
  71.                         $filters = [ "start_date" => date("Y-m") . "-01""end_date" => date("Y-m-d") ];
  72.                         $res $emProject->getRepository(GiroOrders::class)->getOrdersInfo$emProject$filters );
  73.     
  74.                         $projectInfo["total_orders"] = $res["orders"]["totals"]["total_orders"];
  75.                         $projectInfo["total_amount"] = $res["orders"]["totals"]["total_amount"];
  76.                         break;
  77.                     case "logistica_girand":
  78.                         $filters = [ "start_date" => date("Y-m") . "-01""end_date" => date("Y-m-d") ];
  79.                         $res $emProject->getRepository(GiroLogisticaOrders::class)->getOrdersInfo$emProject$filters );
  80.     
  81.                         $projectInfo["total_orders"] = $res["orders"]["totals"]["total_orders"];
  82.                         $projectInfo["total_amount"] = $res["orders"]["totals"]["total_amount"];
  83.                         break;
  84.                             
  85.                     default:
  86.                 }
  87.                 if(!isset($projects[$pr->getCompany()->getName()])) $projects[$pr->getCompany()->getName()] = array();
  88.                 $projects[$pr->getCompany()->getName()][] = array(
  89.                     "id" => $pr->getId(),
  90.                     "name" => $pr->getName(),
  91.                     "alias" => $pr->getAlias(),
  92.                     "info" => $projectInfo,
  93.                     "info_admin" => $projectAdminInfo,
  94.                 );
  95.             }
  96.         }
  97.     
  98.         return $this->render('main/mainTemplate.html.twig', array(
  99.             "baseUrl" => $this->getParameter("app.base_url"),
  100.             "projects" => $projects,
  101.             "isAdmin" => $isAdmin
  102.         ));
  103.     }
  104.     /**
  105.      * @Route("/ecrypt/{text}", name="get_ecrypt_text", methods={"GET"})
  106.      * 
  107.      */
  108.     public function getEcryptText(Request $requestUtilities $utilitiesManagerRegistry $doctrine): Response
  109.     {   
  110.         $user $this->getUser();
  111.         if(in_array("ROLE_ADMIN",$user->getRoles())){
  112.             $text $request->get('text');
  113.             echo $utilities->ecrypt($text);
  114.             die();
  115.         }else{
  116.             return $this->redirectToRoute('main_page');
  117.         }
  118.     }
  119.     /**
  120.      * @Route("/dcrypt/{text}", name="get_dcrypt_text", methods={"GET"})
  121.      * 
  122.      */
  123.     public function getDcryptText(Request $requestUtilities $utilities): Response
  124.     {
  125.         $user $this->getUser();
  126.         if(in_array("ROLE_ADMIN",$user->getRoles())){
  127.             $text $request->get('text');
  128.             echo $utilities->dcrypt($text);
  129.             die();
  130.         }else{
  131.             return $this->redirectToRoute('main_page');
  132.         }
  133.     }   
  134.     /**
  135.      * @Route("/l/{hash}/{text}", name="get_hash_text", methods={"GET"})
  136.      * 
  137.      */
  138.     public function getHashText(Request $request): Response
  139.     {
  140.         return $this->controlHash($request);
  141.     }
  142.     /**
  143.      * @Route("/l/{hash}", name="get_hash", methods={"GET"})
  144.      * 
  145.      */
  146.     public function getHash(Request $request): Response
  147.     {
  148.         return $this->controlHash($request);
  149.     }
  150.     public function controlHash(Request $request): Response
  151.     {
  152.         $hash $request->get('hash');
  153.         $text $request->get('text');
  154.         $url "";
  155.         switch( $hash ) {
  156.             case "trdn001"
  157.                 if ( empty($text) ) {
  158.                     $text "Hola, quiero mi código de promoción";
  159.                 } else {
  160.                     $text base64_decode($text);
  161.                 }
  162.                 $url 'https://api.whatsapp.com/send?phone=34935323245&text=' $text
  163.                 break;
  164.             case "oRiu20T":
  165.                 $text "Necesito un veterinario";
  166.                 $url 'https://api.whatsapp.com/send?phone=34935323245&text=' $text
  167.                 break;
  168.             case "scEXbeB"
  169.                 $text "Quiero activar el período de garantía";
  170.                 $url 'https://api.whatsapp.com/send?phone=34935323245&text=' $text
  171.                 break;
  172.             case "R20iouT":
  173.                 $text "Enviant aquest missatge el teu gos passarà a formar part del club Gosbi";
  174.                 $url 'https://api.whatsapp.com/send?phone=34935323245&text=' $text
  175.                 break;
  176.             case "c8dbxSd"
  177.                 if ( empty($text) ) {
  178.                     //$text = "Hola";
  179.                     $text "Quiero activar el período de garantía";
  180.                 }
  181.                 $url 'https://api.whatsapp.com/send?phone=34935323245&text=' $text
  182.                 break;
  183.         }
  184.         if ( !empty($url) ) {
  185.             return $this->redirect($url);
  186.         } else {
  187.             die('Link not found');
  188.         }
  189.     }
  190.     /**
  191.      * @Route("/generator", name="get_generator", methods={"GET"})
  192.      * 
  193.      */
  194.     public function generator(Request $request): Response
  195.     {
  196.         $message $request->get('message');
  197.         header('Content-Type: text/html; charset=UTF-8');
  198.         echo '<html lang="es-ES" prefix="og: http://ogp.me/ns#"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1">
  199.         <style>body,input{font-family:Arial;font-size:16px;}</style></head><body>';
  200.         if ( empty($message) ) {
  201.             echo '<form><input type="text" id="message" name="message" placeholder="Mensaje de whatsapp" value="" size="60" style="max-width:100%"/><br><br><input type="submit" value="Generar QR"></form>';
  202.         
  203.             echo '<hr>Ejemplos:<br><br>';
  204.             echo '<a href="#" onclick="document.getElementById(\'message\').value=\'Hola, quiero mi cupón 🤩\';">Hola, quiero mi cupón 🤩</a><br><br>';
  205.             echo '<a href="#" onclick="document.getElementById(\'message\').value=\'Hola, quiero activar el período de garantía\';">Hola, quiero activar el período de garantía</a><br><br>';
  206.         
  207.         } else {
  208.             $url "https://whatsapp.tridenia.com/l/trdn001?text=" base64_encode($message);
  209.             echo '<img src="https://chart.googleapis.com/chart?cht=qr&chl='.$url.'&chs=256x256&choe=UTF-8&chld=L|2%27%20alt=%27qr%20code"><br><br>Url: <input value="'$url .'" size="60" style="max-width:100%" /><br><br><a href="/generator">Generar nuevo QR</a>';
  210.         }
  211.         echo '</body></html>';
  212.         die();
  213.     }
  214.     
  215. }