<?php
//ini_set('max_input_vars', 5000);
//ini_set('suhosin.post.max_vars', 5000);
//ini_set('suhosin.request.max_vars', 5000);		
include("Bi_analiseController.php");
if(isset($_SESSION["alterar_senha_proximo_login"]) and $_SESSION["alterar_senha_proximo_login"])
{
	exit();
}
require_once($config->diretorio_raiz()."/src/model/bd/BiDAO.php");
$biDAO = new BiDAO();
require_once($config->diretorio_raiz()."/src/model/bd/Bi_log_acessoDAO.php");
$bi_log_acessoDAO = new Bi_log_acessoDAO();
if(isset($_GET["mod"]) and $_GET["mod"] == "monta_filtro")
{
	$listaRelatorios = $biDAO->monta_filtro($_GET["analise"]);
	///log acesso
	//validar se o ultimo log foi maior que 15 minutos
	$dataAtualMenos15 = new DateTime();
	$dataAtualMenos15->modify('-15 minutes');
	$listaBi_log_acesso = $bi_log_acessoDAO->buscarFiltro(" 
	where analise = ".$_GET["analise"]." 
	and usuario = ".$_SESSION["id_usuario_bi"] . " 
	and data_acesso >= '".$dataAtualMenos15->format("Y-m-d H:i:s")."' ");
	//echo $dataAtualMenos15->format("Y-m-d H:i:s");
	if(count($listaBi_log_acesso) ==0)
	{
		$bi_log_acesso = new Bi_log_acesso();
		$bi_log_acesso->setUsuario($_SESSION["id_usuario_bi"]);
		$bi_log_acesso->setAnalise($_GET["analise"]);
		//$bi_log_acesso->setPagina($_POST['pagina']);
		$bi_log_acesso->setData_acesso(new DateTime());
		$bi_log_acessoDAO->salvar($bi_log_acesso);
	}
}	
elseif(isset($_GET["mod"]) and $_GET["mod"] == "executar")
{
	
	/*codigo para deixar abortar a sessao*/
	session_write_close();//to make flush work	
	/*if(isset($_SESSION["stmtAtual_anterior"]) and $_SESSION["stmtAtual_anterior"] != null)
	{
		
		//encerra conexao com banco
		$pids = $_SESSION["stmtAtual_anterior"]->fetchAll(PDO::FETCH_COLUMN, 0);
		foreach ($pid as $pids) {
			//echo "id banco ".$pid;
			//$biDAO->conexaoAtual->query('KILL CONNECTION_ID()');
			$_SESSION["conexao_anterior"]->query('KILL ' . $pid);
		}	
		$_SESSION["stmtAtual_anterior"]	= null;
		$_SESSION["conexao_anterior"]	= null;
	}
	while (connection_status() !== 0) //this will work if the connection is properly shutdown
	{	
		//tentativa para encerrar a conexao no banco mais não funciona
		$content = "TESTEKILL";
		$fp = fopen( "TESTEKILL.txt","wb");
		fwrite($fp,$content);
		fclose($fp);
		if(connection_aborted())
		{
			if($biDAO->stmtAtual != null)
			{
				
				//encerra conexao com banco
				$pids = $biDAO->stmtAtual->fetchAll(PDO::FETCH_COLUMN, 0);
				foreach ($pid as $pids) {
					//echo "id banco ".$pid;
					//$biDAO->conexaoAtual->query('KILL CONNECTION_ID()');
					$biDAO->conexaoAtual->query('KILL ' . $pid);
				}		
			}
			
			sleep(1);
			echo "abortado";
			ob_flush();
			flush();
		}
	}*/
	/*session_write_close();//to make flush work
	while (connection_status() !== 0) {//this will work if the connection is properly shutdown
									   //or if it is simply disconnected...
	  sleep(1);
	  echo "abortado";
	  ob_flush();
	  flush();
	}*/
	/*fim*/
	$retorno = array();
	$listaRelatorios = $biDAO->monta_analise($_GET["analise"], $_POST);
	
	/*try
	{
		$listaRelatorios = $biDAO->monta_analise($_GET["analise"], $_POST);
	}
	catch (Exception  $e)
	{
		$retorno["mensagem"] = "Análise ".$_GET["analise"]." Erro na query: ".$e->getMessage();
		$retorno["erro"] = true;
		echo json_encode($retorno);
	}*/
	
}	
elseif(isset($_GET["mod"]) and $_GET["mod"] == "analisar_colunas_query")
{
	$possui_filtro = false;
	if($_POST["possui_filtro"] == "1")
	{
		$possui_filtro = true;
	}
	$listaFiltro = array();
	if(isset($_POST['lista_filtros']))
	{
		$listaFiltro = $_POST['lista_filtros'];
	}
	$retorno = array();
	try
	{
		$retorno["status"] = true;
		$retorno["lista_colunas"] = $biDAO->analisar_colunas_query($_POST["query"], $_POST["codigo_analise"], $_POST["codigo_conexao"], $possui_filtro, $listaFiltro);
	}
	catch (Exception  $e)
	{
		$retorno["mensagem"] = "Erro na query: ".$e->getMessage();
		$retorno["status"] = false;
	}
	echo json_encode($retorno);
}
elseif(isset($_GET["mod"]) and $_GET["mod"] == "salvar_analise")
{
	//echo $_POST["nome"]." ".$_POST["query"];
	$retorno = array();
	$bi_analise = new Bi_analise();
	$bi_analise->setCodigo($_POST['codigo']);
	$bi_analise->setNome($_POST['nome']);
	$bi_analise->setDescricao($_POST['nome']);
	$bi_analise->setQuery($_POST['query']);
	$bi_analise->setColuna_analise_vertical($_POST['coluna_vertical']);
	$bi_analise->setColunas_informarcao_analise_vertical($_POST['colunas_view_vertical']);
	$bi_analise->setColunas_valores_analise_vertical($_POST['colunas_valores_vertical']);
	$bi_analise->setColunas_quebrar_parcial_analise_vertical($_POST['colunas_quebrar_parcial_analise_vertical']);
	$bi_analise->setColunas_quebrar_media_parcial_analise_vertical($_POST['colunas_quebrar_media_parcial_analise_vertical']);
	$bi_analise->setColunas_total_analise_vertical($_POST['colunas_total_analise_vertical']);
	$bi_analise->setColunas_media_analise_vertical($_POST['colunas_media_analise_vertical']);
	if(isset($_POST['colunas_valores_soma_parcial']))
	{
		$bi_analise->setColunas_valores_soma_parcial($_POST['colunas_valores_soma_parcial']);
		$bi_analise->setColunas_valores_media_parcial($_POST['colunas_valores_media_parcial']);
	}
	if(isset($_POST['cor']))
	{
		$bi_analise->setCor_widget($_POST['cor']);
	}
	if(isset($_POST['icone']))
	{
		$bi_analise->setIcone_widget($_POST['icone']);
	}
	if(isset($_POST['json_cor_dinamica_widget']) and count($_POST['json_cor_dinamica_widget']) > 0)
	{
		$bi_analise->setJson_cor_dinamica_widget(json_encode($_POST['json_cor_dinamica_widget']));
	}
	else
	{
		$bi_analise->setJson_cor_dinamica_widget(null);
	}
	if(isset($_POST['colunas_valores_ocultas_para_calculo']) )
	{
		$bi_analise->setColunas_valores_ocultas_para_calculo($_POST['colunas_valores_ocultas_para_calculo']);
	}
	if(isset($_POST['titulo_widget_grafico']) )
	{
		$bi_analise->setTitulo_widget_grafico($_POST['titulo_widget_grafico']);
	}
	if(isset($_POST['conexao']) )
	{
		$bi_analise->setConexao($_POST['conexao']);
	}
	if(isset($_POST['unidade_widget']) )
	{
		$bi_analise->setUnidade_widget($_POST['unidade_widget']);
	}
	if(isset($_POST['coluna_latitude']) )
	{
		$bi_analise->setColuna_latitude($_POST['coluna_latitude']);
	}
	if(isset($_POST['coluna_longitude']) )
	{
		$bi_analise->setColuna_longitude($_POST['coluna_longitude']);
	}
	if(isset($_POST['tipo_coluna_lat_lng']) )
	{
		$bi_analise->setTipo_coluna_lat_lng($_POST['tipo_coluna_lat_lng']);
	}
	if(isset($_POST['tipo_view_mapa']) )
	{
		$bi_analise->setTipo_view_mapa($_POST['tipo_view_mapa']);
	}
	if(isset($_POST['modelo_dados']) )
	{
		$bi_analise->setModelo_dados($_POST['modelo_dados']);
	}
	if(isset($_POST['area']))
	{
		$bi_analise->setArea($_POST['area']);
	}
	if (isset($_POST['exibir_em_analise']))
	{
		$bi_analise->setExibir_em_analise($_POST['exibir_em_analise']);
	}
	else
	{
		$bi_analise->setExibir_em_analise("0");
	}
	if(isset($_POST['colunas_sequencia_ordenacao']))
	{
		$bi_analise->setColunas_sequencia_ordenacao($_POST['colunas_sequencia_ordenacao']);
	}
	
	
	$retorno["codigo"] = $_POST['codigo'];
	$codigo_analise  = $_POST['codigo'];
	if(isset($_POST['grafico']))
	{
		$bi_analise->setGrafico($_POST['grafico']);
	}
	if (isset($_POST['codigo']) and $_POST['codigo'] != "")
	{
		$bi_analisePersistida = $bi_analiseDAO->buscarBi_analise($_POST["codigo"]);
		if(! (isset($_POST['json_cor_dinamica_widget']) and count($_POST['json_cor_dinamica_widget']) > 0) and $_GET["mod"] != "salvar_cores_tab_analise")
		{
			$bi_analise->setJson_cor_dinamica_widget($bi_analisePersistida->getJson_cor_dinamica_widget());
		}
		
	
		$bi_analise->setCodigo($_POST['codigo']);
		$codigo = $bi_analise->getCodigo();
		try
		{
			$retorno["mensagem"] = "Alterado com sucesso!";
			$retorno["status"] = true;
			$bi_analiseDAO->atualizar($bi_analise);
		}
		catch (Exception  $e)
		{
			$retorno["mensagem"] = $e->getMessage();
			$retorno["status"] = false;
		}
	}
	else
	{
		try
		{
			$retorno["mensagem"] = "Inserido com sucesso!";
			$retorno["status"] = true;
			$retorno["codigo"] = $bi_analiseDAO->salvar($bi_analise);
			$codigo_analise  = $retorno["codigo"];
		}
		catch (Exception  $e)
		{
			$retorno["mensagem"] = $e->getMessage();
			$retorno["status"] = false;
		}
	}
	
	if($codigo_analise == null or $codigo_analise == "")
	{
		$listaBi_analiseInc = $bi_analiseDAO->buscarFiltro(" where nome = '".$_POST['nome']."' and data_inclusao = '".$dateData_inclusao->format("Y-m-d H:i:s")."' ");
		foreach($listaBi_analiseInc  as $bi_analiseInc)
		{
			$retorno["codigo"] = $bi_analiseInc->getCodigo();
			$codigo_analise  = $bi_analiseInc->getCodigo();
		}
	}
	
	if(isset($_POST['colunas']))
	{
		$colunas = $_POST['colunas'];
		foreach($colunas as $coluna)
		{
			$bi_coluna_analise = new Bi_coluna_analise();
			$bi_coluna_analise->setCodigo($coluna['codigo']);
			$bi_coluna_analise->setColuna($coluna['nome']);
			$bi_coluna_analise->setTipo($coluna['id_tipo_dado']);
			$bi_coluna_analise->setApelido($coluna['apelido']);
			
			$bi_coluna_analise->setAnalise($codigo_analise);
			//echo "oculto ".$coluna['oculto'];
			//exit();
			if (isset($coluna['oculto']) and $coluna['oculto'] == "true")
			{
				$bi_coluna_analise->setOculto("1");
			}
			else
			{
				$bi_coluna_analise->setOculto("0");
			}
			
			if (isset($coluna['utilizada_para_calculo']) and $coluna['utilizada_para_calculo'] == "true")
			{
				$bi_coluna_analise->setUtilizada_para_calculo("1");
			}
			else
			{
				$bi_coluna_analise->setUtilizada_para_calculo("0");
			}
			$bi_coluna_analise->setMascara($coluna['mascara']);
			$bi_coluna_analise->setAgregacao($coluna['cod_agregacao']);
			$bi_coluna_analise->setCodigo($coluna['codigo']);
			$bi_coluna_analise->setOrdenacao($coluna['ordenar']);
			if (isset($coluna['regra_calculada']) )
			{
				$bi_coluna_analise->setRegra_calculada($coluna['regra_calculada']);
			}
			if (isset($coluna['remover']) and $coluna['remover'] == "true")
			{
				if ($coluna["codigo"] != "")
				{
					$bi_coluna_analise = $bi_coluna_analiseDAO->buscarBi_coluna_analise($coluna["codigo"]);
					$bi_coluna_analiseDAO->excluir($bi_coluna_analise);
				}
			}
			else
			{
				$codigo = "";
				if ($coluna["codigo"] != "")
				{
					
					$codigo = $bi_coluna_analise->getCodigo();
					try
					{
						$retorno["mensagem"] = "Alterado com sucesso!";
						$retorno["status"] = true;
						$bi_coluna_analiseDAO->atualizar($bi_coluna_analise);
					}
					catch (Exception  $e)
					{
						$retorno["mensagem"] = $e->getMessage();
						$retorno["status"] = false;
					}
				}
				else
				{
					try
					{
						$retorno["mensagem"] = "Inserido com sucesso!";
						$retorno["status"] = true;
						$codigo = $bi_coluna_analiseDAO->salvar($bi_coluna_analise);
					}
					catch (Exception  $e)
					{
						$retorno["mensagem"] = $e->getMessage();
						$retorno["status"] = false;
					}
				}
			}
		}
	}
	if(isset($_POST['lista_filtros']))
	{
		$listaFiltro = $_POST['lista_filtros'];
		foreach($listaFiltro as $filtro)
		{
			$bi_filtro = new Bi_filtro();
			$bi_filtro->setCodigo($filtro["codigo"]);
			$bi_filtro->setAnalise($codigo_analise); 
			$bi_filtro->setTipo($filtro["tipo"]);
			$bi_filtro->setId($filtro["id"]);
			$bi_filtro->setDescricao($filtro["descricao"]);
			$bi_filtro->setObrigatorio($filtro["obrigatorio"]);
			$bi_filtro->setTabela_buscar($filtro["tabela_buscar"]);
			$bi_filtro->setColuna_buscar($filtro["coluna_buscar"]);
			$bi_filtro->setTipo_calculo_data($filtro["tipo_calculo_data_filtro"]);
			$bi_filtro->setValor_calculo_data($filtro["valor_calculo_data_filtro"]);
			$bi_filtro->setTipo_dia_calculo_data($filtro["tipo_dia_data_filtro"]);
			$a_codigo = explode('excluir_', $filtro["codigo"]);
			if(count($a_codigo) > 1 and $filtro["codigo"] != "" )
			{
				//excluir
				$bi_filtro->setCodigo($a_codigo[1]);
				$bi_filtroDAO->excluir($bi_filtroDAO->buscarBi_filtro($a_codigo[1]));
			}
			elseif ( $filtro["codigo"] != "" )
			{
				try
				{
					$retorno["status"] = true;
					$bi_filtroDAO->atualizar($bi_filtro);
				}
				catch (Exception  $e)
				{
					$retorno["mensagem"] = $e->getMessage();
					$retorno["status"] = false;
				}
			}
			else
			{
				try
				{
					$retorno["status"] = true;
					$bi_filtroDAO->salvar($bi_filtro);
				}
				catch (Exception  $e)
				{
					$retorno["mensagem"] = 'Erro no filtro id '.$filtro->id.' '.$e->getMessage();
					$retorno["status"] = false;
				}
			}
		}
	}
	echo json_encode($retorno);
}
elseif(isset($_GET["mod"]) and $_GET["mod"] == "form_analise")
{
	if ( (isset($_GET["codigo"]) and $_GET["codigo"] != "")  )
	{
		$bi_analise = $bi_analiseDAO->buscarBi_analise($_GET["codigo"]);
	}else{
		$bi_analise = new Bi_analise();
		$bi_analise->setGrafico(new Bi_tipo_grafico());
		$bi_analise->setConexao(new Bi_conexao());
		$bi_analise->setModelo_dados(new Bi_modelo_dados());
		$bi_analise->setArea(new Bi_area());
	}
	$listabi_filtro = $bi_filtroDAO->buscarFiltro(" where analise = '".$bi_analise->getCodigo()."'"); 
	$listaConexao = $bi_conexaoDAO->listarTodosRegistros(); 	
	$listaModelo_dados = $bi_modelo_dadosDAO->listarTodosRegistros();
	$listaArea = $bi_areaDAO->listarTodosRegistros(); 	
	include_once($config->diretorio_raiz()."/src/view/bi_analise/Criar_analise_query.php");
}
elseif(isset($_GET["mod"]) and $_GET["mod"] == "form_grafico")
{
	$listaGrafico = $bi_tipo_graficoDAO->listarTodosRegistros(); 
	if ( (isset($_GET["codigo"]) and $_GET["codigo"] != "")  )
	{
		$bi_analise = $bi_analiseDAO->buscarBi_analise($_GET["codigo"]);
	}else{
		$bi_analise = new Bi_analise();
		$bi_analise->setGrafico(new Bi_tipo_grafico());
		$bi_analise->setConexao(new Bi_conexao());
		$bi_analise->setModelo_dados(new Bi_modelo_dados());
		$bi_analise->setArea(new Bi_area());
	}
	$listaGrafico = $bi_tipo_graficoDAO->listarTodosRegistros(); 
	$listaConexao = $bi_conexaoDAO->listarTodosRegistros(); 
	$listaModelo_dados = $bi_modelo_dadosDAO->listarTodosRegistros(); 
	$listaArea = $bi_areaDAO->listarTodosRegistros(); 
	if (isset($_GET["grafico"]) and $_GET["grafico"] != "")
	{
		$bi_analise->setGrafico($bi_tipo_graficoDAO->buscarBi_tipo_grafico($_GET["grafico"]));
		$campo_buscar = "&grafico=".$_GET["grafico"]; 
	}
	$listabi_filtro = $bi_filtroDAO->buscarFiltro(" where analise = '".$bi_analise->getCodigo()."'"); 
	include_once($config->diretorio_raiz()."/src/view/bi_analise/Criar_grafico_query.php");
}
elseif(isset($_GET["mod"]) and $_GET["mod"] == "form_widget")
{
	$listaGrafico = $bi_tipo_graficoDAO->listarTodosRegistros();
	if ( (isset($_GET["codigo"]) and $_GET["codigo"] != "")  )
	{
		$bi_analise = $bi_analiseDAO->buscarBi_analise($_GET["codigo"]);
	}else{
		$bi_analise = new Bi_analise();
		$bi_analise->setGrafico(new Bi_tipo_grafico());
		$bi_analise->setConexao(new Bi_conexao());
		$bi_analise->setModelo_dados(new Bi_modelo_dados());
		$bi_analise->setArea(new Bi_area());
	}
	$listaGrafico = $bi_tipo_graficoDAO->listarTodosRegistros();
	$listaConexao = $bi_conexaoDAO->listarTodosRegistros(); 	
	$listaModelo_dados = $bi_modelo_dadosDAO->listarTodosRegistros(); 
	$listaArea = $bi_areaDAO->listarTodosRegistros(); 
	if (isset($_GET["grafico"]) and $_GET["grafico"] != "")
	{
		$bi_analise->setGrafico($bi_tipo_graficoDAO->buscarBi_tipo_grafico($_GET["grafico"]));
		$campo_buscar = "&grafico=".$_GET["grafico"]; 
	}
	$listabi_filtro = $bi_filtroDAO->buscarFiltro(" where analise = '".$bi_analise->getCodigo()."'"); 
	include_once($config->diretorio_raiz()."/src/view/bi_analise/Criar_widget_query.php");
}
elseif(isset($_GET["mod"]) and $_GET["mod"] == "form_mapa")
{
	$listaGrafico = $bi_tipo_graficoDAO->listarTodosRegistros();
	if ( (isset($_GET["codigo"]) and $_GET["codigo"] != "")  )
	{
		$bi_analise = $bi_analiseDAO->buscarBi_analise($_GET["codigo"]);
	}else{
		$bi_analise = new Bi_analise();
		$bi_analise->setGrafico(new Bi_tipo_grafico());
		$bi_analise->setConexao(new Bi_conexao());
		$bi_analise->setModelo_dados(new Bi_modelo_dados());
		$bi_analise->setArea(new Bi_area());
	}
	$listaGrafico = $bi_tipo_graficoDAO->listarTodosRegistros();
	$listaConexao = $bi_conexaoDAO->listarTodosRegistros(); 	
	$listaModelo_dados = $bi_modelo_dadosDAO->listarTodosRegistros(); 
	$listaArea = $bi_areaDAO->listarTodosRegistros(); 
	if (isset($_GET["grafico"]) and $_GET["grafico"] != "")
	{
		$bi_analise->setGrafico($bi_tipo_graficoDAO->buscarBi_tipo_grafico($_GET["grafico"]));
		$campo_buscar = "&grafico=".$_GET["grafico"]; 
	}
	$listabi_filtro = $bi_filtroDAO->buscarFiltro(" where analise = '".$bi_analise->getCodigo()."'"); 
	include_once($config->diretorio_raiz()."/src/view/bi_analise/Criar_mapa_query.php");
}
elseif (isset($_GET["mod"]) && ($_GET["mod"] == "filtro_user" or $_GET["mod"] == "filtro_analise") )
{
	if ( (isset($_GET["codigo"]) and $_GET["codigo"] != "")  )
	{
		$bi_analise = $bi_analiseDAO->buscarBi_analise($_GET["codigo"]);
	}else{
		$bi_analise = new Bi_analise();
		$bi_analise->setGrafico(new Bi_tipo_grafico());
		$bi_analise->setConexao(new Bi_conexao());
	}
	$listaGrafico = $bi_tipo_graficoDAO->listarTodosRegistros(); 
	$listaConexao = $bi_conexaoDAO->listarTodosRegistros(); 
	$listaArea = $bi_areaDAO->listarTodosRegistros(); 
	if (isset($_GET["grafico"]) and $_GET["grafico"] != "")
	{
		$bi_analise->setGrafico($bi_tipo_graficoDAO->buscarBi_tipo_grafico($_GET["grafico"]));
		$campo_buscar = "&grafico=".$_GET["grafico"]; 
	}
	if($_GET["mod"] == "filtro_user")
	{
		include_once($config->diretorio_raiz()."/src/view/bi_analise/Filtro_lista_registros_user.php");
	}
	else
	{
		include_once($config->diretorio_raiz()."/src/view/bi_analise/Filtro_lista_registros_analises.php");
	}
}
elseif (isset($_GET["mod"]) && ($_GET["mod"] == "busca_por_campo_filtro_user" or $_GET["mod"] == "busca_por_campo_filtro_analise"))
{
	$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(isset($_GET['descricao']) and $_GET["descricao"] != "" )
	{
		$where .= " and UPPER(descricao) like '%".strtoupper($_GET['descricao'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&descricao=".$_GET["descricao"]; 
	}
	if(isset($_POST['descricao']) and $_POST["descricao"] != "" )
	{
		$where .= " and UPPER(descricao) like '%".strtoupper($_POST['descricao'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&descricao=".$_POST["descricao"]; 
	}
	if(isset($_GET['query']) and $_GET["query"] != "" )
	{
		$where .= " and UPPER(query) like '%".strtoupper($_GET['query'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&query=".$_GET["query"]; 
	}
	if(isset($_POST['query']) and $_POST["query"] != "" )
	{
		$where .= " and UPPER(query) like '%".strtoupper($_POST['query'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&query=".$_POST["query"]; 
	}
	if(isset($_GET['data_inclusaoIni']) and $_GET['data_inclusaoIni'] != "" and $_GET['data_inclusaoFim'] != "")
	{
		$dateIni = DateTime::createFromFormat('d/m/Y H:i', $_GET['data_inclusaoIni']);
		$dateFim = DateTime::createFromFormat('d/m/Y H:i', $_GET['data_inclusaoFim']);
		$where .= " and data_inclusao >= '".$dateIni->format('Y-m-d H:i').''."'";
		$where .= " and data_inclusao <= '".$dateFim->format('Y-m-d H:i').''."'";
		$entrouEmAlgumFiltro = true;
	}
	if(isset($_POST['data_inclusaoIni']) and $_POST['data_inclusaoIni'] != "" and $_POST['data_inclusaoFim'] != "")
	{
		$dateIni = DateTime::createFromFormat('d/m/Y H:i', $_POST['data_inclusaoIni']);
		$dateFim = DateTime::createFromFormat('d/m/Y H:i', $_POST['data_inclusaoFim']);
		$where .= " and data_inclusao >= '".$dateIni->format('Y-m-d H:i').''."'";
		$where .= " and data_inclusao <= '".$dateFim->format('Y-m-d H:i').''."'";
		$entrouEmAlgumFiltro = true;
	}
	if(isset($_GET['log']) and $_GET["log"] != "" )
	{
		$where .= " and UPPER(log) like '%".strtoupper($_GET['log'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&log=".$_GET["log"]; 
	}
	if(isset($_POST['log']) and $_POST["log"] != "" )
	{
		$where .= " and UPPER(log) like '%".strtoupper($_POST['log'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&log=".$_POST["log"]; 
	}
	if(isset($_GET['grafico']) and $_GET['grafico'] != "")
	{
		$where .= " and grafico = ". $_GET['grafico'];
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&grafico=".$_GET["grafico"]; 
	}
	if(isset($_POST['grafico']) and $_POST['grafico'] != "")
	{
		$where .= " and grafico = ". $_POST['grafico'];
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&grafico=".$_POST["grafico"]; 
	}
	if(isset($_GET['coluna_analise_vertical']) and $_GET["coluna_analise_vertical"] != "" )
	{
		$where .= " and UPPER(coluna_analise_vertical) like '%".strtoupper($_GET['coluna_analise_vertical'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&coluna_analise_vertical=".$_GET["coluna_analise_vertical"]; 
	}
	if(isset($_POST['coluna_analise_vertical']) and $_POST["coluna_analise_vertical"] != "" )
	{
		$where .= " and UPPER(coluna_analise_vertical) like '%".strtoupper($_POST['coluna_analise_vertical'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&coluna_analise_vertical=".$_POST["coluna_analise_vertical"]; 
	}
	if(isset($_GET['colunas_informarcao_analise_vertical']) and $_GET["colunas_informarcao_analise_vertical"] != "" )
	{
		$where .= " and UPPER(colunas_informarcao_analise_vertical) like '%".strtoupper($_GET['colunas_informarcao_analise_vertical'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&colunas_informarcao_analise_vertical=".$_GET["colunas_informarcao_analise_vertical"]; 
	}
	if(isset($_POST['colunas_informarcao_analise_vertical']) and $_POST["colunas_informarcao_analise_vertical"] != "" )
	{
		$where .= " and UPPER(colunas_informarcao_analise_vertical) like '%".strtoupper($_POST['colunas_informarcao_analise_vertical'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&colunas_informarcao_analise_vertical=".$_POST["colunas_informarcao_analise_vertical"]; 
	}
	if(isset($_GET['colunas_valores_analise_vertical']) and $_GET["colunas_valores_analise_vertical"] != "" )
	{
		$where .= " and UPPER(colunas_valores_analise_vertical) like '%".strtoupper($_GET['colunas_valores_analise_vertical'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&colunas_valores_analise_vertical=".$_GET["colunas_valores_analise_vertical"]; 
	}
	if(isset($_POST['colunas_valores_analise_vertical']) and $_POST["colunas_valores_analise_vertical"] != "" )
	{
		$where .= " and UPPER(colunas_valores_analise_vertical) like '%".strtoupper($_POST['colunas_valores_analise_vertical'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&colunas_valores_analise_vertical=".$_POST["colunas_valores_analise_vertical"]; 
	}
	if(isset($_GET['colunas_quebrar_parcial_analise_vertical']) and $_GET["colunas_quebrar_parcial_analise_vertical"] != "" )
	{
		$where .= " and UPPER(colunas_quebrar_parcial_analise_vertical) like '%".strtoupper($_GET['colunas_quebrar_parcial_analise_vertical'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&colunas_quebrar_parcial_analise_vertical=".$_GET["colunas_quebrar_parcial_analise_vertical"]; 
	}
	if(isset($_POST['colunas_quebrar_parcial_analise_vertical']) and $_POST["colunas_quebrar_parcial_analise_vertical"] != "" )
	{
		$where .= " and UPPER(colunas_quebrar_parcial_analise_vertical) like '%".strtoupper($_POST['colunas_quebrar_parcial_analise_vertical'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&colunas_quebrar_parcial_analise_vertical=".$_POST["colunas_quebrar_parcial_analise_vertical"]; 
	}
	if(isset($_GET['area']) and $_GET['area'] != "")
	{
		$where .= " and area = ". $_GET['area'];
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&area=".$_GET["area"]; 
	}
	if(isset($_POST['area']) and $_POST['area'] != "")
	{
		$where .= " and area = ". $_POST['area'];
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&area=".$_POST["area"]; 
	}
	if(isset($_GET['exibir_em_analise']) and $_GET["exibir_em_analise"] != "" )
	{
		$where .= " and UPPER(exibir_em_analise) like '%".strtoupper($_GET['exibir_em_analise'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&exibir_em_analise=".$_GET["exibir_em_analise"]; 
	}
	if(isset($_POST['exibir_em_analise']) and $_POST["exibir_em_analise"] != "" )
	{
		$where .= " and UPPER(exibir_em_analise) like '%".strtoupper($_POST['exibir_em_analise'])."%'";
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&exibir_em_analise=".$_POST["exibir_em_analise"]; 
	}
	if(isset($_GET['conexao']) and $_GET['conexao'] != "")
	{
		$where .= " and conexao = ". $_GET['conexao'];
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&conexao=".$_GET["conexao"]; 
	}
	if(isset($_POST['conexao']) and $_POST['conexao'] != "")
	{
		$where .= " and conexao = ". $_POST['conexao'];
		$entrouEmAlgumFiltro = true;
		$campo_buscar = "&conexao=".$_POST["conexao"]; 
	}
	if($_GET["mod"] == "busca_por_campo_filtro_analise")
	{
		$where .= " and exibir_em_analise = 1";
		//analises permitidas por grupo permissão
		if(! $_SESSION["admin_bi"])
		{
			$where .= " and codigo in (SELECT analise FROM bi_permissao_analise pa 
					join bi_usuario_grupo ug on ug.grupo = pa.grupo
					where ug.usuario = ".$_SESSION["id_usuario_bi"]." and visualizar = 1)";
		}
	}
	$listaBi_analise = $bi_analiseDAO->buscarFiltro($where." order by codigo");
	if($_GET["mod"] == "busca_por_campo_filtro_user")
	{
		include_once($config->diretorio_raiz()."/src/view/bi_analise/Listar_todos_registros_user.php");
	}
	else
	{
		include_once($config->diretorio_raiz()."/src/view/bi_analise/Listar_todos_registros_analise.php");
	}
}
elseif (isset($_GET["mod"]) && $_GET["mod"] == "formulario_cores")
{
	$bi_coluna_analiseDAO = new Bi_coluna_analiseDAO(); 
	$bi_analise = $bi_analiseDAO->buscarBi_analise($_GET["codigo"]);
	$listabi_coluna_analise = $bi_coluna_analiseDAO->buscarFiltro(" where analise = '".$_GET["codigo"]."'"); 
	include_once($config->diretorio_raiz()."/src/view/bi_analise/Formulario_cores.php");
}
elseif (isset($_GET["mod"]) && $_GET["mod"] == "formulario_colunas")
{
	$bi_coluna_analiseDAO = new Bi_coluna_analiseDAO(); 
	$bi_analise = $bi_analiseDAO->buscarBi_analise($_GET["codigo"]);
	$listabi_coluna_analise = $bi_coluna_analiseDAO->buscarFiltro(" where analise = '".$_GET["codigo"]."'"); 
	include_once($config->diretorio_raiz()."/src/view/bi_analise/Formulario_colunas.php");
}
elseif (isset($_GET["mod"]) && $_GET["mod"] == "salvar_cores_tab_analise")
{
	$funcoes_bd = new Funcoes_bd();
	$inputs = array();
	//validar se tem permissão alterar na analise
	if(! validaSeTemPermissaoAlterarAnalise($_POST['codigo_analise']))
	{
		$retorno["mensagem"] = "Sem permissão!";
		$retorno["status"] = false;
		echo json_encode($retorno);
		exit();
	}
	if(isset($_POST['lista_cor_dinamica']) and count($_POST['lista_cor_dinamica']) > 0)
	{
		//echo json_encode($_POST['lista_cor_dinamica']);
		//echo $funcoes_bd->escape(json_encode($_POST['lista_cor_dinamica']));
		$update = " update bi_analise set json_cor_dinamica_widget = ".$funcoes_bd->escape(json_encode($_POST['lista_cor_dinamica']))." 
		 where codigo = ".$_POST['codigo_analise'];
	}
	else
	{
		$update = " update bi_analise set json_cor_dinamica_widget = null 
		 where codigo = ".$_POST['codigo_analise'];
	}
	try
	{
		$retorno["status"] = true;
		$funcoes_bd->executarSql($update,$inputs);
	}
	catch (Exception  $e)
	{
		$retorno["mensagem"] = 'Erro '.$e->getMessage();
		$retorno["status"] = false;
	}
	echo json_encode($retorno);
}
elseif(isset($_GET["mod"]) and $_GET["mod"] == "prever_colunas_tab")
{
	
	/*codigo para deixar abortar a sessao*/
	session_write_close();//to make flush work	
	$retorno = array();
	$listaRelatorios = $biDAO->monta_analise($_POST["analise"], $_POST);	
	
}
elseif(isset($_GET["mod"]) and $_GET["mod"] == "alterar_analise_user")
{
	//validar se tem permissão alterar na analise
	if(! validaSeTemPermissaoAlterarAnalise($_POST['codigo']))
	{
		$retorno["mensagem"] = "Sem permissão!";
		$retorno["status"] = false;
		echo json_encode($retorno);
		exit();
	}
	///colocar calc: nas colunas calculadas
	
	//echo $_POST["nome"]." ".$_POST["query"];
	$bi_analise = new Bi_analise();
	$bi_analise = $bi_analiseDAO->buscarBi_analise($_POST["codigo"]);
	$retorno = array();
	
	$bi_analise->setCodigo($_POST['codigo']);
	$bi_analise->setNome($bi_analise->getNome());
	if(isset($_POST['nome']))
	{
		$bi_analise->setNome($_POST['nome']);
	}
	$bi_analise->setDescricao($bi_analise->getNome());
	if(isset($_POST['nome']))
	{
		$bi_analise->setDescricao($_POST['nome']);
	}
	$bi_analise->setQuery($bi_analise->getQuery());
	if(isset($_POST['query']))
	{
		$bi_analise->setQuery($_POST['query']);
	}
	$bi_analise->setColuna_analise_vertical($bi_analise->getColuna_analise_vertical());
	if(isset($_POST['coluna_vertical']))
	{
		$bi_analise->setColuna_analise_vertical($_POST['coluna_vertical']);
	}
	$bi_analise->setColunas_informarcao_analise_vertical($bi_analise->getColunas_informarcao_analise_vertical());
	if(isset($_POST['colunas_view_vertical']))
	{
		$bi_analise->setColunas_informarcao_analise_vertical($_POST['colunas_view_vertical']);
	}
	$bi_analise->setColunas_valores_analise_vertical($bi_analise->getColunas_valores_analise_vertical());
	if(isset($_POST['colunas_valores_vertical']))
	{
		$bi_analise->setColunas_valores_analise_vertical($_POST['colunas_valores_vertical']);
	}
	$bi_analise->setColunas_quebrar_parcial_analise_vertical($bi_analise->getColunas_quebrar_parcial_analise_vertical());
	if(isset($_POST['colunas_quebrar_parcial_analise_vertical']))
	{
		$bi_analise->setColunas_quebrar_parcial_analise_vertical($_POST['colunas_quebrar_parcial_analise_vertical']);
	}
	$bi_analise->setColunas_quebrar_media_parcial_analise_vertical($bi_analise->getColunas_quebrar_media_parcial_analise_vertical());
	if(isset($_POST['colunas_quebrar_media_parcial_analise_vertical']))
	{
		$bi_analise->setColunas_quebrar_media_parcial_analise_vertical($_POST['colunas_quebrar_media_parcial_analise_vertical']);
	}
	$bi_analise->setColunas_total_analise_vertical($bi_analise->getColunas_total_analise_vertical());
	if(isset($_POST['colunas_total_analise_vertical']))
	{
		$bi_analise->setColunas_total_analise_vertical($_POST['colunas_total_analise_vertical']);
	}
	$bi_analise->setColunas_media_analise_vertical($bi_analise->getColunas_media_analise_vertical());
	if(isset($_POST['colunas_media_analise_vertical']))
	{
		$bi_analise->setColunas_media_analise_vertical($_POST['colunas_media_analise_vertical']);
	}
	
	$bi_analise->setCor_widget($bi_analise->getCor_widget());
	$bi_analise->setIcone_widget($bi_analise->getIcone_widget());
	if(isset($_POST['cor']))
	{
		$bi_analise->setCor_widget($_POST['cor']);
		$bi_analise->setIcone_widget($_POST['icone']);
	}
	
	$bi_analise->setJson_cor_dinamica_widget($bi_analise->getJson_cor_dinamica_widget());
	if(isset($_POST['json_cor_dinamica_widget']) and count($_POST['json_cor_dinamica_widget']) > 0)
	{
		$bi_analise->setJson_cor_dinamica_widget(json_encode($_POST['json_cor_dinamica_widget']));
	}
	$bi_analise->setColunas_valores_ocultas_para_calculo($bi_analise->getColunas_valores_ocultas_para_calculo());
	if(isset($_POST['colunas_valores_ocultas_para_calculo']) )
	{
		$bi_analise->setColunas_valores_ocultas_para_calculo($_POST['colunas_valores_ocultas_para_calculo']);
	}
	$bi_analise->setTitulo_widget_grafico($bi_analise->getTitulo_widget_grafico());
	if(isset($_POST['titulo_widget_grafico']) )
	{
		$bi_analise->setTitulo_widget_grafico($_POST['titulo_widget_grafico']);
	}
	$bi_analise->setConexao($bi_analise->getConexao()->getCodigo());
	if(isset($_POST['conexao']) )
	{
		$bi_analise->setConexao($_POST['conexao']);
	}
	$bi_analise->setUnidade_widget($bi_analise->getUnidade_widget());
	if(isset($_POST['unidade_widget']) )
	{
		$bi_analise->setUnidade_widget($_POST['unidade_widget']);
	}
	$bi_analise->setColuna_latitude($bi_analise->getColuna_latitude());
	if(isset($_POST['coluna_latitude']) )
	{
		$bi_analise->setColuna_latitude($_POST['coluna_latitude']);
	}
	$bi_analise->setColuna_longitude($bi_analise->getColuna_longitude());
	if(isset($_POST['coluna_longitude']) )
	{
		$bi_analise->setColuna_longitude($_POST['coluna_longitude']);
	}
	$bi_analise->setTipo_coluna_lat_lng($bi_analise->getTipo_coluna_lat_lng());
	if(isset($_POST['tipo_coluna_lat_lng']) )
	{
		$bi_analise->setTipo_coluna_lat_lng($_POST['tipo_coluna_lat_lng']);
	}
	$bi_analise->setTipo_view_mapa($bi_analise->getTipo_view_mapa());
	if(isset($_POST['tipo_view_mapa']) )
	{
		$bi_analise->setTipo_view_mapa($_POST['tipo_view_mapa']);
	}
	$bi_analise->setModelo_dados($bi_analise->getModelo_dados()->getCodigo());
	if(isset($_POST['modelo_dados']) )
	{
		$bi_analise->setModelo_dados($_POST['modelo_dados']);
	}
	$bi_analise->setArea($bi_analise->getArea()->getCodigo());
	if(isset($_POST['area']))
	{
		$bi_analise->setArea($_POST['area']);
	}
	if(isset($_POST['colunas_valores_soma_parcial']))
	{
		$bi_analise->setColunas_valores_soma_parcial($_POST['colunas_valores_soma_parcial']);
		$bi_analise->setColunas_valores_media_parcial($_POST['colunas_valores_media_parcial']);
	}
	//$bi_analise->setExibir_em_analise($bi_analise->getExibir_em_analise());
	/*if (isset($_POST['exibir_em_analise']))
	{
		$bi_analise->setExibir_em_analise($_POST['exibir_em_analise']);
	}
	else
	{
		$bi_analise->setExibir_em_analise("0");
	}*/
	
	$retorno["codigo"] = $_POST['codigo'];
	$codigo_analise  = $_POST['codigo'];
	$bi_analise->setGrafico($bi_analise->getGrafico()->getCodigo());
	if(isset($_POST['grafico']))
	{
		$bi_analise->setGrafico($_POST['grafico']);
	}
	if (isset($_POST['codigo']) and $_POST['codigo'] != "")
	{
		$bi_analisePersistida = $bi_analiseDAO->buscarBi_analise($_POST["codigo"]);
		if(! (isset($_POST['json_cor_dinamica_widget']) and count($_POST['json_cor_dinamica_widget']) > 0))
		{
			$bi_analise->setJson_cor_dinamica_widget($bi_analisePersistida->getJson_cor_dinamica_widget());
		}
	
		$bi_analise->setCodigo($_POST['codigo']);
		$codigo = $bi_analise->getCodigo();
		try
		{
			$retorno["mensagem"] = "Alterado com sucesso!";
			$retorno["status"] = true;
			$bi_analiseDAO->atualizar($bi_analise);
		}
		catch (Exception  $e)
		{
			$retorno["mensagem"] = $e->getMessage();
			$retorno["status"] = false;
		}
	}
	else
	{
		try
		{
			$retorno["mensagem"] = "Inserido com sucesso!";
			$retorno["status"] = true;
			$retorno["codigo"] = $bi_analiseDAO->salvar($bi_analise);
		}
		catch (Exception  $e)
		{
			$retorno["mensagem"] = $e->getMessage();
			$retorno["status"] = false;
		}
	}
	
	if(isset($_POST['colunas']))
	{
		$colunas = $_POST['colunas'];
		foreach($colunas as $coluna)
		{
			$bi_coluna_analise = new Bi_coluna_analise();
			$bi_coluna_analise->setCodigo($coluna['codigo']);
			$bi_coluna_analise->setColuna($coluna['nome']);
			$bi_coluna_analise->setTipo($coluna['id_tipo_dado']);
			$bi_coluna_analise->setApelido($coluna['apelido']);
			
			$bi_coluna_analise->setAnalise($codigo_analise);
			//echo "oculto ".$coluna['oculto'];
			//exit();
			if (isset($coluna['oculto']) and $coluna['oculto'] == "true")
			{
				$bi_coluna_analise->setOculto("1");
			}
			else
			{
				$bi_coluna_analise->setOculto("0");
			}
			
			if (isset($coluna['utilizada_para_calculo']) and $coluna['utilizada_para_calculo'] == "true")
			{
				$bi_coluna_analise->setUtilizada_para_calculo("1");
			}
			else
			{
				$bi_coluna_analise->setUtilizada_para_calculo("0");
			}
			$bi_coluna_analise->setMascara($coluna['mascara']);
			$bi_coluna_analise->setAgregacao($coluna['cod_agregacao']);
			$bi_coluna_analise->setCodigo($coluna['codigo']);
			if (isset($coluna['ordenar']) )
			{
				$bi_coluna_analise->setOrdenacao($coluna['ordenar']);
			}
			if (isset($coluna['regra_calculada']) )
			{
				$bi_coluna_analise->setRegra_calculada($coluna['regra_calculada']);
			}
			$codigo = "";
			if ($coluna["codigo"] != "")
			{
				
				$codigo = $bi_coluna_analise->getCodigo();
				try
				{
					$retorno["mensagem"] = "Alterado com sucesso!";
					$retorno["status"] = true;
					$bi_coluna_analiseDAO->atualizar($bi_coluna_analise);
				}
				catch (Exception  $e)
				{
					$retorno["mensagem"] = $e->getMessage();
					$retorno["status"] = false;
				}
			}
			else
			{
				try
				{
					$retorno["mensagem"] = "Inserido com sucesso!";
					$retorno["status"] = true;
					$codigo = $bi_coluna_analiseDAO->salvar($bi_coluna_analise);
				}
				catch (Exception  $e)
				{
					$retorno["mensagem"] = $e->getMessage();
					$retorno["status"] = false;
				}
			}
		}
	}
	if(isset($_POST['lista_filtros']))
	{
		$listaFiltro = $_POST['lista_filtros'];
		foreach($listaFiltro as $filtro)
		{
			$bi_filtro = new Bi_filtro();
			$bi_filtro->setCodigo($filtro["codigo"]);
			$bi_filtro->setAnalise($codigo_analise); 
			$bi_filtro->setTipo($filtro["tipo"]);
			$bi_filtro->setId($filtro["id"]);
			$bi_filtro->setDescricao($filtro["descricao"]);
			$bi_filtro->setObrigatorio($filtro["obrigatorio"]);
			$bi_filtro->setTabela_buscar($filtro["tabela_buscar"]);
			$bi_filtro->setColuna_buscar($filtro["coluna_buscar"]);
			$bi_filtro->setTipo_calculo_data($filtro["tipo_calculo_data_filtro"]);
			$bi_filtro->setValor_calculo_data($filtro["valor_calculo_data_filtro"]);
			$bi_filtro->setTipo_dia_calculo_data($filtro["tipo_dia_data_filtro"]);
			$a_codigo = explode('excluir_', $filtro["codigo"]);
			if(count($a_codigo) > 1 and $filtro["codigo"] != "" )
			{
				//excluir
				$bi_filtro->setCodigo($a_codigo[1]);
				$bi_filtroDAO->excluir($bi_filtroDAO->buscarBi_filtro($a_codigo[1]));
			}
			elseif ( $filtro["codigo"] != "" )
			{
				try
				{
					$retorno["status"] = true;
					$bi_filtroDAO->atualizar($bi_filtro);
				}
				catch (Exception  $e)
				{
					$retorno["mensagem"] = $e->getMessage();
					$retorno["status"] = false;
				}
			}
			else
			{
				try
				{
					$retorno["status"] = true;
					$bi_filtroDAO->salvar($bi_filtro);
				}
				catch (Exception  $e)
				{
					$retorno["mensagem"] = 'Erro no filtro id '.$filtro->id.' '.$e->getMessage();
					$retorno["status"] = false;
				}
			}
		}
	}
	echo json_encode($retorno);
}
elseif(isset($_GET["mod"]) and $_GET["mod"] == "copiar_analise")
{
	//validar se ja existe analise com mesmo nome
	$listaBi_analise = $bi_analiseDAO->buscarFiltro(" where nome = '".$_POST["nome"]."' ");
	if(count($listaBi_analise) > 0)
	{
		$retorno["mensagem"] = 'Existe outra análise com esse nome!';
		$retorno["status"] = false;
	}
	else
	{
		$funcoes_bd = new Funcoes_bd();
		try
		{
			$insert = "insert into bi_analise (nome, descricao, query, data_inclusao, log, grafico, coluna_analise_vertical, colunas_informarcao_analise_vertical, colunas_valores_analise_vertical, colunas_quebrar_parcial_analise_vertical, cor_widget, icone_widget, json_cor_dinamica_widget, colunas_valores_ocultas_para_calculo, titulo_widget_grafico, conexao, unidade_widget, colunas_quebrar_media_parcial_analise_vertical, colunas_total_analise_vertical, colunas_media_analise_vertical, coluna_latitude, coluna_longitude, tipo_coluna_lat_lng, tipo_view_mapa, modelo_dados, area, exibir_em_analise )
			SELECT  '".$_POST["nome"]."' nome, descricao, query, data_inclusao, log, grafico, coluna_analise_vertical, colunas_informarcao_analise_vertical, colunas_valores_analise_vertical, colunas_quebrar_parcial_analise_vertical, cor_widget, icone_widget, json_cor_dinamica_widget, colunas_valores_ocultas_para_calculo, titulo_widget_grafico, conexao, unidade_widget, colunas_quebrar_media_parcial_analise_vertical, colunas_total_analise_vertical, colunas_media_analise_vertical, coluna_latitude, coluna_longitude, tipo_coluna_lat_lng, tipo_view_mapa, modelo_dados, area, exibir_em_analise 
			FROM bi_analise WHERE codigo = ".$_POST["codigo"];
			$funcoes_bd->executarSql($insert,$inputs = array());
			
			$insert = "insert into bi_colunas_totalizar (analise, nome_coluna, totalizar, media, colunas_quebra)
			SELECT  (select max(a.codigo) from bi_analise a where nome = '".$_POST["nome"]."') analise, nome_coluna, totalizar, media, colunas_quebra 
			FROM bi_colunas_totalizar WHERE analise = ".$_POST["codigo"];
			$funcoes_bd->executarSql($insert,$inputs = array());
			
			$insert = "insert into bi_coluna_analise (analise, coluna, tipo, oculto, mascara, utilizada_para_calculo, agregacao, apelido, regra_calculada)
			SELECT  (select max(a.codigo) from bi_analise a where nome = '".$_POST["nome"]."') analise, coluna, tipo, oculto, mascara, utilizada_para_calculo, agregacao, apelido, regra_calculada 
			FROM bi_coluna_analise WHERE analise = ".$_POST["codigo"];
			$funcoes_bd->executarSql($insert,$inputs = array());
			
			$insert = "insert into bi_conteudo_filtro (analise, id_filtro, tipo, conteudo)
			SELECT  (select max(a.codigo) from bi_analise a where nome = '".$_POST["nome"]."') analise, id_filtro, tipo, conteudo 
			FROM bi_conteudo_filtro WHERE analise = ".$_POST["codigo"];
			$funcoes_bd->executarSql($insert,$inputs = array());
			
			$insert = "insert into bi_filtro (analise, tipo, id, descricao, obrigatorio, tabela_buscar, coluna_buscar, tipo_calculo_data, valor_calculo_data, tipo_dia_calculo_data)
			SELECT  (select max(a.codigo) from bi_analise a where nome = '".$_POST["nome"]."') analise, tipo, id, descricao, obrigatorio, tabela_buscar, coluna_buscar, tipo_calculo_data, valor_calculo_data, tipo_dia_calculo_data
			FROM bi_filtro WHERE analise = ".$_POST["codigo"];
			$funcoes_bd->executarSql($insert,$inputs = array());
			
			$insert = "insert into bi_permissao_analise (analise, grupo, visualizar, alterar )
			SELECT  (select max(a.codigo) from bi_analise a where nome = '".$_POST["nome"]."') analise, grupo, visualizar, alterar 
			FROM bi_permissao_analise WHERE analise = ".$_POST["codigo"];
			$funcoes_bd->executarSql($insert,$inputs = array());
			
			$insert = "insert into bi_totalizar_por_quebra_linha (analise, coluna_totalizar, coluna_quebra, totalizar, media )
			SELECT  (select max(a.codigo) from bi_analise a where nome = '".$_POST["nome"]."') analise, coluna_totalizar, coluna_quebra, totalizar, media  
			FROM bi_totalizar_por_quebra_linha WHERE analise = ".$_POST["codigo"];
			$funcoes_bd->executarSql($insert,$inputs = array());
			$listaBi_analise = $bi_analiseDAO->buscarFiltro(" where nome = '".$_POST["nome"]."' ");
			foreach($listaBi_analise as $analisecopy)
			{
				$retorno["codigo"] = $analisecopy->getCodigo();
				$retorno["nome"] = $analisecopy->getNome();
			}
			$retorno["status"] = true;
			$retorno["mensagem"] = "ok";
			
		}
		catch (Exception  $e)
		{
			$retorno["mensagem"] = 'Erro '.$e->getMessage();
			$retorno["status"] = false;
		}
		
	}
	echo json_encode($retorno);
}
function validaSeTemPermissaoAlterarAnalise($codigo_analise)
{
	//validar se tem permissão alterar na analise
	$funcoes_bd = new Funcoes_bd();
	$altera = true;
	if(! $_SESSION["admin_bi"])
	{
		$altera = false;
		$sql = " SELECT analise, alterar FROM bi_permissao_analise pa 
				join bi_usuario_grupo ug on ug.grupo = pa.grupo
				where ug.usuario = ".$_SESSION["id_usuario_bi"]." and pa.analise =".$codigo_analise;
		$rows = $funcoes_bd->sql($sql);
		foreach($rows as $row)
		{
			if($row["alterar"] ==1)
			{
				$altera = true;
			}
		}
	}	
	return $altera;
}