<?php
require_once("../../config/config_dir_raiz.php");
$config = new Config();
require_once($config->diretorio_raiz()."/src/controller/Funcoes_bd.php");
require_once($config->diretorio_raiz()."/src/model/Bi_conexao.php");
require_once($config->diretorio_raiz()."/src/model/bd/Bi_banco_de_dadosDAO.php");
class Bi_conexaoDAO
{
	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 salvar($bi_conexao)
	{
		$inputs = array();
		if($bi_conexao->getCodigo() != "")
		{
			array_push($inputs, array('campo'=>':codigo', 'valor'=>$bi_conexao->getCodigo()));
		}
		else
		{
			array_push($inputs, array('campo'=>':codigo', 'valor'=>null));
		}
		if($bi_conexao->getNome() != "")
		{
			array_push($inputs, array('campo'=>':nome', 'valor'=>$bi_conexao->getNome()));
		}
		else
		{
			array_push($inputs, array('campo'=>':nome', 'valor'=>null));
		}
		if($bi_conexao->getBanco_dados() != "")
		{
			array_push($inputs, array('campo'=>':banco_dados', 'valor'=>$bi_conexao->getBanco_dados()));
		}
		else
		{
			array_push($inputs, array('campo'=>':banco_dados', 'valor'=>null));
		}
		if($bi_conexao->getHost() != "")
		{
			array_push($inputs, array('campo'=>':host', 'valor'=>$bi_conexao->getHost()));
		}
		else
		{
			array_push($inputs, array('campo'=>':host', 'valor'=>null));
		}
		if($bi_conexao->getUsuario() != "")
		{
			array_push($inputs, array('campo'=>':usuario', 'valor'=>$bi_conexao->getUsuario()));
		}
		else
		{
			array_push($inputs, array('campo'=>':usuario', 'valor'=>null));
		}
		if($bi_conexao->getSenha() != "")
		{
			array_push($inputs, array('campo'=>':senha', 'valor'=>$bi_conexao->getSenha()));
		}
		else
		{
			array_push($inputs, array('campo'=>':senha', 'valor'=>null));
		}
		if($bi_conexao->getDatabase_name() != "")
		{
			array_push($inputs, array('campo'=>':database_name', 'valor'=>$bi_conexao->getDatabase_name()));
		}
		else
		{
			array_push($inputs, array('campo'=>':database_name', 'valor'=>null));
		}
		try
		{
			$sql = "INSERT INTO bi_conexao (codigo, nome, banco_dados, host, usuario, senha, database_name) VALUES (:codigo, :nome, :banco_dados, :host, :usuario, :senha, :database_name)  ";
			return $this->_funcoes_bd->executarSql($sql,$inputs);
		}
		catch (Exception $e)
		{
			throw new Exception($e->getMessage());
		}
	}
	public function buscarBi_conexao($codigo)
	{
		$inputs = array();
		array_push($inputs, array('campo'=>':codigo', 'valor'=>$codigo));
		$sql = "SELECT * FROM bi_conexao where codigo = :codigo "; 
		$bi_conexao = new Bi_conexao();
		$rows_bi_conexao = $this->_funcoes_bd->sqlArrayInputs($sql, $inputs);
		foreach ($rows_bi_conexao as $row)
		{
			$bi_conexao->setCodigo($row['codigo']);
			$bi_conexao->setNome($row['nome']);
			if($row['banco_dados'] != "")
			{
				$banco_dadosDAO = new Bi_banco_de_dadosDAO();
				$bi_conexao->setBanco_dados($banco_dadosDAO->buscarBi_banco_de_dados($row['banco_dados']));
			}
			else
			{
				$bi_conexao->setBanco_dados(new Bi_banco_de_dados());
			}
			$bi_conexao->setHost($row['host']);
			$bi_conexao->setUsuario($row['usuario']);
			$bi_conexao->setSenha($row['senha']);
			$bi_conexao->setDatabase_name($row['database_name']);
		}
		return $bi_conexao;
	}
	public function buscarFiltro($where)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_conexao  ".$where;
		$lista_bi_conexao = array();
		$rows_bi_conexao = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_conexao as $row)
		{
			$bi_conexao = new Bi_conexao();
			$bi_conexao->setCodigo($row['codigo']);
			$bi_conexao->setNome($row['nome']);
			if($row['banco_dados'] != "")
			{
				$banco_dadosDAO = new Bi_banco_de_dadosDAO();
				$bi_conexao->setBanco_dados($banco_dadosDAO->buscarBi_banco_de_dados($row['banco_dados']));
			}
			else
			{
				$bi_conexao->setBanco_dados(new Bi_banco_de_dados());
			}
			$bi_conexao->setHost($row['host']);
			$bi_conexao->setUsuario($row['usuario']);
			$bi_conexao->setSenha($row['senha']);
			$bi_conexao->setDatabase_name($row['database_name']);
			array_push($lista_bi_conexao, $bi_conexao);
		}
		return $lista_bi_conexao;
	}
	public function atualizar($bi_conexao)
	{
		$inputs = array();
		if($bi_conexao->getCodigo() != "")
		{
			array_push($inputs, array('campo'=>':codigo', 'valor'=>$bi_conexao->getCodigo()));
		}
		else
		{
			array_push($inputs, array('campo'=>':codigo', 'valor'=>null));
		}
		if($bi_conexao->getNome() != "")
		{
			array_push($inputs, array('campo'=>':nome', 'valor'=>$bi_conexao->getNome()));
		}
		else
		{
			array_push($inputs, array('campo'=>':nome', 'valor'=>null));
		}
		if($bi_conexao->getBanco_dados() != "")
		{
			array_push($inputs, array('campo'=>':banco_dados', 'valor'=>$bi_conexao->getBanco_dados()));
		}
		else
		{
			array_push($inputs, array('campo'=>':banco_dados', 'valor'=>null));
		}
		if($bi_conexao->getHost() != "")
		{
			array_push($inputs, array('campo'=>':host', 'valor'=>$bi_conexao->getHost()));
		}
		else
		{
			array_push($inputs, array('campo'=>':host', 'valor'=>null));
		}
		if($bi_conexao->getUsuario() != "")
		{
			array_push($inputs, array('campo'=>':usuario', 'valor'=>$bi_conexao->getUsuario()));
		}
		else
		{
			array_push($inputs, array('campo'=>':usuario', 'valor'=>null));
		}
		if($bi_conexao->getSenha() != "")
		{
			array_push($inputs, array('campo'=>':senha', 'valor'=>$bi_conexao->getSenha()));
		}
		else
		{
			array_push($inputs, array('campo'=>':senha', 'valor'=>null));
		}
		if($bi_conexao->getDatabase_name() != "")
		{
			array_push($inputs, array('campo'=>':database_name', 'valor'=>$bi_conexao->getDatabase_name()));
		}
		else
		{
			array_push($inputs, array('campo'=>':database_name', 'valor'=>null));
		}
		try
		{
			$sql = "UPDATE  bi_conexao  SET codigo = :codigo, nome = :nome, banco_dados = :banco_dados, host = :host, usuario = :usuario, senha = :senha, database_name = :database_name WHERE codigo = :codigo  ";
			return $this->_funcoes_bd->executarSql($sql,$inputs);
		}
		catch (Exception $e)
		{
			throw new Exception($e->getMessage());
		}
	}
	public function excluir($bi_conexao)
	{
		try
		{
			$sql = "DELETE FROM bi_conexao  WHERE codigo =  :codigo ";
			$inputs = array();
			array_push($inputs, array('campo'=>':codigo', 'valor'=>$bi_conexao->getCodigo()));
			return $this->_funcoes_bd->executarSql($sql,$inputs);
		}
		catch (Exception $e)
		{
			throw new Exception($e->getMessage());
		}
	}
	public function listarTodosRegistros()
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_conexao";
		$listaBi_conexao = array();
		$rows_bi_conexao = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_conexao as $row)
		{
			$bi_conexao = new Bi_conexao();
			$bi_conexao->setCodigo($row['codigo']);
			$bi_conexao->setNome($row['nome']);
			if($row['banco_dados'] != "")
			{
				$banco_dadosDAO = new Bi_banco_de_dadosDAO();
				$bi_conexao->setBanco_dados($banco_dadosDAO->buscarBi_banco_de_dados($row['banco_dados']));
			}
			else
			{
				$bi_conexao->setBanco_dados(new Bi_banco_de_dados());
			}
			$bi_conexao->setHost($row['host']);
			$bi_conexao->setUsuario($row['usuario']);
			$bi_conexao->setSenha($row['senha']);
			$bi_conexao->setDatabase_name($row['database_name']);
			array_push($listaBi_conexao,$bi_conexao );
		}
		return $listaBi_conexao;
	}
	public function buscarBi_conexaoPorNome($nome)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_conexao where nome like '%".$nome."%'";
		$lista_bi_conexao = array();
		$rows_bi_conexao = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_conexao as $row)
		{
			$bi_conexao = new Bi_conexao();
			$bi_conexao->setCodigo($row['codigo']);
			$bi_conexao->setNome($row['nome']);
			if($row['banco_dados'] != "")
			{
				$banco_dadosDAO = new Bi_banco_de_dadosDAO();
				$bi_conexao->setBanco_dados($banco_dadosDAO->buscarBi_banco_de_dados($row['banco_dados']));
			}
			else
			{
				$bi_conexao->setBanco_dados(new Bi_banco_de_dados());
			}
			$bi_conexao->setHost($row['host']);
			$bi_conexao->setUsuario($row['usuario']);
			$bi_conexao->setSenha($row['senha']);
			$bi_conexao->setDatabase_name($row['database_name']);
			array_push($lista_bi_conexao, $bi_conexao);
		}
		return $lista_bi_conexao;
	}
	public function buscarBi_conexaoPorBanco_dados($banco_dados)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_conexao where banco_dados = ".$banco_dados."";
		$lista_bi_conexao = array();
		$rows_bi_conexao = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_conexao as $row)
		{
			$bi_conexao = new Bi_conexao();
			$bi_conexao->setCodigo($row['codigo']);
			$bi_conexao->setNome($row['nome']);
			if($row['banco_dados'] != "")
			{
				$banco_dadosDAO = new Bi_banco_de_dadosDAO();
				$bi_conexao->setBanco_dados($banco_dadosDAO->buscarBi_banco_de_dados($row['banco_dados']));
			}
			else
			{
				$bi_conexao->setBanco_dados(new Bi_banco_de_dados());
			}
			$bi_conexao->setHost($row['host']);
			$bi_conexao->setUsuario($row['usuario']);
			$bi_conexao->setSenha($row['senha']);
			$bi_conexao->setDatabase_name($row['database_name']);
			array_push($lista_bi_conexao, $bi_conexao);
		}
		return $lista_bi_conexao;
	}
	public function buscarBi_conexaoPorHost($host)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_conexao where host like '%".$host."%'";
		$lista_bi_conexao = array();
		$rows_bi_conexao = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_conexao as $row)
		{
			$bi_conexao = new Bi_conexao();
			$bi_conexao->setCodigo($row['codigo']);
			$bi_conexao->setNome($row['nome']);
			if($row['banco_dados'] != "")
			{
				$banco_dadosDAO = new Bi_banco_de_dadosDAO();
				$bi_conexao->setBanco_dados($banco_dadosDAO->buscarBi_banco_de_dados($row['banco_dados']));
			}
			else
			{
				$bi_conexao->setBanco_dados(new Bi_banco_de_dados());
			}
			$bi_conexao->setHost($row['host']);
			$bi_conexao->setUsuario($row['usuario']);
			$bi_conexao->setSenha($row['senha']);
			$bi_conexao->setDatabase_name($row['database_name']);
			array_push($lista_bi_conexao, $bi_conexao);
		}
		return $lista_bi_conexao;
	}
	public function buscarBi_conexaoPorUsuario($usuario)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_conexao where usuario like '%".$usuario."%'";
		$lista_bi_conexao = array();
		$rows_bi_conexao = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_conexao as $row)
		{
			$bi_conexao = new Bi_conexao();
			$bi_conexao->setCodigo($row['codigo']);
			$bi_conexao->setNome($row['nome']);
			if($row['banco_dados'] != "")
			{
				$banco_dadosDAO = new Bi_banco_de_dadosDAO();
				$bi_conexao->setBanco_dados($banco_dadosDAO->buscarBi_banco_de_dados($row['banco_dados']));
			}
			else
			{
				$bi_conexao->setBanco_dados(new Bi_banco_de_dados());
			}
			$bi_conexao->setHost($row['host']);
			$bi_conexao->setUsuario($row['usuario']);
			$bi_conexao->setSenha($row['senha']);
			$bi_conexao->setDatabase_name($row['database_name']);
			array_push($lista_bi_conexao, $bi_conexao);
		}
		return $lista_bi_conexao;
	}
	public function buscarBi_conexaoPorSenha($senha)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_conexao where senha like '%".$senha."%'";
		$lista_bi_conexao = array();
		$rows_bi_conexao = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_conexao as $row)
		{
			$bi_conexao = new Bi_conexao();
			$bi_conexao->setCodigo($row['codigo']);
			$bi_conexao->setNome($row['nome']);
			if($row['banco_dados'] != "")
			{
				$banco_dadosDAO = new Bi_banco_de_dadosDAO();
				$bi_conexao->setBanco_dados($banco_dadosDAO->buscarBi_banco_de_dados($row['banco_dados']));
			}
			else
			{
				$bi_conexao->setBanco_dados(new Bi_banco_de_dados());
			}
			$bi_conexao->setHost($row['host']);
			$bi_conexao->setUsuario($row['usuario']);
			$bi_conexao->setSenha($row['senha']);
			$bi_conexao->setDatabase_name($row['database_name']);
			array_push($lista_bi_conexao, $bi_conexao);
		}
		return $lista_bi_conexao;
	}
	public function buscarBi_conexaoPorDatabase_name($database_name)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_conexao where database_name like '%".$database_name."%'";
		$lista_bi_conexao = array();
		$rows_bi_conexao = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_conexao as $row)
		{
			$bi_conexao = new Bi_conexao();
			$bi_conexao->setCodigo($row['codigo']);
			$bi_conexao->setNome($row['nome']);
			if($row['banco_dados'] != "")
			{
				$banco_dadosDAO = new Bi_banco_de_dadosDAO();
				$bi_conexao->setBanco_dados($banco_dadosDAO->buscarBi_banco_de_dados($row['banco_dados']));
			}
			else
			{
				$bi_conexao->setBanco_dados(new Bi_banco_de_dados());
			}
			$bi_conexao->setHost($row['host']);
			$bi_conexao->setUsuario($row['usuario']);
			$bi_conexao->setSenha($row['senha']);
			$bi_conexao->setDatabase_name($row['database_name']);
			array_push($lista_bi_conexao, $bi_conexao);
		}
		return $lista_bi_conexao;
	}
}