<?php
include("Bi_paginaController.php");
if(isset($_SESSION["alterar_senha_proximo_login"]) and $_SESSION["alterar_senha_proximo_login"])
{
	exit();
}
require_once($config->diretorio_raiz()."/src/model/bd/Bi_analiseDAO.php");
$bi_analiseDAO = new Bi_analiseDAO(); 
require_once($config->diretorio_raiz()."/src/model/bd/Bi_pagina_analiseDAO.php");
$bi_pagina_analiseDAO = new Bi_pagina_analiseDAO();
require_once($config->diretorio_raiz()."/src/model/encrypt.php");
$retorno = array();
if (isset($_GET["mod"]) && $_GET["mod"] == "filtro_admin")
{
	if ( (isset($_GET["codigo"]) and $_GET["codigo"] != "")  )
	{
		$bi_pagina = $bi_paginaDAO->buscarBi_pagina($_GET["codigo"]);
		$bi_pagina->setArea(new Bi_area());
	}else{
		$bi_pagina = new Bi_pagina();
	}
	$listaArea = $bi_areaDAO->listarTodosRegistros(); 
	include_once($config->diretorio_raiz()."/src/view/bi_pagina/Filtro_lista_registros_admin.php");
}
elseif (isset($_GET["mod"]) && $_GET["mod"] == "busca_por_campo_filtro_admin")
{
	$entrouEmAlgumFiltro = false;
 	$where = " where 1=1";
	if(isset($_GET['codigo']) and $_GET["codigo"] != "" )
	{
		$where .= " and UPPER(codigo) like '%".strtoupper($_GET['codigo'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&codigo=".$_GET["codigo"]; 
	}
	if(isset($_POST['codigo']) and $_POST["codigo"] != "" )
	{
		$where .= " and UPPER(codigo) like '%".strtoupper($_POST['codigo'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&codigo=".$_POST["codigo"]; 
	}
	if(isset($_GET['nome']) and $_GET["nome"] != "" )
	{
		$where .= " and UPPER(nome) like '%".strtoupper($_GET['nome'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&nome=".$_GET["nome"]; 
	}
	if(isset($_POST['nome']) and $_POST["nome"] != "" )
	{
		$where .= " and UPPER(nome) like '%".strtoupper($_POST['nome'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&nome=".$_POST["nome"]; 
	}
	$listaBi_pagina = $bi_paginaDAO->buscarFiltro($where);
	include_once($config->diretorio_raiz()."/src/view/bi_pagina/Listar_todos_registros_admin.php");
}
elseif (isset($_GET["mod"]) && $_GET["mod"] == "form_admin")
{
	if ( (isset($_GET["codigo"]) and $_GET["codigo"] != "")  )
	{
		$bi_pagina = $bi_paginaDAO->buscarBi_pagina($_GET["codigo"]);
	}else{
		$bi_pagina = new Bi_pagina();
		$bi_pagina->setArea(new Bi_area());
	}
	$listabi_pagina_analise = $bi_pagina_analiseDAO->buscarFiltro(" where pagina = '".$bi_pagina->getCodigo()."'"); 
	$listaArea = $bi_areaDAO->listarTodosRegistros(); 
	$lista_js_grid_editavelBi_pagina_analise = array();								
	foreach($listabi_pagina_analise as $item)			    
	{													
		array_push($lista_js_grid_editavelBi_pagina_analise, $item->getCodigo());	
	}			
	$listaAnalise = $bi_analiseDAO->listarTodosRegistros(); 	
	include_once($config->diretorio_raiz()."/src/view/bi_pagina/Formulario_admin.php");
}
elseif (isset($_GET["mod"]) && $_GET["mod"] == "salvar_user")
{
	$bi_pagina = new Bi_pagina();
	if ($_POST['codigo'] != "")
	{
		$bi_pagina = $bi_paginaDAO->buscarBi_pagina($_POST['codigo']);
		if(! empty($bi_pagina->getTempo_visivel_publico()))
		{
			$bi_pagina->setTempo_visivel_publico($bi_pagina->getTempo_visivel_publico());
			$bi_pagina->setData_ini_visivel_publico($bi_pagina->getData_ini_visivel_publico());
		}
	}
	
	$bi_pagina->setCodigo($_POST['codigo']);
	$bi_pagina->setNome($_POST['nome']);
	$bi_pagina->setArea($_POST['area']);
	$bi_pagina->setLayout($_POST['layout']);
	$bi_pagina->setLink_externo($_POST['linkExterno']);
	$pagina_codigo = "";
	if ($_POST['codigo'] != "")
	{
		$bi_pagina->setCodigo($_POST['codigo']);
		$pagina_codigo = $bi_pagina->getCodigo();
		try
		{
			$retorno["mensagem"] = "Alterado com sucesso!";
			$retorno["status"] = true;
			$bi_paginaDAO->atualizar($bi_pagina);
		}
		catch (Exception  $e)
		{
			$retorno["mensagem"] = $e->getMessage();
			$retorno["status"] = false;
		}
	}
	else
	{
		try
		{
			$retorno["mensagem"] = "Inserido com sucesso!";
			$retorno["status"] = true;
			$pagina_codigo = $bi_paginaDAO->salvar($bi_pagina);
		}
		catch (Exception  $e)
		{
			$retorno["mensagem"] = $e->getMessage();
			$retorno["status"] = false;
		}
	}
	//lista
	if(isset($_POST['listaAnalise']))
	{
		foreach($_POST['listaAnalise'] as $pagAnalise)
		{	
			$bi_pagina_analise = new Bi_pagina_analise();
			//$bi_pagina_analise->setCodigo($_POST['codigo']);
			$bi_pagina_analise->setPagina($pagina_codigo);
			if(str_contains($pagAnalise["analise"], "texto"))
			{
				$bi_pagina_analise->setAnalise("");
				$bi_pagina_analise->setTipo("texto");
			}
			elseif(str_contains($pagAnalise["analise"], "label"))
			{
				$bi_pagina_analise->setAnalise("");
				$bi_pagina_analise->setTipo("label");
			}
			elseif(str_contains($pagAnalise["analise"], "container"))
			{
				$bi_pagina_analise->setAnalise("");
				$bi_pagina_analise->setTipo("container");
			}
			else
			{
				$bi_pagina_analise->setTipo("analise");
				$bi_pagina_analise->setAnalise($pagAnalise["analise"]);
			}	
			$bi_pagina_analise->setAltura(str_replace("px","",$pagAnalise["altura"]));
			$bi_pagina_analise->setLargura(str_replace("px","",$pagAnalise["largura"]));
			$bi_pagina_analise->setLeft_fixo(str_replace("px","",$pagAnalise["left_fixo"]));
			$bi_pagina_analise->setTop_fixo(str_replace("px","",$pagAnalise["top_fixo"]));
			$bi_pagina_analise->setLinha($pagAnalise["linha"]);
			$bi_pagina_analise->setColuna($pagAnalise["coluna"]);
			$bi_pagina_analise->setTexto($pagAnalise["texto"]);
			$codigo = "";
			$a_codigo = explode('excluir_', $pagAnalise["codigo_analise_pagina"]);
			if(count($a_codigo) > 1 and $pagAnalise["codigo_analise_pagina"] != "" )
			{
				//excluir
				if($a_codigo[1] != "")
				{
					$bi_pagina_analise->setCodigo($a_codigo[1]);
					//echo " where codigo = ".$a_codigo[1];
					$bi_pagina_analiseDAO->excluir($bi_pagina_analiseDAO->buscarFiltro(" where codigo = ".$a_codigo[1])[0]);
					$retorno["mensagem"] = "Excluído com sucesso!";
					$retorno["status"] = true;
				}
			}
			elseif ($pagAnalise["codigo_analise_pagina"] != "")
			{
				$bi_pagina_analise->setCodigo($pagAnalise["codigo_analise_pagina"]);
				$codigo = $bi_pagina_analise->getCodigo();
				try
				{
					$retorno["mensagem"] = "Alterado com sucesso!";
					$retorno["status"] = true;
					$bi_pagina_analiseDAO->atualizar($bi_pagina_analise);
				}
				catch (Exception  $e)
				{
					$retorno["mensagem"] = $e->getMessage();
					$retorno["status"] = false;
				}
			}
			else
			{
				try
				{
					$retorno["mensagem"] = "Inserido com sucesso!";
					$retorno["status"] = true;
					$codigo = $bi_pagina_analiseDAO->salvar($bi_pagina_analise);
				}
				catch (Exception  $e)
				{
					$retorno["mensagem"] = $e->getMessage();
					$retorno["status"] = false;
				}
			}
			//deletar analises duplicadas
			$funcoes_bd = new Funcoes_bd();
			$delete = "delete pa from bi_pagina_analise pa
			join ( select analise, max(codigo) maxCod from bi_pagina_analise where pagina = ".$pagina_codigo." group by analise having count(1) > 1) dup 
			on dup.maxCod = codigo";
			$funcoes_bd->executarSql($delete, array());
			
		}
	}
	echo json_encode($retorno);
}	
elseif (isset($_GET["mod"]) && $_GET["mod"] == "lista_paginas")
{
	$entrouEmAlgumFiltro = false;
 	$where = " where 1=1";
	if(isset($_GET['codigo']) and $_GET["codigo"] != "" )
	{
		$where .= " and UPPER(codigo) like '%".strtoupper($_GET['codigo'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&codigo=".$_GET["codigo"]; 
	}
	if(isset($_POST['codigo']) and $_POST["codigo"] != "" )
	{
		$where .= " and UPPER(codigo) like '%".strtoupper($_POST['codigo'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&codigo=".$_POST["codigo"]; 
	}
	if(isset($_GET['nome']) and $_GET["nome"] != "" )
	{
		$where .= " and UPPER(nome) like '%".strtoupper($_GET['nome'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&nome=".$_GET["nome"]; 
	}
	if(isset($_POST['nome']) and $_POST["nome"] != "" )
	{
		$where .= " and UPPER(nome) like '%".strtoupper($_POST['nome'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&nome=".$_POST["nome"]; 
	}
	if(! $_SESSION["admin_bi"])
	{
		$listaArea = $bi_areaDAO->buscarFiltro(" where codigo in (SELECT p.area FROM bi_permissao_pagina pg 
				join bi_pagina p on p.codigo = pg.pagina
				join bi_usuario_grupo ug on ug.grupo = pg.grupo
				where ug.usuario = ".$_SESSION["id_usuario_bi"]."
				group by area)"); 
				 
		
	}
	else
	{
		$listaArea = $bi_areaDAO->buscarFiltro(" where codigo in (select area from bi_pagina group by area)"); 
	}
	//$listaBi_pagina = $bi_paginaDAO->buscarFiltro($where);
	include_once($config->diretorio_raiz()."/src/view/bi_pagina/Listar_todos_registros_user.php");
}
elseif (isset($_GET["mod"]) && $_GET["mod"] == "pagina_view")
{
	if ( (isset($_GET["codigo"]) and $_GET["codigo"] != "")  )
	{
		$bi_pagina = $bi_paginaDAO->buscarBi_pagina($_GET["codigo"]);
	}else{
		$bi_pagina = new Bi_pagina();
	}
	$listabi_pagina_analise = $bi_pagina_analiseDAO->buscarFiltro(" where pagina = '".$bi_pagina->getCodigo()."' order by linha, coluna "); //concat(top_fixo,' ' ,left_fixo)
	$lista_js_grid_editavelBi_pagina_analise = array();								
	foreach($listabi_pagina_analise as $item)			    
	{													
		array_push($lista_js_grid_editavelBi_pagina_analise, $item->getCodigo());	
	}			
	//$listaAnalise = $bi_analiseDAO->listarTodosRegistros(); 
	
	include_once($config->diretorio_raiz()."/src/view/bi_pagina/Pagina_view.php");
}
elseif (isset($_GET["mod"]) && $_GET["mod"] == "pagina_view_public")
{
	if ( (isset($_GET["codigo"]) and $_GET["codigo"] != "")  )
	{
		$bi_pagina = $bi_paginaDAO->buscarBi_pagina(decrypt($_GET["codigo"]));
	}else{
		$bi_pagina = new Bi_pagina();
	}
	$listabi_pagina_analise = $bi_pagina_analiseDAO->buscarFiltro(" where pagina = '".$bi_pagina->getCodigo()."' order by linha, coluna "); //concat(top_fixo,' ' ,left_fixo)
	$lista_js_grid_editavelBi_pagina_analise = array();								
	foreach($listabi_pagina_analise as $item)			    
	{													
		array_push($lista_js_grid_editavelBi_pagina_analise, $item->getCodigo());	
	}			
	//$listaAnalise = $bi_analiseDAO->listarTodosRegistros(); 	
	//validar horas vencimento página
	$dataAtual = new DateTime();
	$dataValid = clone $bi_pagina->getData_ini_visivel_publico();
	$dataValid->add(new DateInterval('PT'.explode(".",$bi_pagina->getTempo_visivel_publico())[0].'H'));
	
	if($dataAtual->format("YmdHi") >= $dataValid->format("YmdHi"))
	{
		include_once($config->diretorio_raiz()."/src/view/bi_pagina/Pagina_expirada.php");
		exit();
	}	
	include_once($config->diretorio_raiz()."/src/view/bi_pagina/Pagina_view.php");
}
elseif (isset($_GET["mod"]) && $_GET["mod"] == "gerar_link_publico")
{
	$dataAtual = new DateTime();
	$bi_pagina = $bi_paginaDAO->buscarBi_pagina(decrypt($_POST["codigo_rash"]));
	$bi_pagina->setArea($bi_pagina->getArea()->getCodigo());
	$bi_pagina->setTempo_visivel_publico($_POST["horas_validade"]);
	$bi_pagina->setData_ini_visivel_publico($dataAtual);
	try
	{
		$dataValid = clone $dataAtual;
		$dataValid->add(new DateInterval('PT'.trim($_POST["horas_validade"]).'H'));
		$retorno["validade"] = $dataValid->format("d/m/Y H:i");
		$retorno["mensagem"] = "Alterado com sucesso!";
		$retorno["status"] = true;
		$bi_paginaDAO->atualizar($bi_pagina);
	}
	catch (Exception  $e)
	{
		$retorno["mensagem"] = $e->getMessage();
		$retorno["status"] = false;
	}
	echo json_encode($retorno);
}
elseif (isset($_GET["mod"]) && $_GET["mod"] == "validar_link_publico")
{
	$retorno["status"] = false;
	$retorno["mensagem"] = "Inválido!";
	$dataAtual = new DateTime();
	$bi_pagina = $bi_paginaDAO->buscarBi_pagina(decrypt($_POST["codigo_rash"]));
	$dataValid = clone $bi_pagina->getData_ini_visivel_publico();
	$dataValid->add(new DateInterval('PT'.explode(".",$bi_pagina->getTempo_visivel_publico())[0].'H'));
	$retorno["validade"] = $dataValid->format("d/m/Y H:i");
	if($dataAtual->format("YmdHi") <= $dataValid->format("YmdHi"))
	{
		$retorno["mensagem"] = "Válido!";
		$retorno["status"] = true;
	}
	echo json_encode($retorno);
}