<?php
include_once("lib/general/cGeneral.php");
include_once("Model/UserAuth.php");
include_once("Controllers/DSUController.php");
include_once("Controllers/ViralityController.php");
include_once("Controllers/EducacionController.php");
include_once("Controllers/SaludController.php");
ini_set('display_errors', 1); 
class ReportesController extends cGeneral{

        public function generate_reports(){
            global $General;
            $data = $General->postRequest();
            $response = array();
            $conexion = $General->getConexion(MOD_AMBIENT);
            $ConfigMySQLDS = $General->getConexionDS(MOD_AMBIENT) ;

            if($General->checktoken($data["token"])== "OK"){

                #Reviso si El cliente es municipio
                #Valores posibles:
                # 0: Cliente Estado
                # 1: Cliente Municpio
                
                $resultadoEtiquetas = $this->generarEtiquetaFechas($data["date_start"], $data["date_end"]);

                $actual_date = new DateTime($data["date_start"]);
                $actual_date->sub(new DateInterval('P1D'));
                $actual_date = $actual_date->format('Y-m-d');


                $identidad = $this->get_identidad($data["id_edo"]);
                #Consumo de identidades y logos
                
        

                #Consumo el header
                
                $response["data_response"]["header_cliente"]["periodicidad"] = $resultadoEtiquetas["periodicidad"];
                $response["data_response"]["header_cliente"]["startDate"]    = $resultadoEtiquetas["fecha1_label"];
                $response["data_response"]["header_cliente"]["endDate"]      = $resultadoEtiquetas["fecha2_label"];                                                          
                $response["data_response"]["header_cliente"]["logoCliente"]  = $identidad["logoCliente"];
                $response["data_response"]["header_cliente"]["logoHeader"]   =  $identidad["logoHeader"];
                $response["data_response"]["header_cliente"]["logoFooter"]   =  $identidad["logoFooter"];
                $response["data_response"]["header_cliente"]["nombre"]   =  $identidad["entidad"];  

                #Obtiene los colores basados en la identidad de cliente
                #$response["data_response"]["header_cliente"]["primaryColor"]   =  $identidad["primaryColor"];  
                #$response["data_response"]["header_cliente"]["secondaryColor"]   =  $identidad["secondaryColor"];  
                
                #Se forzan los colores del mockup
                $response["data_response"]["header_cliente"]["primaryColor"]     =  "#713847";  
                $response["data_response"]["header_cliente"]["secondaryColor"]   =  "#A77E4F";  
               
                 
                switch($data["tipo_report"]){
                    case "virality":
                        #CASE VIRALITY

                        #Verifico el tipo de periodicidad:
                            #Posibles parametros de ingreso:
                            #@periodicidad = "daily"
                            #@periodicidad = "week"

                            
                            #Obtengo el ID del edo en Virality
                            $homo__id_Virality = $this->get___homo_id($data["id_edo"],"Virality");
                            $isMun = $this->check_ismun($homo__id_Virality);

                            #Formamos los filtros para categorias
                            $category_custom = "";
                            if(isset($data["filter_category"]) && !empty($data["filter_category"])){
                                $json_category = json_decode($data["filter_category"], true);
                                #print_r($json_category); 
                                $category_custom =  "AND ( ";

                                /*AND (        t.categorias   LIKE "%31%" OR 
							                   t.`categorias` LIKE "%11%" 
                                            OR t.categorias   LIKE '4,%'
                                  )*/
                                for($x=0;count($json_category) > $x; $x++){                                    
                                    if($json_category[$x] < 10){
                                        $category_custom .= " t.categorias LIKE '".$json_category[$x].",%' OR ";
                                    }
                                    else{
                                        $category_custom .= " t.categorias LIKE '%".$json_category[$x]."%' OR ";
                                    }
                                }
                                $category_custom = substr($category_custom, 0, -3);
                                $category_custom .=  " ) ";
                            }


                            #Formamos los filtros para los municipios limitando la información
                            $filter_mun = "";
                            if(isset($data["filter_mun"]) && !empty($data["filter_mun"])){
                                $json_mun = json_decode($data["filter_mun"], true);
                                #print_r($json_category); 
                                $filter_mun =  "AND t.`municipios` IN (";

                                for($x=0;count($json_mun) > $x; $x++){    
                                    $filter_mun .= $json_mun[$x].",";
                                }
                                $filter_mun = substr($filter_mun, 0, -1);
                                $filter_mun .=  ") ";
                            }

                            #Formamos los filtros para los municipios limitando la información
                            $filter_secretaria = "";
                            if(isset($data["filter_secretaria"]) && !empty($data["filter_secretaria"])){
                                $json_secretaria = json_decode($data["filter_secretaria"], true);
                                #print_r($json_category); 



                                $filter_secretaria =  "AND (";

                                for($x=0;count($json_secretaria) > $x; $x++){   
                                    if($json_secretaria[$x] < 10){
                                        $filter_secretaria .= " t.secretarias LIKE '%".$json_secretaria[$x].",%' OR ";
                                    } 
                                    else{
                                        $filter_secretaria .= " t.secretarias LIKE '%".$json_secretaria[$x]."%' OR ";
                                    }
                                }
                                $filter_secretaria = substr($filter_secretaria, 0, -3);
                                $filter_secretaria .=  ") ";
                            }

                            #INFORMACIÓN COUNTS HEADER
                            $get_header_virality = ViralityController::get_header_virality($homo__id_Virality,$data["date_start"],$data["date_end"], $data["periodicidad"],$category_custom,$filter_mun,$filter_secretaria);                        
                            $response["data_response"]["header_cliente"]["totalTemas"] = $get_header_virality["totalTemas"]; 
                            $response["data_response"]["header_cliente"]["totalPost"] = $get_header_virality["totalPost"];


                            #PRIMER MÓDULO TOP 10 VIRALITY
                            #@Consumo la información del módulo de virality
                            $response["data_response"]["modulos"][0]["title"] = "VIRALITY";
                            $response["data_response"]["modulos"][0]["top"] = ViralityController::get_modulo_virality($homo__id_Virality,$data["date_start"],$data["date_end"], $data["periodicidad"],$category_custom,$filter_mun,$filter_secretaria,"");  
                        
                            if( empty($filter_secretaria) && empty($category_custom) ){
                                if($isMun == 0){
                                    #Se setea categoria para gobernador(a)
                                    $cat_alcalde_gob = "%17%";                        
                                    $response["data_response"]["modulos"][1]["title"] = "GOBERNADOR(A)";
                                    
                                }
                                else{
                                    #Se setea categoria para alcaldes(as)
                                    $cat_alcalde_gob = "1,%";
                                    $response["data_response"]["modulos"][1]["title"] = "ALCALDES(AS)";  
                                }

                                $response["data_response"]["modulos"][1]["top"] = ViralityController::get_modulo_gobernador($homo__id_Virality,$cat_alcalde_gob,$data["date_start"],$data["date_end"],$data["periodicidad"],$category_custom,$filter_mun,$filter_secretaria);  
                                

                                #Consumo la información del módulo medios nacionales
                                $response["data_response"]["modulos"][2]["title"] = "MEDIOS NACIONALES"; 
                                $response["data_response"]["modulos"][2]["top"] = ViralityController::get_modulo_medios_nacionales($homo__id_Virality,$data["date_start"],$data["date_end"],$data["periodicidad"],$category_custom,$filter_mun,$filter_secretaria);  

                                #Consumo la información del módulo acciones de gobierno
                                $response["data_response"]["modulos"][3]["title"] = "ACCIONES DE GOBIERNO"; 
                                $response["data_response"]["modulos"][3]["top"] = ViralityController::get_modulo_acciones_gobierno($homo__id_Virality,$data["date_start"],$data["date_end"],$data["periodicidad"],$category_custom,$filter_mun,$filter_secretaria);  

                                #Consumo la información del módulo seguridad y proteccion civil
                                $response["data_response"]["modulos"][4]["title"] = "SEGURIDAD Y PROTECCIÓN CIVIL"; 
                                $response["data_response"]["modulos"][4]["top"] = ViralityController::get_modulo_seguridad_proteccion($homo__id_Virality,$data["date_start"],$data["date_end"],$data["periodicidad"],$category_custom,$filter_mun,$filter_secretaria); 

                                #Consumo la información del módulo descontento social
                                $response["data_response"]["modulos"][5]["title"] = "DESCONTENTO SOCIAL";
                                $response["data_response"]["modulos"][5]["top"] = ViralityController::get_modulo_descontento_social($homo__id_Virality,$data["date_start"],$data["date_end"],$data["periodicidad"],$category_custom,$filter_mun,$filter_secretaria); 
                                
                                #Consumo la información del módulo política
                                $response["data_response"]["modulos"][6]["title"] = "POLÍTICA";
                                $response["data_response"]["modulos"][6]["top"] = ViralityController::get_modulo_politica($homo__id_Virality,$data["date_start"],$data["date_end"],$data["periodicidad"],$category_custom,$filter_mun,$filter_secretaria); 


                                $count_modulos = 7;
                                if($isMun == 0){

                                    $response["data_response"]["modulos"][$count_modulos]["title"] = "ALCALDES(AS)";
                                    $response["data_response"]["modulos"][$count_modulos]["top"] = ViralityController::get_modulo_gobernador($data["id_edo"],"1,%",$data["date_start"],$data["date_end"],$data["periodicidad"],$category_custom,$filter_mun,$filter_secretaria);  
                                    $count_modulos ++;
                                }
                                
                                #Consumo la información del módulo titulares dependencias
                                $response["data_response"]["modulos"][$count_modulos]["title"] = "TITULARES DEPENDENCIAS"; 
                                $response["data_response"]["modulos"][$count_modulos]["top"] = ViralityController::get_modulo_titulares_dependencias($homo__id_Virality,$data["date_start"],$data["date_end"],$data["periodicidad"],$category_custom,$filter_mun,$filter_secretaria); 
                                $count_modulos ++;
                                
                                #Consumo la información del módulo columna de opinión
                                $response["data_response"]["modulos"][$count_modulos]["title"] = "COLUMNA DE OPINIÓN"; 
                                $response["data_response"]["modulos"][$count_modulos]["top"] = ViralityController::get_modulo_columnas_opinion($homo__id_Virality,$data["date_start"],$data["date_end"],$data["periodicidad"],$category_custom,$filter_mun,$filter_secretaria); 
                                $count_modulos ++;

                                
                                
                            }
                            else{
                                $count_modulos = 1;
                            }
                            
                   
                            #Consumo la información del módulo crecimiento mediatico
                            $response["data_response"]["modulos"][$count_modulos]["title"] = "CRECIMIENTO MEDIATICO"; 
                            $response["data_response"]["modulos"][$count_modulos]["top"] = ViralityController::get_modulo_crecimiento_mediatico($homo__id_Virality,$data["date_start"],$data["date_end"],$data["periodicidad"],$category_custom,$filter_mun,$filter_secretaria); 
                            $count_modulos ++;

                        if($isMun == 0 && (isset($data["mod_mun_custom"])) && !isset($data["filter_mun"])){    

                            $json_mun = json_decode($data["mod_mun_custom"], true);

                            for($x=0;count($json_mun) > $x; $x++){
                                
                                $mun_custom = $nombre_mun = "";
                                for($i=0; count($json_mun[$x]) > $i; $i++){
                                    $mun_custom .= $json_mun[$x][$i].",";
                                    $nombre_mun .= $this->get_name_mun($json_mun[$x][$i])." + ";
                                }
                                $mun_custom = substr($mun_custom, 0, -1);
                                $nombre_mun = substr($nombre_mun, 0, -3);
                                $response["data_response"]["modulos"][$count_modulos]["title"] = $nombre_mun;
                                $response["data_response"]["modulos"][$count_modulos]["top"] = ViralityController::get_modulo_for_mun($homo__id_Virality,$mun_custom,$data["date_start"],$data["date_end"],$data["periodicidad"],$category_custom,$filter_mun,$filter_secretaria); 
                                $count_modulos ++;
                                
                            }
                        }
                    #END CASE VIRALITY
                    break;

                    case "DSU":
                        #CASE DSU
                        #Obtengo el ID del edo en DSU
                        $homo__id_DSU = $this->get___homo_id($data["id_edo"],"DSU");

                        #Tienen dos tipos de periodo posible para los reportes:
                        #   periodo = week  (Semanal) se setea $periodo a 29
                        #   periodo = month (Mensual) se setea $periodo a 6

                        if($data["periodo"] == "month"){
                            $periodo = 29;
                            $response["data_response"]["header_cliente"]["periodicidad"] = "month";
                        }
                        else{
                            $periodo = 6;
                            $response["data_response"]["header_cliente"]["periodicidad"] = "week";
                        }

                        /*
                        @Se agregan a los querys
                          /*BLOQUE DE CATEGORIAS* /
                          ".$category_custom." 
                          /*BLOQUE DE MUNICIPIO* /
                          ".$filter_mun."  
                          /*BLOQUE DE COLONIAS* /
                          ".$filter_colonias."

                          --  AND p.idMunicipio IN (12) #Filtrado por municipio
                          --  AND p.idColonia IN (58087) #Filtrado de colonia
                          --  AND cc.category2 IN ("AGUA") #Filtrado por tipo de servicio

                        */

                        /*
                        # FORMAMOS LOS FILTROS DE SERVICIOS
                        @Posibles valores: 
                        $data["filter_services"] = {"AGUA", "ALUMBRADO Y ELECTRICIDAD", "BASURA", "VIALIDADES", "ESPACIOS PÚBLICOS"}
                        El array puede ser 1..n valores presentes
                        Si viene null o no viene se trata de un reporte general (Toma los 5 servicios)
                        */
                        $filter_services = "";
                        if(isset($data["filter_services"]) && !empty($data["filter_services"])){
                            $json_serv = json_decode($data["filter_services"], true);
                            #print_r($json_category); 
                            $filter_services =  "AND cc.category2 IN (";

                            for($x=0;count($json_serv) > $x; $x++){    
                                $filter_services .= "'".$json_serv[$x]."',";
                            }
                            $filter_services = substr($filter_services, 0, -1);
                            $filter_services .=  ") ";
                        }

                        /*
                        # FORMAMOS LOS FILTROS DE MUNICPIO
                        @Posibles valores: 
                        $data["filter_services"] = {idMun,idMun2}   //Estos van ligados a la idEstado cliente
                        El array puede ser 1..n valores presentes
                        Si viene null o no viene se trata de un reporte general (Toma todos los municpios ligados al idEstado)
                        */
                        $filter_mun = "";
                        if(isset($data["filter_mun"]) && !empty($data["filter_mun"])){
                            $json_mun = json_decode($data["filter_mun"], true);
                            $filter_mun =  "AND p.idMunicipio IN (";

                            for($x=0;count($json_mun) > $x; $x++){    
                                $filter_mun .= $json_mun[$x].",";
                            }
                            $filter_mun = substr($filter_mun, 0, -1);
                            $filter_mun .=  ") ";
                        }

                        /*
                        # FORMAMOS LOS FILTROS DE COLONIAS
                        @Posibles valores: 
                        $data["filter_col"] = {idCol,idCol2....idColn}  //Estos van ligados al idMun del idEdo
                        El array puede ser 1..n valores presentes
                        Si viene null o no viene se trata de un reporte general (Toma todas las colonias ligadas al municipio)
                        */
                        $filter_col = "";
                        if(isset($data["filter_col"]) && !empty($data["filter_col"])){
                            $json_col = json_decode($data["filter_col"], true);
                            #print_r($json_category); 
                            $filter_col =  "AND p.idColonia IN (";

                            for($x=0;count($json_col) > $x; $x++){    
                                $filter_col .= $json_col[$x].",";
                            }
                            $filter_col = substr($filter_col, 0, -1);
                            $filter_col .=  ") ";
                        }

                        

                        $___counts = DSUController::get_header_dsu($homo__id_DSU, $actual_date, $periodo, $filter_services, $filter_mun, $filter_col);
                        if($___counts["cant_demandas"] != NULL){

                            $response["data_response"]["counts"] = $___counts;
                            $__filter_services = (isset($data["filter_services"])) ? $data["filter_services"] : "";
                            $response["data_response"]["totales_servicios"] = DSUController::get_count_xservicios($homo__id_DSU, $actual_date, $periodo, $filter_services, $filter_mun, $filter_col);
                            $response["data_response"]["totales_servicios_urbanos"] = DSUController::get_top_serv_urbanos($homo__id_DSU, $actual_date, $periodo, $__filter_services, $filter_mun, $filter_col);
                            $response["data_response"]["grafica_semanas"] = DSUController::grafica_semanas($homo__id_DSU, $actual_date, $periodo,$filter_services, $filter_mun,$filter_col);
                            $response["data_response"]["grafica_mun"] = DSUController::get_grafica_mun($homo__id_DSU, $actual_date, $periodo, $filter_services, $filter_mun,$filter_col);
                            $response["data_response"]["top_colonias"] = DSUController::get_top_colonias($homo__id_DSU, $actual_date, $periodo, $filter_services, $filter_mun,$filter_col);
                            $response["data_response"]["grafica_30_days"] = DSUController::grafica_30_days($homo__id_DSU, $actual_date, $filter_services, $filter_mun, $filter_col);
                            $response["data_response"]["grafica_mes"] = DSUController::grafica_mes($homo__id_DSU, $actual_date, $filter_services, $filter_mun, $filter_col);
                            
                           
    
                            
                            /*
                            * Consulto sobre los servicios que se necesitan
                            /**
                                 * Service
                                 * @Posibles valores:
                                 * SERVICIO: AGUA
                                 * SET @service = 255;
                                 * id_services : 255
                                 * SET @categories = '363, 364, 365, 366, 367, 368, 459, 369, 370, 371, 432, 436, 460, 373,
                                 *                    374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 461, 384, 385, 386,
                                 *                    387, 388, 389, 390, 441, 451, 462, 463';
                                 * 
                                 * SERVICIO: VIALIDADES
                                 * SET @service = 256;
                                 * SET @categories =  '391, 392, 393, 394, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
                                 *                     407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 
                                 *                     421, 422, 423, 424, 433, 440, 445, 446, 447, 449, 453, 474, 475, 476, 
                                 *                     477';
                                 * 
                                 * SERVICIO: ALUMBRADO Y ELECTRICIDAD
                                 * SET @service = 254;
                                 * SET @categories = '465, 464, 452, 442, 437, 431, 430, 362, 361, 360, 359, 358, 357, 356, 
                                 *                    355, 354, 353, 352, 351, 350, 348, 347, 346, 345, 344, 343, 342, 341';
                                 * 
                                 * SERVICIO: BASURA
                                 * SET @service = 252;
                                 * SET @categories = '468, 467, 466, 448, 443, 438, 312, 311, 310, 309, 308, 307, 306, 305, 
                                 *                    304, 303, 302, 300, 299, 298, 297, 296, 295, 294, 293, 292, 291, 290, 
                                 *                    289, 288, 287';
                                 *
                                 * 
                                 * SERVICIO: ESPACIOS PÚBLICOS
                                 * SET @service = 253;
                                 * SET @categories = '473, 472, 471, 470, 469, 458, 457, 454, 444, 439, 435, 434, 429, 428, 
                                 *                    427, 426, 425, 340, 339, 338, 337, 336, 335, 334, 333, 332, 331, 330, 
                                 *                    329, 328, 327, 326, 325, 324, 322, 321, 320, 319, 317, 316, 315, 314, 
                                 *                    313';
                            
                                 # FORMAMOS LAS PETICIONES DE SERVICIOS
                                @Posibles valores: 
                                $data["filter_services"] = {"AGUA", "ALUMBRADO Y ELECTRICIDAD", "BASURA", "VIALIDADES", "ESPACIOS PÚBLICOS"}
                                El array puede ser 1..n valores presentes
                                Si viene null o no viene se trata de un reporte general (Toma los 5 servicios)
                                */
                                $___servicios        = array("AGUA" => 255, "ALUMBRADO Y ELECTRICIDAD" => 254, "BASURA" => 252, "VIALIDADES" => 256, "ESPACIOS PÚBLICOS" => 253);
                                $___categories_servs = array(255 => [363, 364, 365, 366, 367, 368, 459, 369, 370, 371, 432, 436, 460, 373,
                                                                     374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 461, 384, 385, 386,
                                                                     387, 388, 389, 390, 441, 451, 462, 463],
                                                             256 => [391, 392, 393, 394, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
                                                                     407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 
                                                                     421, 422, 423, 424, 433, 440, 445, 446, 447, 449, 453, 474, 475, 476, 
                                                                     477],
                                                             254 => [465, 464, 452, 442, 437, 431, 430, 362, 361, 360, 359, 358, 357, 356, 
                                                                     355, 354, 353, 352, 351, 350, 348, 347, 346, 345, 344, 343, 342, 341],
                                                             252 => [468, 467, 466, 448, 443, 438, 312, 311, 310, 309, 308, 307, 306, 305, 
                                                                     304, 303, 302, 300, 299, 298, 297, 296, 295, 294, 293, 292, 291, 290, 
                                                                     289, 288, 287],
                                                             253 => [473, 472, 471, 470, 469, 458, 457, 454, 444, 439, 435, 434, 429, 428, 
                                                                     427, 426, 425, 340, 339, 338, 337, 336, 335, 334, 333, 332, 331, 330, 
                                                                     329, 328, 327, 326, 325, 324, 322, 321, 320, 319, 317, 316, 315, 314, 
                                                                     313]
                                                            );
                                $filter_services = array();
                                if(isset($json_serv) && !empty($json_serv)){
                                    for($x=0;count($json_serv)>$x;$x++){
                                       $filter_services[] = $___servicios[$json_serv[$x]];
                                    }
                                }
                                else{
                                    $filter_services = array(255,256,254,252,253);
                                }
                                for($x=0;count($filter_services)>$x;$x++){     
                                    $clave = array_search($filter_services[$x], $___servicios);                                      
                                    $response["data_response"]["tabla_x_servicio"][$clave] = DSUController::reporte_x_servicio($homo__id_DSU,$actual_date,$periodo,$filter_services[$x],implode(",",$___categories_servs[$filter_services[$x]]),$filter_mun,$filter_col);
                                    $response["data_response"]["tabla_x_servicio"][$clave]["table_colonies"] = DSUController::reporte_x_colonia($homo__id_DSU, $actual_date, $filter_services[$x],$___categories_servs[$filter_services[$x]],$filter_mun,$filter_col);
                                }

                                
                        
                        }   
                        else{
                            $response["data_response"]["counts"] = 404;
                        }

                           
                       # $response["data_response"]["totales_mun_cat"] = DSUController::get_serv_tipo_mun_col($homo__id_DSU,$data["date_start"],$periodo);
                       # $response["data_response"]["top_colonias"] = DSUController::get_serv_tipo_mun_col($homo__id_DSU,$data["date_start"],$periodo);
                       # $response["data_response"]["totales_serv_municipio"] = DSUController::get_total_serv_mun($homo__id_DSU,$data["date_start"],$periodo);
                        
                        #END CASE DSU
                    break;

                    case "educacion":

                        #Obtengo el ID del edo en Virality para obtener el top virality del reporte de educación
                        $homo__id_Virality = $this->get___homo_id($data["id_edo"],"Virality");
                        $isMun = $this->check_ismun($homo__id_Virality);

                        #Formamos los filtros para los municipios limitando la información
                        $filter_mun = "";
                        if(isset($data["filter_mun"]) && !empty($data["filter_mun"])){
                            $json_mun = json_decode($data["filter_mun"], true);
                            #print_r($json_category); 
                            $filter_mun =  "AND t.`municipios` IN (";

                            for($x=0;count($json_mun) > $x; $x++){    
                                $filter_mun .= $json_mun[$x].",";
                            }
                            $filter_mun = substr($filter_mun, 0, -1);
                            $filter_mun .=  ") ";
                        }

                        # SECCIONES DE VIRALITY EN REPORTE DE EDUCACIÓN
                        
                        #INFORMACIÓN COUNTS HEADER
                        $get_header_virality = ViralityController::get_header_virality($homo__id_Virality,$data["date_start"],$data["date_end"], $data["periodicidad"]," AND (t.categorias LIKE '%11%') ", $filter_mun,"");                        
                        $response["data_response"]["header_cliente"]["totalTemas"] = $get_header_virality["totalTemas"]; 
                        $response["data_response"]["header_cliente"]["totalPost"] = $get_header_virality["totalPost"];

                        #PRIMER MÓDULO TOP 10 VIRALITY
                        #@Consumo la información del módulo de virality
                        $response["data_response"]["modulos"][0]["title"] = "VIRALITY";
                        $response["data_response"]["modulos"][0]["top"] = ViralityController::get_modulo_virality($homo__id_Virality,$data["date_start"],$data["date_end"], $data["periodicidad"]," AND (t.categorias LIKE '%11%') ", $filter_mun,"","RPT-EDU");  
                        
                        # END SECCIONES DE VIRALITY EN REPORTE DE EDUCACIÓN

                    break;
    
                    
                    case "salud":      
                        $idPlataform = 3;
                        $client_data =  SaludController::get__client_data($data["id_edo"], $idPlataform );

                        //HEADER CLIENTE
                        $response["data_response"]["header_cliente"]["logoCliente"]  = $client_data["urlLogo"];
                        $response["data_response"]["header_cliente"]["nombre"]   =  $client_data["title"]; 
                        $response["data_response"]["header_cliente"]["primaryColor"]     = $client_data["primaryColor"];  
                        $response["data_response"]["header_cliente"]["secondaryColor"]   = $client_data["secondaryColor"];  
        

                        //ENDPOINTS SALUD
                        $start_date = $data["date_start"];
                        $end_date = $data["date_end"];
                        $idClient = intval( $data["id_edo"] );
                        $arrayServices = isset($data["filter_services"]) ? json_decode($data["filter_services"], true) : [1,2,3,4,5,6];
                        $arrayMunicipalities = isset($data["filter_mun"]) ? json_decode($data["filter_mun"], true) : [];
                        $services = isset($data["filter_services"]) ? implode(',', $arrayServices) : '1,2,3,4,5,6';
                        $municipalities = isset($data["filter_mun"]) ? implode(',', $arrayMunicipalities) : implode(',', SaludController::get_municipalities_per_client($idClient));
                        $sevicesNames = SaludController::get_name_services_salud();
                        $response["data_response"]["total_x_semana"] = SaludController::get_total_per_week($start_date, $end_date, $idClient, $services, $municipalities);
                        $response["data_response"]["totales_servicios"] = SaludController::get_total_per_service_salud($start_date, $end_date, $idClient, $services, $municipalities);
                        $categories = [];
                        foreach ($arrayServices as $service) {
                            $category["id"] = $service;
                            $category["servicio"] = $sevicesNames[$service];
                            $category["data"] = SaludController::get_total_per_urban_service_salud($start_date, $end_date, $idClient, $service, $municipalities);
                            $categories[] = $category;
                        }
                        $response["data_response"]["totales_categoria"] = $categories;
                        $response["data_response"]["totales_x_municipio"] = SaludController::get_total_by_municipalitie($start_date, $end_date, $idClient, $services, $municipalities);
                        $response["data_response"]["totales_x_mes"] = SaludController::get_total_per_month($end_date, $idClient, $services, $municipalities);
                        $response["data_response"]["totales_x_semanas"] = SaludController::get_total_per_weeks($end_date, $idClient, $services, $municipalities);
                        $response["data_response"]["totales_x_meses"] = SaludController::get_total_all_months_salud($end_date, $idClient, $services, $municipalities);
                        $response["data_response"]["totales_x_instituciones"] = SaludController::get_total_per_institutions($start_date, $end_date, $idClient, $services, $municipalities);
                        $response["data_response"]["totales_x_categorias"] = SaludController::get_total_per_categories($start_date, $end_date, $idClient, $services, $municipalities);
                        $response["data_response"]["tablas_finales"] = SaludController::get_final_tables($start_date, $end_date, $idClient, $services, $municipalities);
                    break;
                    
                }
            }            
            else{
                $response['code'] = 301;
                $response['msj'] = "El token ya fue utilizado. Genera un nuevo token para continuar";  
            }
            #$General->settoken($data["token"]);             
            $General->closeConexcionDB($conexion);
            echo json_encode($response);
        }


      
        public function check_ismun($id_edo){
            global $General;
            $ConfigMySQLDS = $General->getConexionDS(MOD_AMBIENT) ;

            #Consulto la data de header de reporte
            $sql_checkismun = "SELECT 
                                        isMun 
                                    FROM
                                        entidades 
                                    WHERE id = ".$id_edo." 
                                    LIMIT 1 ;
                                    ";
                    
            $resultado = mysqli_query($ConfigMySQLDS,$sql_checkismun);
                            

            try{
                if (!$resultado) {
                    throw new Exception("Error de BD, no se pudo consultar la base de datos " );
                    $General->closeConexcionDB($conexion);
                    $response["code"] = 301;
                    $response["msj"] = "Error de BD, no se pudo consultar la base de datos ";
                }
                else{
                    $get_row = array();
                    while ($fila =mysqli_fetch_array($resultado, MYSQLI_ASSOC)){
                        $get_row[] =$fila;
                    }
                    
                }
            }
            catch(Exception $e){
                echo $e->getMessage();
                die();
            }
            return $get_row[0]["isMun"];

        }

