<?php
class Gerar_DAO_buscarPorCampo
{
	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 = "";
		$colunas = $_tabela_bd->getLista_colunas();
		foreach ($colunas as $colunaAtual)
		{	
			if ($colunaAtual->getIndice() != "PRIMARY")
			{
				$nome_coluna_atual = strtoupper(substr($colunaAtual->getColuna(),0,1)).substr($colunaAtual->getColuna(),1);
				$dao .= "	public function buscar".$nome_classe."Por".$nome_coluna_atual."(\$".$colunaAtual->getColuna().")\n";
				$dao .= "	{\n";
				$dao .= "		\$inputs = array();\n";
				switch($colunaAtual->getTipo())
				{
					case "tabela":
						$dao .= "		\$sql = \"SELECT * FROM ".$_tabela_bd->getTabela()." where ".$colunaAtual->getColuna()." = \".\$".$colunaAtual->getColuna().".\"\";\n";
					break;
					default:
						$dao .= "		\$sql = \"SELECT * FROM ".$_tabela_bd->getTabela()." where ".$colunaAtual->getColuna()." like '%\".\$".$colunaAtual->getColuna().".\"%'\";\n";
				}	
				$dao .= "		\$lista_".$_tabela_bd->getTabela()." = 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 = "";
				///verificar se possuí um chave primaria, se não tem que criar id hidden
				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_".$_tabela_bd->getTabela().", \$".$_tabela_bd->getTabela().");\n";
				$dao .= "		}\n";
				$dao .= "		return \$lista_".$_tabela_bd->getTabela().";\n";
				$dao .= "	}\n";
						
			}	
		}
		return $dao;
		
	}	
}	