<?php
require_once("../../../../config/config_dir_raiz.php");
$config = new Config();
require_once($config->diretorio_raiz()."/componentes/construtor/src/model/bd/Coluna_bdDAO.php");
require_once($config->diretorio_raiz()."/componentes/construtor/src/model/bd/Tabela_bdDAO.php");
require_once($config->diretorio_raiz()."/componentes/construtor/src/model/bd/Construir_colunas_composta.php");
$coluna_bdDAO = new Coluna_bdDAO();


if (isset($_GET["mod"]) && $_GET["mod"] == "listar")
{
	$listaColunas = $coluna_bdDAO->listarColunas($_GET["idTabela"]);
	include_once($config->diretorio_raiz()."/componentes/construtor/src/view/Listar_coluna_bd.php");
	
} elseif (isset($_GET["mod"]) && $_GET["mod"] == "form")
{
	$_coluna_bd = $coluna_bdDAO->listarColuna($_GET["id"]);
	include_once($config->diretorio_raiz()."/componentes/construtor/src/view/Formulario_coluna_bd.php");
} 	
elseif (isset($_GET["mod"]) && $_GET["mod"] == "novo")
{
	$_coluna_bd = new  Coluna_bd();
	$_coluna_bd->setTabela($_GET["idTabela"]);
	include_once($config->diretorio_raiz()."/componentes/construtor/src/view/Formulario_coluna_bd.php");
}elseif (isset($_GET["mod"]) && $_GET["mod"] == "salvar")
{
	$_coluna_bd = new  Coluna_bd();
	$_coluna_bd->setTabela($_POST["tabela"]);
	$_coluna_bd->setDescricao($_POST["descricao"]);
	$_coluna_bd->setColuna($_POST["coluna"]);
	$_coluna_bd->setTamanho($_POST["tamanho"]);
	$_coluna_bd->setTipo($_POST["tipo"]);
	$_coluna_bd->setMascara($_POST["mascara"]);
	$_coluna_bd->setIndice($_POST["indice"]);
	if (isset($_POST["naoExibirTabela"]))
	{	
		$_coluna_bd->setNaoExibirTabela('1');
	}
	else
	{
		$_coluna_bd->setNaoExibirTabela('0');
	}
	if (isset($_POST["filtrar"]))
	{	
		$_coluna_bd->setFiltrar('1');
	}
	else
	{
		$_coluna_bd->setFiltrar('0');
	}
	if (isset($_POST["multiregistros"]))
	{	
		$_coluna_bd->setMultiRegistros('1');
	}
	else
	{
		$_coluna_bd->setMultiRegistros('0');
	}
	if (isset($_POST["tipocoluna"]) and $_POST["tipocoluna"] != "")
	{	
		$_coluna_bd->setTipoColuna($coluna_bdDAO->listarColuna($_POST["tipocoluna"]));
	}
	else
	{
		$_coluna_bd->setTipoColuna( new Coluna_bd());
	}	
	if (isset($_POST["tipocolunaprimaria"]) and $_POST["tipocolunaprimaria"] != "")
	{	
		$_coluna_bd->setTipoColunaPrimaria($coluna_bdDAO->listarColuna($_POST["tipocolunaprimaria"]));
	}
	else
	{
		$_coluna_bd->setTipoColunaPrimaria( new Coluna_bd());
	}	
	$tabela_bdDAO = new Tabela_bdDAO();
	if (isset($_POST["tipotabela"]) and  $_POST["tipotabela"] != "")
	{	
		$_coluna_bd->setTipoTabela($tabela_bdDAO->listarTabela($_POST["tipotabela"]));
	}
	else
	{
		$_coluna_bd->setTipoTabela(new Tabela_bd());
	}	
	
	if (isset($_POST["novalinha"]) and  $_POST["novalinha"] != "")
	{	
		$_coluna_bd->setNovaLinha('1');
	}
	else
	{
		$_coluna_bd->setNovaLinha('0');
	}
	
	if (isset($_POST["radioDataAvancado"]))
	{
		if ($_POST["radioDataAvancado"] != "")
		{
			$_coluna_bd->setIndice($_POST["radioDataAvancado"]);
		}	
	}	
	if (isset($_POST["leitura"]))
	{
		if ($_POST["leitura"] != "")
		{
			$_coluna_bd->setLeitura($_POST["leitura"]);
		}	
	}
	if (isset($_POST["obrigatorio"]))
	{
		if ($_POST["obrigatorio"] != "")
		{
			$_coluna_bd->setObrigatorio($_POST["obrigatorio"]);
		}	
	}
	if (isset($_POST["chave_primaria"]))
	{
		if ($_POST["chave_primaria"] != "")
		{
			$_coluna_bd->setIndice($_POST["chave_primaria"]);
		}	
	}
	if (isset($_POST["auto_incrementar"]))
	{
		if ($_POST["auto_incrementar"] == "increment")
		{
			$_coluna_bd->setAutoIncrementar(1);
		}	
	}
	if (isset($_POST["estrangeiracomposta"]))
	{	
		$_coluna_bd->setComposta('1');
	}
	else
	{
		$_coluna_bd->setComposta('0');
	}
	
	$retorno = array();
	$tabela_bdDAO = new Tabela_bdDAO();
	$tabela_db = $tabela_bdDAO->listarTabela($_coluna_bd->getTabela());
	if (!isset($_POST["id"]))
	{
		try 
		{
			$coluna_bdDAO->salvarColuna($_coluna_bd,$tabela_db);
			//cria as colunas compostas automaticamente
			if ($_coluna_bd->getTipo() == "tabela" and $_coluna_bd->getComposta() == '1')
			{	
				require_once($config->diretorio_raiz()."/componentes/construtor/src/model/bd/Buscar_coluna_primary.php");
				$buscar_coluna_primary = new Buscar_coluna_primary();
				$construir_colunas_composta = new Construir_colunas_composta();

				$listacolunas = $coluna_bdDAO->listarColunas($_coluna_bd->getTabela());
				$coluna = new Coluna_bd();
				foreach($listacolunas as $colunaAtual)
				{
					if ($colunaAtual->getColuna() == $_coluna_bd->getColuna())
					{
						$coluna = $colunaAtual;
					}
				}	
				$construir_colunas_composta->montaColunas($coluna, $buscar_coluna_primary);
			}
			//fim coluna composta
			$retorno["mensagem"] = "Inserido com sucesso!";
			$retorno["status"] = true;
		}
		catch (Exception  $e)
		{
			$retorno["mensagem"] = $e->getMessage();
			$retorno["status"] = true;			
		}
	}
	else
	{
		$_coluna_bd->setId($_POST["id"]);
		
		try 
		{
			$coluna_bdDAO->atualizarColuna($_coluna_bd);
			$retorno["mensagem"] = "Alterado com sucesso!";
			$retorno["status"] = true;
		}
		catch (Exception  $e)
		{
			$retorno["mensagem"] = $e->getMessage();
			$retorno["status"] = true;			
		}
	}	
	echo json_encode($retorno);
	
}elseif (isset($_GET["mod"]) && $_GET["mod"] == "excluir")
{
	try 
	{
		$tabela_bdDAO = new Tabela_bdDAO();		
		$_coluna_bd = $coluna_bdDAO->listarColuna($_GET["id"]);
		$tabela_db = $tabela_bdDAO->listarTabela($_coluna_bd->getTabela());
		if ($_coluna_bd->getComposta() == '1')
		{	
			$listaTotasGerados = $coluna_bdDAO->listarComposta($_coluna_bd);
			$coluna_bdDAO->excluirComposta($_coluna_bd);
			foreach($listaTotasGerados as $composta)
			{
				if ($composta->getColunaEstrangeira() != $_coluna_bd)
				{	
					$coluna_bdDAO->excluirColuna($composta->getColunaEstrangeira(),$tabela_db);
				}	
			}
			
		}
		$coluna_bdDAO->excluirColuna($_coluna_bd,$tabela_db);
		$retorno["mensagem"] = "Excluído com sucesso!";
		$retorno["status"] = true;
	}
	catch (Exception  $e)
	{
		$retorno["mensagem"] = $e->getMessage();
		$retorno["status"] = true;			
	}
	echo json_encode($retorno);
}elseif (isset($_GET["mod"]) && $_GET["mod"] == "combobox")
{
	$listaColunas = $coluna_bdDAO->listarColunas($_GET["idTabela"]);
	$novaLista = array();
	if (isset($_GET["indice"]) && $_GET["indice"] == "PRIMARY")
	{
		 foreach ($listaColunas as $colunaAtual){
			 if ($colunaAtual->getIndice() == "PRIMARY")
			 {
				array_push($novaLista, $colunaAtual);
			 }
		 }		
		 $listaColunas = $novaLista;
	}
	
	include_once($config->diretorio_raiz()."/componentes/construtor/src/view/Combobox_coluna_bd.php");
	
}
	



