<?php
require_once("../../../../config/config_dir_raiz.php");
$config = new Config();
require_once($config->diretorio_raiz()."/componentes/construtor/src/model/Tabela_bd.php");
require_once($config->diretorio_raiz()."/src/controller/Funcoes_bd.php");
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");

class Construir_colunas_composta
{
	private $_funcoes_bd;
	private $_banco_atual;
	private $conexao;
	function __construct()
	{
		$this->conexao = Conexao::obterConexao();
		$this->_banco_atual = Conexao::getUtilizarBanco();
		$this->_funcoes_bd = new Funcoes_bd();
	}
			
	public function montaColunas($coluna, $buscar_coluna_primary)
	{
		$coluna_bdDAO = new Coluna_bdDAO();
		$tabela_bdDAO = new Tabela_bdDAO();
		$inputs = array();		
		switch ($this->_banco_atual)
		{
			case "mysql": 
				//$criarTabela= "CREATE TABLE ".$_tabela_bd->getTabela()." ( ID BIGINT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) ) ENGINE=InnoDB";
				//$criarTabela= "CREATE TABLE ".$_tabela_bd->getTabela()." ( dafault int(11))";
			break;			
		}
		
		try
		{
			
			//cria outras colunas
			$lista_colunas = $buscar_coluna_primary->buscar($coluna->getTipoTabela());
			foreach ($lista_colunas as $colunaPrimaria)
			{
				if ($colunaPrimaria->getId() != $coluna->getTipoColunaPrimaria()->getId())
				{
					
					
					$_colunas_bd = new Coluna_bd();
					$_colunas_bd->setDescricao($colunaPrimaria->getDescricao() ." ".$coluna->getDescricao());
					$_colunas_bd->setInvisivel(1);
					$_colunas_bd->setColuna($colunaPrimaria->getColuna() ."_".$coluna->getColuna());
					$_colunas_bd->setTamanho($colunaPrimaria->getTamanho());
					$_colunas_bd->setTipo("tabela");
					$_colunas_bd->setTabela($coluna->getTabela());
					$_colunas_bd->setMascara($colunaPrimaria->getMascara());
					$_colunas_bd->setIndice('');
					$_colunas_bd->setAutoIncrementar('0');
					$_colunas_bd->setTipoColuna( $colunaPrimaria);
					$_colunas_bd->setTipoColunaPrimaria( $colunaPrimaria);
					$_colunas_bd->setTipoTabela($tabela_bdDAO->listarTabela( $colunaPrimaria->getTabela()));
					$_colunas_bd->setNaoExibirTabela('1');
					$_colunas_bd->setFiltrar('0');
					$_colunas_bd->setNovaLinha('0');
					$_colunas_bd->setColunaOrigem($coluna->getId());
					$coluna_bdDAO->salvarColuna($_colunas_bd,$tabela_bdDAO->listarTabela($coluna->getTabela()));
					
					$inserir = "INSERT INTO colunas_composta( coluna_origem, coluna_primaria, coluna_estrangeira) values  (".$coluna->getId().", ".$colunaPrimaria->getId().", 
					(select ID from colunas where TABELA = ".$tabela_bdDAO->listarTabela( $_colunas_bd->getTabela())->getId()." and  COLUNA = '".$_colunas_bd->getColuna() ."'))";
					//echo $inserir;
					$this->_funcoes_bd->executarSql($inserir,$inputs);
				}
			
			}
			
			$inserir = "INSERT INTO colunas_composta(coluna_origem, coluna_primaria, coluna_estrangeira) values  (".$coluna->getId().", ".$coluna->getTipoColunaPrimaria()->getId().",
			(select ID from colunas where TABELA = ".$tabela_bdDAO->listarTabela( $coluna->getTabela())->getId()." and  COLUNA = '".$coluna->getColuna() ."' ))";
			$this->_funcoes_bd->executarSql($inserir,$inputs);
			
		}
		catch (Exception $e)
		{
			throw new Exception($e->getMessage());
		}
		
		
	}
	
	
}