<?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_carga_dados.php");
require_once($config->diretorio_raiz()."/src/model/bd/Bi_conexaoDAO.php");
class Bi_carga_dadosDAO
{
	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_carga_dados)
	{
		$inputs = array();
		if($bi_carga_dados->getCodigo() != "")
		{
			array_push($inputs, array('campo'=>':codigo', 'valor'=>$bi_carga_dados->getCodigo()));
		}
		else
		{
			array_push($inputs, array('campo'=>':codigo', 'valor'=>null));
		}
		if($bi_carga_dados->getNome() != "")
		{
			array_push($inputs, array('campo'=>':nome', 'valor'=>$bi_carga_dados->getNome()));
		}
		else
		{
			array_push($inputs, array('campo'=>':nome', 'valor'=>null));
		}
		if($bi_carga_dados->getDescricao() != "")
		{
			array_push($inputs, array('campo'=>':descricao', 'valor'=>$bi_carga_dados->getDescricao()));
		}
		else
		{
			array_push($inputs, array('campo'=>':descricao', 'valor'=>null));
		}
		if($bi_carga_dados->getConexao() != "")
		{
			array_push($inputs, array('campo'=>':conexao', 'valor'=>$bi_carga_dados->getConexao()));
		}
		else
		{
			array_push($inputs, array('campo'=>':conexao', 'valor'=>null));
		}
		if($bi_carga_dados->getTabela() != "")
		{
			array_push($inputs, array('campo'=>':tabela', 'valor'=>$bi_carga_dados->getTabela()));
		}
		else
		{
			array_push($inputs, array('campo'=>':tabela', 'valor'=>null));
		}
		if($bi_carga_dados->getAtivo() != "")
		{
			array_push($inputs, array('campo'=>':ativo', 'valor'=>$bi_carga_dados->getAtivo()));
		}
		else
		{
			array_push($inputs, array('campo'=>':ativo', 'valor'=>null));
		}
		try
		{
			$sql = "INSERT INTO bi_carga_dados (codigo, nome, descricao, conexao, tabela, ativo) VALUES (:codigo, :nome, :descricao, :conexao, :tabela, :ativo)  ";
			return $this->_funcoes_bd->executarSql($sql,$inputs);
		}
		catch (Exception $e)
		{
			throw new Exception($e->getMessage());
		}
	}
	public function buscarBi_carga_dados($codigo)
	{
		$inputs = array();
		array_push($inputs, array('campo'=>':codigo', 'valor'=>$codigo));
		$sql = "SELECT * FROM bi_carga_dados where codigo = :codigo "; 
		$bi_carga_dados = new Bi_carga_dados();
		$rows_bi_carga_dados = $this->_funcoes_bd->sqlArrayInputs($sql, $inputs);
		foreach ($rows_bi_carga_dados as $row)
		{
			$bi_carga_dados->setCodigo($row['codigo']);
			$bi_carga_dados->setNome($row['nome']);
			$bi_carga_dados->setDescricao($row['descricao']);
			if($row['conexao'] != "")
			{
				$conexaoDAO = new Bi_conexaoDAO();
				$bi_carga_dados->setConexao($conexaoDAO->buscarBi_conexao($row['conexao']));
			}
			else
			{
				$bi_carga_dados->setConexao(new Bi_conexao());
			}
			$bi_carga_dados->setTabela($row['tabela']);
			$bi_carga_dados->setAtivo($row['ativo']);
		}
		return $bi_carga_dados;
	}
	public function buscarFiltro($where)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_carga_dados  ".$where;
		$lista_bi_carga_dados = array();
		$rows_bi_carga_dados = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_carga_dados as $row)
		{
			$bi_carga_dados = new Bi_carga_dados();
			$bi_carga_dados->setCodigo($row['codigo']);
			$bi_carga_dados->setNome($row['nome']);
			$bi_carga_dados->setDescricao($row['descricao']);
			if($row['conexao'] != "")
			{
				$conexaoDAO = new Bi_conexaoDAO();
				$bi_carga_dados->setConexao($conexaoDAO->buscarBi_conexao($row['conexao']));
			}
			else
			{
				$bi_carga_dados->setConexao(new Bi_conexao());
			}
			$bi_carga_dados->setTabela($row['tabela']);
			$bi_carga_dados->setAtivo($row['ativo']);
			array_push($lista_bi_carga_dados, $bi_carga_dados);
		}
		return $lista_bi_carga_dados;
	}
	public function atualizar($bi_carga_dados)
	{
		$inputs = array();
		if($bi_carga_dados->getCodigo() != "")
		{
			array_push($inputs, array('campo'=>':codigo', 'valor'=>$bi_carga_dados->getCodigo()));
		}
		else
		{
			array_push($inputs, array('campo'=>':codigo', 'valor'=>null));
		}
		if($bi_carga_dados->getNome() != "")
		{
			array_push($inputs, array('campo'=>':nome', 'valor'=>$bi_carga_dados->getNome()));
		}
		else
		{
			array_push($inputs, array('campo'=>':nome', 'valor'=>null));
		}
		if($bi_carga_dados->getDescricao() != "")
		{
			array_push($inputs, array('campo'=>':descricao', 'valor'=>$bi_carga_dados->getDescricao()));
		}
		else
		{
			array_push($inputs, array('campo'=>':descricao', 'valor'=>null));
		}
		if($bi_carga_dados->getConexao() != "")
		{
			array_push($inputs, array('campo'=>':conexao', 'valor'=>$bi_carga_dados->getConexao()));
		}
		else
		{
			array_push($inputs, array('campo'=>':conexao', 'valor'=>null));
		}
		if($bi_carga_dados->getTabela() != "")
		{
			array_push($inputs, array('campo'=>':tabela', 'valor'=>$bi_carga_dados->getTabela()));
		}
		else
		{
			array_push($inputs, array('campo'=>':tabela', 'valor'=>null));
		}
		if($bi_carga_dados->getAtivo() != "")
		{
			array_push($inputs, array('campo'=>':ativo', 'valor'=>$bi_carga_dados->getAtivo()));
		}
		else
		{
			array_push($inputs, array('campo'=>':ativo', 'valor'=>null));
		}
		try
		{
			$sql = "UPDATE  bi_carga_dados  SET codigo = :codigo, nome = :nome, descricao = :descricao, conexao = :conexao, tabela = :tabela, ativo = :ativo WHERE codigo = :codigo  ";
			return $this->_funcoes_bd->executarSql($sql,$inputs);
		}
		catch (Exception $e)
		{
			throw new Exception($e->getMessage());
		}
	}
	public function excluir($bi_carga_dados)
	{
		try
		{
			$sql = "DELETE FROM bi_carga_dados  WHERE codigo =  :codigo ";
			$inputs = array();
			array_push($inputs, array('campo'=>':codigo', 'valor'=>$bi_carga_dados->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_carga_dados";
		$listaBi_carga_dados = array();
		$rows_bi_carga_dados = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_carga_dados as $row)
		{
			$bi_carga_dados = new Bi_carga_dados();
			$bi_carga_dados->setCodigo($row['codigo']);
			$bi_carga_dados->setNome($row['nome']);
			$bi_carga_dados->setDescricao($row['descricao']);
			if($row['conexao'] != "")
			{
				$conexaoDAO = new Bi_conexaoDAO();
				$bi_carga_dados->setConexao($conexaoDAO->buscarBi_conexao($row['conexao']));
			}
			else
			{
				$bi_carga_dados->setConexao(new Bi_conexao());
			}
			$bi_carga_dados->setTabela($row['tabela']);
			$bi_carga_dados->setAtivo($row['ativo']);
			array_push($listaBi_carga_dados,$bi_carga_dados );
		}
		return $listaBi_carga_dados;
	}
	public function buscarBi_carga_dadosPorNome($nome)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_carga_dados where nome like '%".$nome."%'";
		$lista_bi_carga_dados = array();
		$rows_bi_carga_dados = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_carga_dados as $row)
		{
			$bi_carga_dados = new Bi_carga_dados();
			$bi_carga_dados->setCodigo($row['codigo']);
			$bi_carga_dados->setNome($row['nome']);
			$bi_carga_dados->setDescricao($row['descricao']);
			if($row['conexao'] != "")
			{
				$conexaoDAO = new Bi_conexaoDAO();
				$bi_carga_dados->setConexao($conexaoDAO->buscarBi_conexao($row['conexao']));
			}
			else
			{
				$bi_carga_dados->setConexao(new Bi_conexao());
			}
			$bi_carga_dados->setTabela($row['tabela']);
			$bi_carga_dados->setAtivo($row['ativo']);
			array_push($lista_bi_carga_dados, $bi_carga_dados);
		}
		return $lista_bi_carga_dados;
	}
	public function buscarBi_carga_dadosPorDescricao($descricao)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_carga_dados where descricao like '%".$descricao."%'";
		$lista_bi_carga_dados = array();
		$rows_bi_carga_dados = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_carga_dados as $row)
		{
			$bi_carga_dados = new Bi_carga_dados();
			$bi_carga_dados->setCodigo($row['codigo']);
			$bi_carga_dados->setNome($row['nome']);
			$bi_carga_dados->setDescricao($row['descricao']);
			if($row['conexao'] != "")
			{
				$conexaoDAO = new Bi_conexaoDAO();
				$bi_carga_dados->setConexao($conexaoDAO->buscarBi_conexao($row['conexao']));
			}
			else
			{
				$bi_carga_dados->setConexao(new Bi_conexao());
			}
			$bi_carga_dados->setTabela($row['tabela']);
			$bi_carga_dados->setAtivo($row['ativo']);
			array_push($lista_bi_carga_dados, $bi_carga_dados);
		}
		return $lista_bi_carga_dados;
	}
	public function buscarBi_carga_dadosPorConexao($conexao)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_carga_dados where conexao = ".$conexao."";
		$lista_bi_carga_dados = array();
		$rows_bi_carga_dados = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_carga_dados as $row)
		{
			$bi_carga_dados = new Bi_carga_dados();
			$bi_carga_dados->setCodigo($row['codigo']);
			$bi_carga_dados->setNome($row['nome']);
			$bi_carga_dados->setDescricao($row['descricao']);
			if($row['conexao'] != "")
			{
				$conexaoDAO = new Bi_conexaoDAO();
				$bi_carga_dados->setConexao($conexaoDAO->buscarBi_conexao($row['conexao']));
			}
			else
			{
				$bi_carga_dados->setConexao(new Bi_conexao());
			}
			$bi_carga_dados->setTabela($row['tabela']);
			$bi_carga_dados->setAtivo($row['ativo']);
			array_push($lista_bi_carga_dados, $bi_carga_dados);
		}
		return $lista_bi_carga_dados;
	}
	public function buscarBi_carga_dadosPorTabela($tabela)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_carga_dados where tabela like '%".$tabela."%'";
		$lista_bi_carga_dados = array();
		$rows_bi_carga_dados = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_carga_dados as $row)
		{
			$bi_carga_dados = new Bi_carga_dados();
			$bi_carga_dados->setCodigo($row['codigo']);
			$bi_carga_dados->setNome($row['nome']);
			$bi_carga_dados->setDescricao($row['descricao']);
			if($row['conexao'] != "")
			{
				$conexaoDAO = new Bi_conexaoDAO();
				$bi_carga_dados->setConexao($conexaoDAO->buscarBi_conexao($row['conexao']));
			}
			else
			{
				$bi_carga_dados->setConexao(new Bi_conexao());
			}
			$bi_carga_dados->setTabela($row['tabela']);
			$bi_carga_dados->setAtivo($row['ativo']);
			array_push($lista_bi_carga_dados, $bi_carga_dados);
		}
		return $lista_bi_carga_dados;
	}
	public function buscarBi_carga_dadosPorAtivo($ativo)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_carga_dados where ativo like '%".$ativo."%'";
		$lista_bi_carga_dados = array();
		$rows_bi_carga_dados = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_carga_dados as $row)
		{
			$bi_carga_dados = new Bi_carga_dados();
			$bi_carga_dados->setCodigo($row['codigo']);
			$bi_carga_dados->setNome($row['nome']);
			$bi_carga_dados->setDescricao($row['descricao']);
			if($row['conexao'] != "")
			{
				$conexaoDAO = new Bi_conexaoDAO();
				$bi_carga_dados->setConexao($conexaoDAO->buscarBi_conexao($row['conexao']));
			}
			else
			{
				$bi_carga_dados->setConexao(new Bi_conexao());
			}
			$bi_carga_dados->setTabela($row['tabela']);
			$bi_carga_dados->setAtivo($row['ativo']);
			array_push($lista_bi_carga_dados, $bi_carga_dados);
		}
		return $lista_bi_carga_dados;
	}
}