<?php
require_once("../../../../config/config_dir_raiz.php");
$config = new Config();
require_once("../../../../src/controller/Funcoes_arquivo.php");
require_once("../../../../src/controller/Funcoes_data.php");
require_once("Gerar_DAO_arqDAO/Gerar_DAO.php");
require_once("Gerar_controller_arqDAO.php");
require_once("Gerar_model_arqDAO.php");
require_once("Gerar_view_formulario_arqDAO.php");
require_once("Gerar_view_listar_arqDAO.php");
require_once("Gerar_view_filtro_arqDAO.php");
require_once("Buscar_coluna_primary.php");

class Tabela_arqDAO
{	
	private $funcoes_arquivo; 
	function __construct()
	{
		$this->funcoes_arquivo = new Funcoes_arquivo();
	}
	public function gerarAquivosTabela($_tabela_bd, $_lista_carga_tabela)
	{
		$funcoes_data = new Funcoes_data();
		//abrirFormulario('src/controller/AtabelatesteController.php?mod=form') testa javascript
		$nome_classe = strtoupper(substr($_tabela_bd->getTabela(),0,1)).substr($_tabela_bd->getTabela(),1);
		///criar view
		$diretorio_view = "../../../../src/view/".$_tabela_bd->getTabela();
		$this->funcoes_arquivo->novoDiretorio($diretorio_view, 0777);
		
		$gerar_model_arqDAO = new Gerar_model_arqDAO();
		$this->funcoes_arquivo->novoArquivo("../../../../src/model/".$nome_classe.".php", $gerar_model_arqDAO->montarArquivo($_tabela_bd, $nome_classe, $_lista_carga_tabela));
		
		$gerar_view_formulario_arqDAO = new Gerar_view_formulario_arqDAO();
		$this->funcoes_arquivo->novoArquivo($diretorio_view."/Formulario.php", $gerar_view_formulario_arqDAO->montarArquivo($_tabela_bd, $nome_classe, $funcoes_data, $_lista_carga_tabela));
		
		$gerar_DAO_arqDAO = new Gerar_DAO();
		$this->funcoes_arquivo->novoArquivo("../../../../src/model/bd/".$nome_classe."DAO.php", $gerar_DAO_arqDAO->montarArquivo($_tabela_bd, $nome_classe));
		
		$gerar_controller_arqDAO = new Gerar_controller_arqDAO();
		$this->funcoes_arquivo->novoArquivo("../../../../src/controller/".$nome_classe."Controller.php", $gerar_controller_arqDAO->montarArquivo($_tabela_bd, $nome_classe, $funcoes_data, $_lista_carga_tabela));
		
		$gerar_view_listar_arqDAO = new Gerar_view_listar_arqDAO();
		$this->funcoes_arquivo->novoArquivo($diretorio_view."/Listar_todos_registros.php", $gerar_view_listar_arqDAO->montarArquivo($_tabela_bd, $nome_classe, $funcoes_data, $_lista_carga_tabela));
		
		$gerar_view_filtro_arqDAO = new Gerar_view_filtro_arqDAO();
		$this->funcoes_arquivo->novoArquivo($diretorio_view."/Filtro_lista_registros.php", $gerar_view_filtro_arqDAO->montarArquivo($_tabela_bd, $nome_classe, $funcoes_data, $_lista_carga_tabela));
		
		
		///criar os controladores da busca mult registro
		$this->montarArquivoOptionDataList($_tabela_bd, $nome_classe, $funcoes_data, $diretorio_view);
		
		
		return "Gerou tabela ".strtoupper(substr($_tabela_bd->getTabela(),0,1)).substr($_tabela_bd->getTabela(),1);
	}	
	
	
	function montarArquivoOptionDataList($_tabela_bd, $nome_classe, $funcoes_data, $diretorio_view)
	{
		///criar os controladores da busca mult registro
		$buscar_coluna_primary = new Buscar_coluna_primary();
		$colunas = $_tabela_bd->getLista_colunas();
		$array_funcoes_para_nao_repetir = array();
		foreach($colunas as $colunaAtual)
		{	
			$nome_coluna = strtoupper(substr($colunaAtual->getColuna(),0,1)).substr($colunaAtual->getColuna(),1);
			if ($colunaAtual->getMultiRegistros() == '1' and $colunaAtual->getColunaOrigem()->getId() == "")//empty($colunaAtual->getColunaOrigem()->getId()))
			{

				$colunaValue = strtoupper(substr($colunaAtual->getTipoColuna()->getColuna(),0,1)).substr($colunaAtual->getTipoColuna()->getColuna(),1);
				$nome_classe_pk = strtoupper(substr($colunaAtual->getTipoTabela()->getTabela(),0,1)).substr($colunaAtual->getTipoTabela()->getTabela(),1);
				
				$coluna_primary = $colunaAtual->getTipoColunaPrimaria()->getColuna();//$buscar_coluna_primary->buscar($colunaAtual->getTipoTabela())->getColuna();
				$nome_coluna_pk = strtoupper(substr($coluna_primary,0,1)).substr($coluna_primary,1);
				$valueSelect = "\$umRegistro".$nome_classe_pk."->get".$nome_coluna_pk."()"; 
				if ($colunaAtual->getComposta() == "1") //se for composta o valor é um array
				{
					$valueSelect = " '{'.";
					
					foreach($colunaAtual->getListaColunaComposta() as $colunafkatual)
					{
						$colunaEsrangeiraatual = $colunafkatual->getColunaEstrangeira();
						$ColunaPrimariaAtual =  $colunafkatual->getColunaPrimaria();
						
						$nome_colunaComposta_pk = strtoupper(substr($ColunaPrimariaAtual->getColuna(),0,1)).substr($ColunaPrimariaAtual->getColuna(),1);
						$valueSelect .= "'\'".$ColunaPrimariaAtual->getColuna()."\':\''.\$umRegistro".$nome_classe_pk."->get".$nome_colunaComposta_pk."()";
						if ($ColunaPrimariaAtual->getTipo() == "tabela")
						{
							$nome_colunaComposta_pk = strtoupper(substr($ColunaPrimariaAtual->getTipoColunaPrimaria()->getColuna(),0,1)).substr($ColunaPrimariaAtual->getTipoColunaPrimaria()->getColuna(),1);
							$valueSelect .= "->get".$nome_colunaComposta_pk."()";
							
						}
						if ($colunafkatual != $colunaAtual->getListaColunaComposta()[count($colunaAtual->getListaColunaComposta())-1])
						{
							$valueSelect .= ". '\','. ";
							
						}
					}	
					$valueSelect .= ".'\'}' ";
				}
				
				$nomeDaFuncaoBuscar = "buscar".$nome_classe_pk."Por".$colunaValue;
				$nomeDaPaginaBuscar = strtoupper(substr($nomeDaFuncaoBuscar,0,1)).substr($nomeDaFuncaoBuscar,1);
				
				if (! in_array($nomeDaFuncaoBuscar, $array_funcoes_para_nao_repetir))
				{	
					array_push($array_funcoes_para_nao_repetir, $nomeDaFuncaoBuscar);
					$montaOption = "";
					$montaOption .= "		<?php foreach (\$lista".$nome_classe_pk."  as \$umRegistro".$nome_classe_pk."){ ?>\n";
					/*$montaOption .= "				<div class=\"atualizaData\" value=\"<?php echo \$umRegistro".$nome_classe_pk."->get".$colunaValue."(); ?>\" formPost=\"<?php echo \$_GET['tipoForm'];?>datalist".$colunaAtual->getColuna()."\" valuePost=\"".$colunaAtual->getColuna()."\" data-id=\"<?php echo ".$valueSelect."; ?>\" ><?php echo \$umRegistro".$nome_classe_pk."->get".$colunaValue."(); ?></div>\n";*/
					$montaOption .= "				<div class=\"atualizaData\" value=\"<?php echo \$umRegistro".$nome_classe_pk."->get".$colunaValue."(); ?>\" formPost=\"<?php echo \$_GET['tipoForm'];?>datalist<?php echo \$_GET[\"valuePost\"];?>\" valuePost=\"<?php echo \$_GET[\"valuePost\"];?>\" data-id=\"<?php echo ".$valueSelect."; ?>\" ><?php echo \$umRegistro".$nome_classe_pk."->get".$colunaValue."(); ?></div>\n";
					$montaOption .= "		<?php } ?>\n";
					$this->funcoes_arquivo->novoArquivo($diretorio_view."/".$nomeDaPaginaBuscar.".php", $montaOption);
				}	
				
			}	
		}
		
	}
	
	function excluirTabela($_tabela_bd)
	{
		$nome_classe = strtoupper(substr($_tabela_bd->getTabela(),0,1)).substr($_tabela_bd->getTabela(),1);
		$this->funcoes_arquivo->excluirArquivo("../../../../src/model/".$nome_classe.".php");
		$this->funcoes_arquivo->excluirArquivo("../../../../src/model/bd/".$nome_classe."DAO.php");
		$this->funcoes_arquivo->excluirArquivo("../../../../src/controller/".$nome_classe."Controller.php");
		$diretorio_view = "../../../../src/view/".$_tabela_bd->getTabela();
		$this->funcoes_arquivo->removeDiretorio($diretorio_view);
		
	}
	
}