        public function get_name_mun($id_mun){
            global $General;
            $ConfigMySQLDS = $General->getConexionDS(MOD_AMBIENT) ;

            #Consulto la data de header de reporte
            $sql_checknamemun = "SELECT 
                                    nombre 
                                FROM
                                    municipios 
                                WHERE id = ".$id_mun." 
                                LIMIT 1 ;";
                    
            $resultado = mysqli_query($ConfigMySQLDS,$sql_checknamemun);
                            

            try{
                if (!$resultado) {
                    throw new Exception("Error de BD, no se pudo consultar la base de datos get_name_mun" );
                    $General->closeConexcionDB($conexion);
                    $response["code"] = 301;
                    $response["msj"] = "Error de BD, no se pudo consultar la base de datos ";
                }
                else{
                    $get_row = array();
                    while ($fila =mysqli_fetch_array($resultado, MYSQLI_ASSOC)){
                        $get_row[] =$fila;
                    }
                    
                }
            }
            catch(Exception $e){
                echo $e->getMessage();
                die();
            }

            return $get_row[0]["nombre"];

        }    
        
        public function generarEtiquetaFechas($dateStart, $dateEnd) {    
            setlocale(LC_TIME, 'es_ES.UTF-8');
    
            // Inicializar variables de etiquetas
            $periodicidad = "";
            $fecha1_label = "";
            $fecha2_label = "";
        
            // Convertir las fechas de entrada a tipo fecha para comparar
            $startDateTime = new DateTime($dateStart);
            $endDateTime = new DateTime($dateEnd);
        
            // Comparar si las fechas son iguales
            if($startDateTime->format('Y-m-d') == $endDateTime->format('Y-m-d')){
                $periodicidad = "daily";
                // Ajustar el formato para incluir el día de la semana y el mes en español
                $fecha1_label = strftime("%A %e de %B del %Y", $startDateTime->getTimestamp());
            } else {
                $periodicidad = "week";
                // Formatos para fechas distintas, asegurándose de que el mes y día de la semana están en español
                if($startDateTime->format('Y') == $endDateTime->format('Y')){
                    $fecha1_label = "Del" . strftime("%e de %B", $startDateTime->getTimestamp());
                    $fecha2_label = "Al" . strftime("%e de %B de %Y", $endDateTime->getTimestamp());
                } else {
                    $fecha1_label = "Del" . strftime("%e de %B de %Y", $startDateTime->getTimestamp());
                    $fecha2_label = "Al" . strftime("%e de %B de %Y", $endDateTime->getTimestamp());
                }
            }
        
            // Retornar un arreglo con las etiquetas de fecha y periodicidad
            return array("periodicidad" => $periodicidad, "fecha1_label" => $fecha1_label, "fecha2_label" => $fecha2_label);
        }
        
