<?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_log_acesso.php");
require_once($config->diretorio_raiz()."/src/model/bd/Bi_usuarioDAO.php");
require_once($config->diretorio_raiz()."/src/model/bd/Bi_analiseDAO.php");
require_once($config->diretorio_raiz()."/src/model/bd/Bi_paginaDAO.php");
class Bi_log_acessoDAO
{
	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_log_acesso)
	{
		$inputs = array();
		if($bi_log_acesso->getCodigo() != "")
		{
			array_push($inputs, array('campo'=>':codigo', 'valor'=>$bi_log_acesso->getCodigo()));
		}
		else
		{
			array_push($inputs, array('campo'=>':codigo', 'valor'=>null));
		}
		if($bi_log_acesso->getUsuario() != "")
		{
			array_push($inputs, array('campo'=>':usuario', 'valor'=>$bi_log_acesso->getUsuario()));
		}
		else
		{
			array_push($inputs, array('campo'=>':usuario', 'valor'=>null));
		}
		if($bi_log_acesso->getAnalise() != "")
		{
			array_push($inputs, array('campo'=>':analise', 'valor'=>$bi_log_acesso->getAnalise()));
		}
		else
		{
			array_push($inputs, array('campo'=>':analise', 'valor'=>null));
		}
		if($bi_log_acesso->getPagina() != "")
		{
			array_push($inputs, array('campo'=>':pagina', 'valor'=>$bi_log_acesso->getPagina()));
		}
		else
		{
			array_push($inputs, array('campo'=>':pagina', 'valor'=>null));
		}
		if($bi_log_acesso->getData_acesso() instanceof DateTime)
		{
			array_push($inputs, array('campo'=>':data_acesso', 'valor'=>$bi_log_acesso->getData_acesso()->format('Y-m-d H:i:s')));
		}
		else
		{
			array_push($inputs, array('campo'=>':data_acesso', 'valor'=>null));
		}
		try
		{
			$sql = "INSERT INTO bi_log_acesso (codigo, usuario, analise, pagina, data_acesso) VALUES (:codigo, :usuario, :analise, :pagina, :data_acesso)  ";
			return $this->_funcoes_bd->executarSql($sql,$inputs);
		}
		catch (Exception $e)
		{
			throw new Exception($e->getMessage());
		}
	}
	public function buscarBi_log_acesso($codigo)
	{
		$inputs = array();
		array_push($inputs, array('campo'=>':codigo', 'valor'=>$codigo));
		$sql = "SELECT * FROM bi_log_acesso where codigo = :codigo "; 
		$bi_log_acesso = new Bi_log_acesso();
		$rows_bi_log_acesso = $this->_funcoes_bd->sqlArrayInputs($sql, $inputs);
		foreach ($rows_bi_log_acesso as $row)
		{
			$bi_log_acesso->setCodigo($row['codigo']);
			if($row['usuario'] != "")
			{
				$usuarioDAO = new Bi_usuarioDAO();
				$bi_log_acesso->setUsuario($usuarioDAO->buscarBi_usuario($row['usuario']));
			}
			else
			{
				$bi_log_acesso->setUsuario(new Bi_usuario());
			}
			if($row['analise'] != "")
			{
				$analiseDAO = new Bi_analiseDAO();
				$bi_log_acesso->setAnalise($analiseDAO->buscarBi_analise($row['analise']));
			}
			else
			{
				$bi_log_acesso->setAnalise(new Bi_analise());
			}
			if($row['pagina'] != "")
			{
				$paginaDAO = new Bi_paginaDAO();
				$bi_log_acesso->setPagina($paginaDAO->buscarBi_pagina($row['pagina']));
			}
			else
			{
				$bi_log_acesso->setPagina(new Bi_pagina());
			}
			if($row['data_acesso'] != "")
			{
				$dateData_acesso = DateTime::createFromFormat('Y-m-d H:i:s', $row['data_acesso']);
				$bi_log_acesso->setData_acesso($dateData_acesso);
			}
		}
		return $bi_log_acesso;
	}
	public function buscarFiltro($where)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_log_acesso  ".$where;
		$lista_bi_log_acesso = array();
		$rows_bi_log_acesso = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_log_acesso as $row)
		{
			$bi_log_acesso = new Bi_log_acesso();
			$bi_log_acesso->setCodigo($row['codigo']);
			if($row['usuario'] != "")
			{
				$usuarioDAO = new Bi_usuarioDAO();
				$bi_log_acesso->setUsuario($usuarioDAO->buscarBi_usuario($row['usuario']));
			}
			else
			{
				$bi_log_acesso->setUsuario(new Bi_usuario());
			}
			if($row['analise'] != "")
			{
				$analiseDAO = new Bi_analiseDAO();
				$bi_log_acesso->setAnalise($analiseDAO->buscarBi_analise($row['analise']));
			}
			else
			{
				$bi_log_acesso->setAnalise(new Bi_analise());
			}
			if($row['pagina'] != "")
			{
				$paginaDAO = new Bi_paginaDAO();
				$bi_log_acesso->setPagina($paginaDAO->buscarBi_pagina($row['pagina']));
			}
			else
			{
				$bi_log_acesso->setPagina(new Bi_pagina());
			}
			if($row['data_acesso'] != "")
			{
				$dateData_acesso = DateTime::createFromFormat('Y-m-d H:i:s', $row['data_acesso']);
				$bi_log_acesso->setData_acesso($dateData_acesso);
			}
			array_push($lista_bi_log_acesso, $bi_log_acesso);
		}
		return $lista_bi_log_acesso;
	}
	public function atualizar($bi_log_acesso)
	{
		$inputs = array();
		if($bi_log_acesso->getCodigo() != "")
		{
			array_push($inputs, array('campo'=>':codigo', 'valor'=>$bi_log_acesso->getCodigo()));
		}
		else
		{
			array_push($inputs, array('campo'=>':codigo', 'valor'=>null));
		}
		if($bi_log_acesso->getUsuario() != "")
		{
			array_push($inputs, array('campo'=>':usuario', 'valor'=>$bi_log_acesso->getUsuario()));
		}
		else
		{
			array_push($inputs, array('campo'=>':usuario', 'valor'=>null));
		}
		if($bi_log_acesso->getAnalise() != "")
		{
			array_push($inputs, array('campo'=>':analise', 'valor'=>$bi_log_acesso->getAnalise()));
		}
		else
		{
			array_push($inputs, array('campo'=>':analise', 'valor'=>null));
		}
		if($bi_log_acesso->getPagina() != "")
		{
			array_push($inputs, array('campo'=>':pagina', 'valor'=>$bi_log_acesso->getPagina()));
		}
		else
		{
			array_push($inputs, array('campo'=>':pagina', 'valor'=>null));
		}
		if($bi_log_acesso->getData_acesso() instanceof DateTime)
		{
			array_push($inputs, array('campo'=>':data_acesso', 'valor'=>$bi_log_acesso->getData_acesso()->format('Y-m-d H:i:s')));
		}
		else
		{
			array_push($inputs, array('campo'=>':data_acesso', 'valor'=>null));
		}
		try
		{
			$sql = "UPDATE  bi_log_acesso  SET codigo = :codigo, usuario = :usuario, analise = :analise, pagina = :pagina, data_acesso = :data_acesso WHERE codigo = :codigo  ";
			return $this->_funcoes_bd->executarSql($sql,$inputs);
		}
		catch (Exception $e)
		{
			throw new Exception($e->getMessage());
		}
	}
	public function excluir($bi_log_acesso)
	{
		try
		{
			$sql = "DELETE FROM bi_log_acesso  WHERE codigo =  :codigo ";
			$inputs = array();
			array_push($inputs, array('campo'=>':codigo', 'valor'=>$bi_log_acesso->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_log_acesso";
		$listaBi_log_acesso = array();
		$rows_bi_log_acesso = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_log_acesso as $row)
		{
			$bi_log_acesso = new Bi_log_acesso();
			$bi_log_acesso->setCodigo($row['codigo']);
			if($row['usuario'] != "")
			{
				$usuarioDAO = new Bi_usuarioDAO();
				$bi_log_acesso->setUsuario($usuarioDAO->buscarBi_usuario($row['usuario']));
			}
			else
			{
				$bi_log_acesso->setUsuario(new Bi_usuario());
			}
			if($row['analise'] != "")
			{
				$analiseDAO = new Bi_analiseDAO();
				$bi_log_acesso->setAnalise($analiseDAO->buscarBi_analise($row['analise']));
			}
			else
			{
				$bi_log_acesso->setAnalise(new Bi_analise());
			}
			if($row['pagina'] != "")
			{
				$paginaDAO = new Bi_paginaDAO();
				$bi_log_acesso->setPagina($paginaDAO->buscarBi_pagina($row['pagina']));
			}
			else
			{
				$bi_log_acesso->setPagina(new Bi_pagina());
			}
			if($row['data_acesso'] != "")
			{
				$dateData_acesso = DateTime::createFromFormat('Y-m-d H:i:s', $row['data_acesso']);
				$bi_log_acesso->setData_acesso($dateData_acesso);
			}
			array_push($listaBi_log_acesso,$bi_log_acesso );
		}
		return $listaBi_log_acesso;
	}
	public function buscarBi_log_acessoPorUsuario($usuario)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_log_acesso where usuario = ".$usuario."";
		$lista_bi_log_acesso = array();
		$rows_bi_log_acesso = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_log_acesso as $row)
		{
			$bi_log_acesso = new Bi_log_acesso();
			$bi_log_acesso->setCodigo($row['codigo']);
			if($row['usuario'] != "")
			{
				$usuarioDAO = new Bi_usuarioDAO();
				$bi_log_acesso->setUsuario($usuarioDAO->buscarBi_usuario($row['usuario']));
			}
			else
			{
				$bi_log_acesso->setUsuario(new Bi_usuario());
			}
			if($row['analise'] != "")
			{
				$analiseDAO = new Bi_analiseDAO();
				$bi_log_acesso->setAnalise($analiseDAO->buscarBi_analise($row['analise']));
			}
			else
			{
				$bi_log_acesso->setAnalise(new Bi_analise());
			}
			if($row['pagina'] != "")
			{
				$paginaDAO = new Bi_paginaDAO();
				$bi_log_acesso->setPagina($paginaDAO->buscarBi_pagina($row['pagina']));
			}
			else
			{
				$bi_log_acesso->setPagina(new Bi_pagina());
			}
			if($row['data_acesso'] != "")
			{
				$dateData_acesso = DateTime::createFromFormat('Y-m-d H:i:s', $row['data_acesso']);
				$bi_log_acesso->setData_acesso($dateData_acesso);
			}
			array_push($lista_bi_log_acesso, $bi_log_acesso);
		}
		return $lista_bi_log_acesso;
	}
	public function buscarBi_log_acessoPorAnalise($analise)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_log_acesso where analise = ".$analise."";
		$lista_bi_log_acesso = array();
		$rows_bi_log_acesso = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_log_acesso as $row)
		{
			$bi_log_acesso = new Bi_log_acesso();
			$bi_log_acesso->setCodigo($row['codigo']);
			if($row['usuario'] != "")
			{
				$usuarioDAO = new Bi_usuarioDAO();
				$bi_log_acesso->setUsuario($usuarioDAO->buscarBi_usuario($row['usuario']));
			}
			else
			{
				$bi_log_acesso->setUsuario(new Bi_usuario());
			}
			if($row['analise'] != "")
			{
				$analiseDAO = new Bi_analiseDAO();
				$bi_log_acesso->setAnalise($analiseDAO->buscarBi_analise($row['analise']));
			}
			else
			{
				$bi_log_acesso->setAnalise(new Bi_analise());
			}
			if($row['pagina'] != "")
			{
				$paginaDAO = new Bi_paginaDAO();
				$bi_log_acesso->setPagina($paginaDAO->buscarBi_pagina($row['pagina']));
			}
			else
			{
				$bi_log_acesso->setPagina(new Bi_pagina());
			}
			if($row['data_acesso'] != "")
			{
				$dateData_acesso = DateTime::createFromFormat('Y-m-d H:i:s', $row['data_acesso']);
				$bi_log_acesso->setData_acesso($dateData_acesso);
			}
			array_push($lista_bi_log_acesso, $bi_log_acesso);
		}
		return $lista_bi_log_acesso;
	}
	public function buscarBi_log_acessoPorPagina($pagina)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_log_acesso where pagina = ".$pagina."";
		$lista_bi_log_acesso = array();
		$rows_bi_log_acesso = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_log_acesso as $row)
		{
			$bi_log_acesso = new Bi_log_acesso();
			$bi_log_acesso->setCodigo($row['codigo']);
			if($row['usuario'] != "")
			{
				$usuarioDAO = new Bi_usuarioDAO();
				$bi_log_acesso->setUsuario($usuarioDAO->buscarBi_usuario($row['usuario']));
			}
			else
			{
				$bi_log_acesso->setUsuario(new Bi_usuario());
			}
			if($row['analise'] != "")
			{
				$analiseDAO = new Bi_analiseDAO();
				$bi_log_acesso->setAnalise($analiseDAO->buscarBi_analise($row['analise']));
			}
			else
			{
				$bi_log_acesso->setAnalise(new Bi_analise());
			}
			if($row['pagina'] != "")
			{
				$paginaDAO = new Bi_paginaDAO();
				$bi_log_acesso->setPagina($paginaDAO->buscarBi_pagina($row['pagina']));
			}
			else
			{
				$bi_log_acesso->setPagina(new Bi_pagina());
			}
			if($row['data_acesso'] != "")
			{
				$dateData_acesso = DateTime::createFromFormat('Y-m-d H:i:s', $row['data_acesso']);
				$bi_log_acesso->setData_acesso($dateData_acesso);
			}
			array_push($lista_bi_log_acesso, $bi_log_acesso);
		}
		return $lista_bi_log_acesso;
	}
	public function buscarBi_log_acessoPorData_acesso($data_acesso)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_log_acesso where data_acesso like '%".$data_acesso."%'";
		$lista_bi_log_acesso = array();
		$rows_bi_log_acesso = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_log_acesso as $row)
		{
			$bi_log_acesso = new Bi_log_acesso();
			$bi_log_acesso->setCodigo($row['codigo']);
			if($row['usuario'] != "")
			{
				$usuarioDAO = new Bi_usuarioDAO();
				$bi_log_acesso->setUsuario($usuarioDAO->buscarBi_usuario($row['usuario']));
			}
			else
			{
				$bi_log_acesso->setUsuario(new Bi_usuario());
			}
			if($row['analise'] != "")
			{
				$analiseDAO = new Bi_analiseDAO();
				$bi_log_acesso->setAnalise($analiseDAO->buscarBi_analise($row['analise']));
			}
			else
			{
				$bi_log_acesso->setAnalise(new Bi_analise());
			}
			if($row['pagina'] != "")
			{
				$paginaDAO = new Bi_paginaDAO();
				$bi_log_acesso->setPagina($paginaDAO->buscarBi_pagina($row['pagina']));
			}
			else
			{
				$bi_log_acesso->setPagina(new Bi_pagina());
			}
			if($row['data_acesso'] != "")
			{
				$dateData_acesso = DateTime::createFromFormat('Y-m-d H:i:s', $row['data_acesso']);
				$bi_log_acesso->setData_acesso($dateData_acesso);
			}
			array_push($lista_bi_log_acesso, $bi_log_acesso);
		}
		return $lista_bi_log_acesso;
	}
}