<?php
class Gerar_DAO_listarTodosRegistros
{
	function montarArquivo($_tabela_bd, $nome_classe, $buscar_coluna_primary)
	{
		$buscar_coluna_primary = new Buscar_coluna_primary();
		//$coluna_primary = $buscar_coluna_primary->buscar($_tabela_bd)->getColuna();
		//$nome_coluna_pk = strtoupper(substr($coluna_primary,0,1)).substr($coluna_primary,1);
		$dao = "";
		$dao .= "	public function listarTodosRegistros()\n";
		$dao .= "	{\n";
		$dao .= "		\$inputs = array();\n";
		$dao .= "		\$sql = \"SELECT * FROM ".$_tabela_bd->getTabela()."\";\n";
		$dao .= "		\$lista".$nome_classe." = array();\n";
		$dao .= "		\$rows_".$_tabela_bd->getTabela()." = \$this->_funcoes_bd->sql(\$sql);\n";
		$dao .= "		foreach (\$rows_".$_tabela_bd->getTabela()." as \$row)\n";
		$dao .= "		{\n";
		$dao .= "			\$".$_tabela_bd->getTabela()." = new ".$nome_classe."();\n";
		$colunas = $_tabela_bd->getLista_colunas();
		$colunasInsert = "";
		$valuesInsert = "";

		for ($i=0; $i <count($colunas); $i++)
		{	
			$nome_coluna = strtoupper(substr($colunas[$i]->getColuna(),0,1)).substr($colunas[$i]->getColuna(),1);
			switch($colunas[$i]->getTipo())
			{
				case "data":
					$dao .= "			if(\$row['".$colunas[$i]->getColuna()."'] != \"\")\n";
					$dao .= "			{\n";
					$dao .= "				\$date".$nome_coluna." = DateTime::createFromFormat('Y-m-d H:i:s', \$row['".$colunas[$i]->getColuna()."']);\n";
					$dao .= "				\$".$_tabela_bd->getTabela()."->set".$nome_coluna."(\$date".$nome_coluna.");\n";
					$dao .= "			}\n";
				break;
				case "tabela":
					if ($colunas[$i]->getComposta() == "1")
					{
						$listaColunas = "";
						foreach($colunas[$i]->getListaColunaComposta() as $colunafkatual)
						{
							$colunaEsrangeiraatual = $colunafkatual->getColunaEstrangeira();
							$ColunaPrimariaAtual =  $colunafkatual->getColunaPrimaria();
							//$colunaEsrangeiraatual->getColuna() ."_".$ColunaPrimariaAtual->getColuna()
							$listaColunas .= "\$row['".$colunaEsrangeiraatual->getColuna()."']";
							if ($colunafkatual != $colunas[$i]->getListaColunaComposta()[count($colunas[$i]->getListaColunaComposta())-1])
							{
								$listaColunas .= ",";
							}
						}
						$nome_classe_dao = strtoupper(substr($colunas[$i]->getTipoTabela()->getTabela(),0,1)).substr($colunas[$i]->getTipoTabela()->getTabela(),1);
						$dao .= "			if(\$row['".$colunas[$i]->getColuna()."'] != \"\")\n";
						$dao .= "			{\n";
						$dao .= "				\$".$colunas[$i]->getColuna()."DAO = new ".$nome_classe_dao."DAO();\n";
						$dao .= "				\$".$_tabela_bd->getTabela()."->set".$nome_coluna."(\$".$colunas[$i]->getColuna()."DAO->buscar".$nome_classe_dao."(".$listaColunas."));\n";
						$dao .= "			}\n";
						$dao .= "			else\n";
						$dao .= "			{\n";
						$dao .= "				\$".$_tabela_bd->getTabela()."->set".$nome_coluna."(new ".$nome_classe_dao."());\n";
						$dao .= "			}\n";
						
					}
					elseif($colunas[$i]->getColunaOrigem()->getId() == "")//empty($colunas[$i]->getColunaOrigem()->getId()))
					{
						$nome_classe_dao = strtoupper(substr($colunas[$i]->getTipoTabela()->getTabela(),0,1)).substr($colunas[$i]->getTipoTabela()->getTabela(),1);
						$dao .= "			if(\$row['".$colunas[$i]->getColuna()."'] != \"\")\n";
						$dao .= "			{\n";
						$dao .= "				\$".$colunas[$i]->getColuna()."DAO = new ".$nome_classe_dao."DAO();\n";
						$dao .= "				\$".$_tabela_bd->getTabela()."->set".$nome_coluna."(\$".$colunas[$i]->getColuna()."DAO->buscar".$nome_classe_dao."(\$row['".$colunas[$i]->getColuna()."']));\n";
						$dao .= "			}\n";
						$dao .= "			else\n";
						$dao .= "			{\n";
						$dao .= "				\$".$_tabela_bd->getTabela()."->set".$nome_coluna."(new ".$nome_classe_dao."());\n";
						$dao .= "			}\n";
					}
					else
					{
						$dao .= "			\$".$_tabela_bd->getTabela()."->set".$nome_coluna."(\$row['".$colunas[$i]->getColuna()."']);\n";
					}
				break;
				default:
					$dao .= "			\$".$_tabela_bd->getTabela()."->set".$nome_coluna."(\$row['".$colunas[$i]->getColuna()."']);\n";
			}
			
		}
		$dao .= "			array_push(\$lista".$nome_classe.",\$".$_tabela_bd->getTabela()." );\n";
		$dao .= "		}\n";
		$dao .= "		return \$lista".$nome_classe.";\n";
		$dao .= "	}\n";
		return $dao;
		
	}	
}	