        public function get_identidad($idViz){
            global $General;
            $ConfigMySQLVIZ = $General->getConexionVIZ(MOD_AMBIENT);
            #Consulto la data de header de reporte

            $sql_getidentidad = "SELECT entidad, primaryColor, logo, calendarColor2 as secondaryColor from estados WHERE idestado =".$idViz." LIMIT 1;";

                    
                    
            $resultado = mysqli_query($ConfigMySQLVIZ,$sql_getidentidad);
            try{
                if (!$resultado) {
                    throw new Exception("Error de BD, no se pudo consultar la base de datos IDENTIDAD " );
                    $General->closeConexcionDB($conexion);
                    $response["code"] = 301;
                    $response["msj"] = "Error de BD, no se pudo consultar la base de datos ";
                }
                else{
                    $get_row = array();
                    while ($fila =mysqli_fetch_array($resultado, MYSQLI_ASSOC)){
                       $get_row[] =$fila;
                    }
                    
                }
            }
            catch(Exception $e){
                echo $e->getMessage();
                die();
            }

          
            $get_row[0]["logoCliente"] = "https://intelektiaviz.com/pages/images/Gob_".$get_row[0]["logo"];
            $get_row[0]["logoFooter"] = "https://images-vis.s3.us-east-2.amazonaws.com/INTELEKTIA_logo_calado.png";
            $get_row[0]["logoHeader"] = "https://images-vis.s3.us-east-2.amazonaws.com/INTELEKTIA_logo_color.png";
          

            
           return $get_row[0];
        }

        public function get___homo_id($id_edo,$plataforma){
            global $General;
            $ConfigMySQL = $General->getConexion(MOD_AMBIENT) ;
            #Consulto la data de header de reporte
            $sql_homo__id = "SELECT 
                                    id".$plataforma."  AS idHomo
                                FROM
                                    homologaciones_clientes 
                                WHERE idViz = ".$id_edo." 
                                LIMIT 1 ;
                                ";
                    
            $resultado = mysqli_query($ConfigMySQL,$sql_homo__id);
                            

            try{
                if (!$resultado) {
                    throw new Exception("Error de BD, no se pudo consultar la base de datos sql_homo__id" );
                    $General->closeConexcionDB($conexion);
                    $response["code"] = 301;
                    $response["msj"] = "Error de BD, no se pudo consultar la base de datos ";
                }
                else{
                    $get_row = array();
                    while ($fila =mysqli_fetch_array($resultado, MYSQLI_ASSOC)){
                        $get_row[] =$fila;
                    }
                    
                }
            }
            catch(Exception $e){
                echo $e->getMessage();
                die();
            }
            return $get_row[0]["idHomo"];
        }
               
        
}
?>


