<?php
require_once("../../../../config/config_dir_raiz.php");
$config = new Config();
require_once($config->diretorio_raiz()."/componentes/construtor/src/model/Coluna_bd.php");
require_once($config->diretorio_raiz()."/src/controller/Funcoes_bd.php");
require_once($config->diretorio_raiz()."/componentes/construtor/src/model/bd/Tabela_bdDAO.php");
require_once($config->diretorio_raiz()."/componentes/construtor/src/model/Carga_tabela_bd.php");

class Carga_tabela_bdDAO
{
	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 listarCargaTabelas($idTabela)
	{
		$lista_carga_tabela_bd = array();
		$sql = "SELECT ID,TABELA,TABELACARREGADA, DESCRICAO FROM cargatabela WHERE TABELA = ".$idTabela;
		//echo $sql;
		$rows = $this->_funcoes_bd->sql($sql);
		
		foreach ($rows as $row)
		{	
			$_tabela_dbDAO = new Tabela_bdDAO();
			$carga_tabela_bd = new Carga_tabela_bd();
			$carga_tabela_bd->setTabela($_tabela_dbDAO->listarTabela($row["TABELA"]));
			$carga_tabela_bd->setTabelaCarregada($_tabela_dbDAO->listarTabela($row["TABELACARREGADA"]));
			$carga_tabela_bd->setId($row["ID"]);
			$carga_tabela_bd->setDescricao($row["DESCRICAO"]);
			array_push($lista_carga_tabela_bd,$carga_tabela_bd);
		}	
		return $lista_carga_tabela_bd;
	}
	
	public function listarCargaTabela($id)
	{
		
		$sql = "SELECT ID,TABELA,TABELACARREGADA, DESCRICAO FROM cargatabela WHERE ID = ".$id;
		//echo $sql;
		$rows = $this->_funcoes_bd->sql($sql);
		foreach ($rows as $row)
		{	
			$carga_tabela_bd = new Carga_tabela_bd();
			$_tabela_dbDAO = new Tabela_bdDAO();
			$carga_tabela_bd->setTabela($_tabela_dbDAO->listarTabela($row["TABELA"]));
			$carga_tabela_bd->setTabelaCarregada($_tabela_dbDAO->listarTabela($row["TABELACARREGADA"]));
			$carga_tabela_bd->setId($row["ID"]);
			$carga_tabela_bd->setDescricao($row["DESCRICAO"]);
		}	
		return $carga_tabela_bd;
	}
	
	public function salvarCargaTabela($_carga_tabela_bd)
	{
		$inputs = array();		
		try
		{

			array_push($inputs, array('campo'=>':TABELA', 'valor'=>$_carga_tabela_bd->getTabela()->getId()));
			array_push($inputs, array('campo'=>':TABELACARREGADA', 'valor'=>$_carga_tabela_bd->getTabelaCarregada()->getId()));
			array_push($inputs, array('campo'=>':DESCRICAO', 'valor'=>$_carga_tabela_bd->getDescricao()));
			$sql = "INSERT INTO cargatabela(TABELA, TABELACARREGADA, DESCRICAO) VALUES (:TABELA, :TABELACARREGADA, :DESCRICAO)";
			return $this->_funcoes_bd->executarSql($sql,$inputs);
		}
		catch (Exception $e)
		{
			throw new Exception($e->getMessage());
		}
		
		
	}
	public function atualizarCargaTabela($_carga_tabela_bd)
	{
		$inputs = array();		
		try
		{

			array_push($inputs, array('campo'=>':TABELA', 'valor'=>$_carga_tabela_bd->getTabela()->getId()));
			array_push($inputs, array('campo'=>':TABELACARREGADA', 'valor'=>$_carga_tabela_bd->getTabelaCarregada()->getId()));
			array_push($inputs, array('campo'=>':DESCRICAO', 'valor'=>$_carga_tabela_bd->getDescricao()));
			$sql = "UPDATE cargatabela SET TABELA = :TABELA, TABELACARREGADA = :TABELACARREGADA, DESCRICAO = :DESCRICAO WHERE ID = ".$_carga_tabela_bd->getId();
			return $this->_funcoes_bd->executarSql($sql,$inputs);
		}
		catch (Exception $e)
		{
			throw new Exception($e->getMessage());
		}
		
		
	}
	public function excluirCargaTabela($_carga_tabela_bd)
	{		
		$inputs = array();		
		try
		{

			array_push($inputs, array('campo'=>':ID', 'valor'=>$_carga_tabela_bd->getId()));
			$sql = "DELETE FROM cargatabela WHERE ID = ".$_carga_tabela_bd->getId();
			return $this->_funcoes_bd->executarSql($sql,$inputs);
		}
		catch (Exception $e)
		{
			throw new Exception($e->getMessage());
		}
	}
}