<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Doctrine\Persistence\ManagerRegistry;
use App\Service\Utilities;
use App\Entity\Main\Project;
use App\Entity\Selfoods\SelfoodsOrders;
use App\Entity\Giro\GiroOrders;
use App\Entity\GiroLogistica\GiroLogisticaOrders;
class MainController extends AbstractController
{
private $logWhatsappRepositoryList;
public function __construct(){
$this->logWhatsappRepositoryList = array(
"tridenia" => TrideniaLogWhatsapp::class,
"trideniapro" => TrideniaProLogWhatsapp::class,
"maset" => MasetLogWhatsapp::class
);
}
/**
* @Route("/", name="main_page", methods={"GET"})
*
*/
public function mainPage(Request $request, Utilities $utilities, ManagerRegistry $doctrine): Response
{
$user = $this->getUser();
if (!$user) {
return $this->redirectToRoute('app_login');
}
$em = $doctrine->getManager();
$projectsRawRepository = $em->getRepository(Project::class);
$isAdmin = in_array("ROLE_ADMIN",$user->getRoles());
if($isAdmin){
$projectsRaw = $projectsRawRepository->findBy(array("status" => 1));
}else{
$projectsRaw = $projectsRawRepository->findBy(array("company" => $user->getCompany()->getId(), "status" => 1));
}
if(!$isAdmin && count($projectsRaw)==1)
{
return $this->redirectToRoute( $projectsRaw[0]->getAlias() . '_dashboard' );
}
$start_date = date("Y-m-01");
$end_date = date("Y-m-d" ,strtotime("-1 day", strtotime(date("Y-m-01" ,strtotime("+1 month")))));
$projects = array();
foreach($projectsRaw as $pr){
$projectInfo = $projectAdminInfo = array();
if($pr->getType()->getSlug() == "external"){
/**
* DEJADO ESTE IF POR SI ALGUN DIA DEBE CONTROLARSE UN PROYECTO DE TIPO EXTERNAL
* Y SE DEBEN COGER AQUÍ INFORMACIÓN PARA EL MAIN
*/
}else{
$emProject = $doctrine->getManager($pr->getAlias());
switch ($pr->getAlias())
{
case "selfoods":
$filters = [ "start_date" => date("Y-m") . "-01", "end_date" => date("Y-m-d") ];
$res = $emProject->getRepository(SelfoodsOrders::class)->getOrdersInfo( $emProject, $filters );
$projectInfo["total_orders"] = $res["totals"]["total_orders"];
$projectInfo["total_amount"] = $res["totals"]["total_amount"];
break;
case "giro":
$filters = [ "start_date" => date("Y-m") . "-01", "end_date" => date("Y-m-d") ];
$res = $emProject->getRepository(GiroOrders::class)->getOrdersInfo( $emProject, $filters );
$projectInfo["total_orders"] = $res["orders"]["totals"]["total_orders"];
$projectInfo["total_amount"] = $res["orders"]["totals"]["total_amount"];
break;
case "logistica_girand":
$filters = [ "start_date" => date("Y-m") . "-01", "end_date" => date("Y-m-d") ];
$res = $emProject->getRepository(GiroLogisticaOrders::class)->getOrdersInfo( $emProject, $filters );
$projectInfo["total_orders"] = $res["orders"]["totals"]["total_orders"];
$projectInfo["total_amount"] = $res["orders"]["totals"]["total_amount"];
break;
default:
}
if(!isset($projects[$pr->getCompany()->getName()])) $projects[$pr->getCompany()->getName()] = array();
$projects[$pr->getCompany()->getName()][] = array(
"id" => $pr->getId(),
"name" => $pr->getName(),
"alias" => $pr->getAlias(),
"info" => $projectInfo,
"info_admin" => $projectAdminInfo,
);
}
}
return $this->render('main/mainTemplate.html.twig', array(
"baseUrl" => $this->getParameter("app.base_url"),
"projects" => $projects,
"isAdmin" => $isAdmin
));
}
/**
* @Route("/ecrypt/{text}", name="get_ecrypt_text", methods={"GET"})
*
*/
public function getEcryptText(Request $request, Utilities $utilities, ManagerRegistry $doctrine): Response
{
$user = $this->getUser();
if(in_array("ROLE_ADMIN",$user->getRoles())){
$text = $request->get('text');
echo $utilities->ecrypt($text);
die();
}else{
return $this->redirectToRoute('main_page');
}
}
/**
* @Route("/dcrypt/{text}", name="get_dcrypt_text", methods={"GET"})
*
*/
public function getDcryptText(Request $request, Utilities $utilities): Response
{
$user = $this->getUser();
if(in_array("ROLE_ADMIN",$user->getRoles())){
$text = $request->get('text');
echo $utilities->dcrypt($text);
die();
}else{
return $this->redirectToRoute('main_page');
}
}
/**
* @Route("/l/{hash}/{text}", name="get_hash_text", methods={"GET"})
*
*/
public function getHashText(Request $request): Response
{
return $this->controlHash($request);
}
/**
* @Route("/l/{hash}", name="get_hash", methods={"GET"})
*
*/
public function getHash(Request $request): Response
{
return $this->controlHash($request);
}
public function controlHash(Request $request): Response
{
$hash = $request->get('hash');
$text = $request->get('text');
$url = "";
switch( $hash ) {
case "trdn001":
if ( empty($text) ) {
$text = "Hola, quiero mi código de promoción";
} else {
$text = base64_decode($text);
}
$url = 'https://api.whatsapp.com/send?phone=34935323245&text=' . $text;
break;
case "oRiu20T":
$text = "Necesito un veterinario";
$url = 'https://api.whatsapp.com/send?phone=34935323245&text=' . $text;
break;
case "scEXbeB":
$text = "Quiero activar el período de garantía";
$url = 'https://api.whatsapp.com/send?phone=34935323245&text=' . $text;
break;
case "R20iouT":
$text = "Enviant aquest missatge el teu gos passarà a formar part del club Gosbi";
$url = 'https://api.whatsapp.com/send?phone=34935323245&text=' . $text;
break;
case "c8dbxSd":
if ( empty($text) ) {
//$text = "Hola";
$text = "Quiero activar el período de garantía";
}
$url = 'https://api.whatsapp.com/send?phone=34935323245&text=' . $text;
break;
}
if ( !empty($url) ) {
return $this->redirect($url);
} else {
die('Link not found');
}
}
/**
* @Route("/generator", name="get_generator", methods={"GET"})
*
*/
public function generator(Request $request): Response
{
$message = $request->get('message');
header('Content-Type: text/html; charset=UTF-8');
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">
<style>body,input{font-family:Arial;font-size:16px;}</style></head><body>';
if ( empty($message) ) {
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>';
echo '<hr>Ejemplos:<br><br>';
echo '<a href="#" onclick="document.getElementById(\'message\').value=\'Hola, quiero mi cupón 🤩\';">Hola, quiero mi cupón 🤩</a><br><br>';
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>';
} else {
$url = "https://whatsapp.tridenia.com/l/trdn001?text=" . base64_encode($message);
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>';
}
echo '</body></html>';
die();
}
}