<?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_pagina.php");
require_once($config->diretorio_raiz()."/src/model/bd/Bi_areaDAO.php");
class Bi_paginaDAO
{
	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_pagina)
	{
		$inputs = array();
		if($bi_pagina->getCodigo() != "")
		{
			array_push($inputs, array('campo'=>':codigo', 'valor'=>$bi_pagina->getCodigo()));
		}
		else
		{
			array_push($inputs, array('campo'=>':codigo', 'valor'=>null));
		}
		if($bi_pagina->getNome() != "")
		{
			array_push($inputs, array('campo'=>':nome', 'valor'=>$bi_pagina->getNome()));
		}
		else
		{
			array_push($inputs, array('campo'=>':nome', 'valor'=>null));
		}
		if($bi_pagina->getArea() != "")
		{
			array_push($inputs, array('campo'=>':area', 'valor'=>$bi_pagina->getArea()));
		}
		else
		{
			array_push($inputs, array('campo'=>':area', 'valor'=>null));
		}
		if($bi_pagina->getLayout() != "")
		{
			array_push($inputs, array('campo'=>':layout', 'valor'=>$bi_pagina->getLayout()));
		}
		else
		{
			array_push($inputs, array('campo'=>':layout', 'valor'=>null));
		}
		if($bi_pagina->getTempo_visivel_publico() != "")
		{
			array_push($inputs, array('campo'=>':tempo_visivel_publico', 'valor'=>$bi_pagina->getTempo_visivel_publico()));
		}
		else
		{
			array_push($inputs, array('campo'=>':tempo_visivel_publico', 'valor'=>null));
		}
		if($bi_pagina->getData_ini_visivel_publico() instanceof DateTime)
		{
			array_push($inputs, array('campo'=>':data_ini_visivel_publico', 'valor'=>$bi_pagina->getData_ini_visivel_publico()->format('Y-m-d H:i:s')));
		}
		else
		{
			array_push($inputs, array('campo'=>':data_ini_visivel_publico', 'valor'=>null));
		}
		if($bi_pagina->getLink_externo() != "")
		{
			array_push($inputs, array('campo'=>':link_externo', 'valor'=>$bi_pagina->getLink_externo()));
		}
		else
		{
			array_push($inputs, array('campo'=>':link_externo', 'valor'=>null));
		}
		try
		{
			$sql = "INSERT INTO bi_pagina (codigo, nome, area, layout, tempo_visivel_publico, data_ini_visivel_publico, link_externo) VALUES (:codigo, :nome, :area, :layout, :tempo_visivel_publico, :data_ini_visivel_publico, :link_externo)  ";
			return $this->_funcoes_bd->executarSql($sql,$inputs);
		}
		catch (Exception $e)
		{
			throw new Exception($e->getMessage());
		}
	}
	public function buscarBi_pagina($codigo)
	{
		$inputs = array();
		array_push($inputs, array('campo'=>':codigo', 'valor'=>$codigo));
		$sql = "SELECT * FROM bi_pagina where codigo = :codigo "; 
		$bi_pagina = new Bi_pagina();
		$rows_bi_pagina = $this->_funcoes_bd->sqlArrayInputs($sql, $inputs);
		foreach ($rows_bi_pagina as $row)
		{
			$bi_pagina->setCodigo($row['codigo']);
			$bi_pagina->setNome($row['nome']);
			if($row['area'] != "")
			{
				$areaDAO = new Bi_areaDAO();
				$bi_pagina->setArea($areaDAO->buscarBi_area($row['area']));
			}
			else
			{
				$bi_pagina->setArea(new Bi_area());
			}
			$bi_pagina->setLayout($row['layout']);
			$bi_pagina->setTempo_visivel_publico($row['tempo_visivel_publico']);
			if($row['data_ini_visivel_publico'] != "")
			{
				$dateData_ini_visivel_publico = DateTime::createFromFormat('Y-m-d H:i:s', $row['data_ini_visivel_publico']);
				$bi_pagina->setData_ini_visivel_publico($dateData_ini_visivel_publico);
			}
			$bi_pagina->setLink_externo($row['link_externo']);
		}
		return $bi_pagina;
	}
	public function buscarFiltro($where)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_pagina  ".$where;
		$lista_bi_pagina = array();
		$rows_bi_pagina = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_pagina as $row)
		{
			$bi_pagina = new Bi_pagina();
			$bi_pagina->setCodigo($row['codigo']);
			$bi_pagina->setNome($row['nome']);
			if($row['area'] != "")
			{
				$areaDAO = new Bi_areaDAO();
				$bi_pagina->setArea($areaDAO->buscarBi_area($row['area']));
			}
			else
			{
				$bi_pagina->setArea(new Bi_area());
			}
			$bi_pagina->setLayout($row['layout']);
			$bi_pagina->setTempo_visivel_publico($row['tempo_visivel_publico']);
			if($row['data_ini_visivel_publico'] != "")
			{
				$dateData_ini_visivel_publico = DateTime::createFromFormat('Y-m-d H:i:s', $row['data_ini_visivel_publico']);
				$bi_pagina->setData_ini_visivel_publico($dateData_ini_visivel_publico);
			}
			$bi_pagina->setLink_externo($row['link_externo']);
			array_push($lista_bi_pagina, $bi_pagina);
		}
		return $lista_bi_pagina;
	}
	public function atualizar($bi_pagina)
	{
		$inputs = array();
		if($bi_pagina->getCodigo() != "")
		{
			array_push($inputs, array('campo'=>':codigo', 'valor'=>$bi_pagina->getCodigo()));
		}
		else
		{
			array_push($inputs, array('campo'=>':codigo', 'valor'=>null));
		}
		if($bi_pagina->getNome() != "")
		{
			array_push($inputs, array('campo'=>':nome', 'valor'=>$bi_pagina->getNome()));
		}
		else
		{
			array_push($inputs, array('campo'=>':nome', 'valor'=>null));
		}
		if($bi_pagina->getArea() != "")
		{
			array_push($inputs, array('campo'=>':area', 'valor'=>$bi_pagina->getArea()));
		}
		else
		{
			array_push($inputs, array('campo'=>':area', 'valor'=>null));
		}
		if($bi_pagina->getLayout() != "")
		{
			array_push($inputs, array('campo'=>':layout', 'valor'=>$bi_pagina->getLayout()));
		}
		else
		{
			array_push($inputs, array('campo'=>':layout', 'valor'=>null));
		}
		if($bi_pagina->getTempo_visivel_publico() != "")
		{
			array_push($inputs, array('campo'=>':tempo_visivel_publico', 'valor'=>$bi_pagina->getTempo_visivel_publico()));
		}
		else
		{
			array_push($inputs, array('campo'=>':tempo_visivel_publico', 'valor'=>null));
		}
		if($bi_pagina->getData_ini_visivel_publico() instanceof DateTime)
		{
			array_push($inputs, array('campo'=>':data_ini_visivel_publico', 'valor'=>$bi_pagina->getData_ini_visivel_publico()->format('Y-m-d H:i:s')));
		}
		else
		{
			array_push($inputs, array('campo'=>':data_ini_visivel_publico', 'valor'=>null));
		}
		if($bi_pagina->getLink_externo() != "")
		{
			array_push($inputs, array('campo'=>':link_externo', 'valor'=>$bi_pagina->getLink_externo()));
		}
		else
		{
			array_push($inputs, array('campo'=>':link_externo', 'valor'=>null));
		}
		try
		{
			$sql = "UPDATE  bi_pagina  SET codigo = :codigo, nome = :nome, area = :area, layout = :layout, tempo_visivel_publico = :tempo_visivel_publico, data_ini_visivel_publico = :data_ini_visivel_publico, link_externo = :link_externo WHERE codigo = :codigo  ";
			return $this->_funcoes_bd->executarSql($sql,$inputs);
		}
		catch (Exception $e)
		{
			throw new Exception($e->getMessage());
		}
	}
	public function excluir($bi_pagina)
	{
		try
		{
			$sql = "DELETE FROM bi_pagina  WHERE codigo =  :codigo ";
			$inputs = array();
			array_push($inputs, array('campo'=>':codigo', 'valor'=>$bi_pagina->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_pagina";
		$listaBi_pagina = array();
		$rows_bi_pagina = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_pagina as $row)
		{
			$bi_pagina = new Bi_pagina();
			$bi_pagina->setCodigo($row['codigo']);
			$bi_pagina->setNome($row['nome']);
			if($row['area'] != "")
			{
				$areaDAO = new Bi_areaDAO();
				$bi_pagina->setArea($areaDAO->buscarBi_area($row['area']));
			}
			else
			{
				$bi_pagina->setArea(new Bi_area());
			}
			$bi_pagina->setLayout($row['layout']);
			$bi_pagina->setTempo_visivel_publico($row['tempo_visivel_publico']);
			if($row['data_ini_visivel_publico'] != "")
			{
				$dateData_ini_visivel_publico = DateTime::createFromFormat('Y-m-d H:i:s', $row['data_ini_visivel_publico']);
				$bi_pagina->setData_ini_visivel_publico($dateData_ini_visivel_publico);
			}
			$bi_pagina->setLink_externo($row['link_externo']);
			array_push($listaBi_pagina,$bi_pagina );
		}
		return $listaBi_pagina;
	}
	public function buscarBi_paginaPorNome($nome)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_pagina where nome like '%".$nome."%'";
		$lista_bi_pagina = array();
		$rows_bi_pagina = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_pagina as $row)
		{
			$bi_pagina = new Bi_pagina();
			$bi_pagina->setCodigo($row['codigo']);
			$bi_pagina->setNome($row['nome']);
			if($row['area'] != "")
			{
				$areaDAO = new Bi_areaDAO();
				$bi_pagina->setArea($areaDAO->buscarBi_area($row['area']));
			}
			else
			{
				$bi_pagina->setArea(new Bi_area());
			}
			$bi_pagina->setLayout($row['layout']);
			$bi_pagina->setTempo_visivel_publico($row['tempo_visivel_publico']);
			if($row['data_ini_visivel_publico'] != "")
			{
				$dateData_ini_visivel_publico = DateTime::createFromFormat('Y-m-d H:i:s', $row['data_ini_visivel_publico']);
				$bi_pagina->setData_ini_visivel_publico($dateData_ini_visivel_publico);
			}
			$bi_pagina->setLink_externo($row['link_externo']);
			array_push($lista_bi_pagina, $bi_pagina);
		}
		return $lista_bi_pagina;
	}
	public function buscarBi_paginaPorArea($area)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_pagina where area = ".$area."";
		$lista_bi_pagina = array();
		$rows_bi_pagina = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_pagina as $row)
		{
			$bi_pagina = new Bi_pagina();
			$bi_pagina->setCodigo($row['codigo']);
			$bi_pagina->setNome($row['nome']);
			if($row['area'] != "")
			{
				$areaDAO = new Bi_areaDAO();
				$bi_pagina->setArea($areaDAO->buscarBi_area($row['area']));
			}
			else
			{
				$bi_pagina->setArea(new Bi_area());
			}
			$bi_pagina->setLayout($row['layout']);
			$bi_pagina->setTempo_visivel_publico($row['tempo_visivel_publico']);
			if($row['data_ini_visivel_publico'] != "")
			{
				$dateData_ini_visivel_publico = DateTime::createFromFormat('Y-m-d H:i:s', $row['data_ini_visivel_publico']);
				$bi_pagina->setData_ini_visivel_publico($dateData_ini_visivel_publico);
			}
			$bi_pagina->setLink_externo($row['link_externo']);
			array_push($lista_bi_pagina, $bi_pagina);
		}
		return $lista_bi_pagina;
	}
	public function buscarBi_paginaPorLayout($layout)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_pagina where layout like '%".$layout."%'";
		$lista_bi_pagina = array();
		$rows_bi_pagina = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_pagina as $row)
		{
			$bi_pagina = new Bi_pagina();
			$bi_pagina->setCodigo($row['codigo']);
			$bi_pagina->setNome($row['nome']);
			if($row['area'] != "")
			{
				$areaDAO = new Bi_areaDAO();
				$bi_pagina->setArea($areaDAO->buscarBi_area($row['area']));
			}
			else
			{
				$bi_pagina->setArea(new Bi_area());
			}
			$bi_pagina->setLayout($row['layout']);
			$bi_pagina->setTempo_visivel_publico($row['tempo_visivel_publico']);
			if($row['data_ini_visivel_publico'] != "")
			{
				$dateData_ini_visivel_publico = DateTime::createFromFormat('Y-m-d H:i:s', $row['data_ini_visivel_publico']);
				$bi_pagina->setData_ini_visivel_publico($dateData_ini_visivel_publico);
			}
			$bi_pagina->setLink_externo($row['link_externo']);
			array_push($lista_bi_pagina, $bi_pagina);
		}
		return $lista_bi_pagina;
	}
	public function buscarBi_paginaPorTempo_visivel_publico($tempo_visivel_publico)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_pagina where tempo_visivel_publico like '%".$tempo_visivel_publico."%'";
		$lista_bi_pagina = array();
		$rows_bi_pagina = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_pagina as $row)
		{
			$bi_pagina = new Bi_pagina();
			$bi_pagina->setCodigo($row['codigo']);
			$bi_pagina->setNome($row['nome']);
			if($row['area'] != "")
			{
				$areaDAO = new Bi_areaDAO();
				$bi_pagina->setArea($areaDAO->buscarBi_area($row['area']));
			}
			else
			{
				$bi_pagina->setArea(new Bi_area());
			}
			$bi_pagina->setLayout($row['layout']);
			$bi_pagina->setTempo_visivel_publico($row['tempo_visivel_publico']);
			if($row['data_ini_visivel_publico'] != "")
			{
				$dateData_ini_visivel_publico = DateTime::createFromFormat('Y-m-d H:i:s', $row['data_ini_visivel_publico']);
				$bi_pagina->setData_ini_visivel_publico($dateData_ini_visivel_publico);
			}
			$bi_pagina->setLink_externo($row['link_externo']);
			array_push($lista_bi_pagina, $bi_pagina);
		}
		return $lista_bi_pagina;
	}
	public function buscarBi_paginaPorData_ini_visivel_publico($data_ini_visivel_publico)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_pagina where data_ini_visivel_publico like '%".$data_ini_visivel_publico."%'";
		$lista_bi_pagina = array();
		$rows_bi_pagina = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_pagina as $row)
		{
			$bi_pagina = new Bi_pagina();
			$bi_pagina->setCodigo($row['codigo']);
			$bi_pagina->setNome($row['nome']);
			if($row['area'] != "")
			{
				$areaDAO = new Bi_areaDAO();
				$bi_pagina->setArea($areaDAO->buscarBi_area($row['area']));
			}
			else
			{
				$bi_pagina->setArea(new Bi_area());
			}
			$bi_pagina->setLayout($row['layout']);
			$bi_pagina->setTempo_visivel_publico($row['tempo_visivel_publico']);
			if($row['data_ini_visivel_publico'] != "")
			{
				$dateData_ini_visivel_publico = DateTime::createFromFormat('Y-m-d H:i:s', $row['data_ini_visivel_publico']);
				$bi_pagina->setData_ini_visivel_publico($dateData_ini_visivel_publico);
			}
			$bi_pagina->setLink_externo($row['link_externo']);
			array_push($lista_bi_pagina, $bi_pagina);
		}
		return $lista_bi_pagina;
	}
	public function buscarBi_paginaPorLink_externo($link_externo)
	{
		$inputs = array();
		$sql = "SELECT * FROM bi_pagina where link_externo like '%".$link_externo."%'";
		$lista_bi_pagina = array();
		$rows_bi_pagina = $this->_funcoes_bd->sql($sql);
		foreach ($rows_bi_pagina as $row)
		{
			$bi_pagina = new Bi_pagina();
			$bi_pagina->setCodigo($row['codigo']);
			$bi_pagina->setNome($row['nome']);
			if($row['area'] != "")
			{
				$areaDAO = new Bi_areaDAO();
				$bi_pagina->setArea($areaDAO->buscarBi_area($row['area']));
			}
			else
			{
				$bi_pagina->setArea(new Bi_area());
			}
			$bi_pagina->setLayout($row['layout']);
			$bi_pagina->setTempo_visivel_publico($row['tempo_visivel_publico']);
			if($row['data_ini_visivel_publico'] != "")
			{
				$dateData_ini_visivel_publico = DateTime::createFromFormat('Y-m-d H:i:s', $row['data_ini_visivel_publico']);
				$bi_pagina->setData_ini_visivel_publico($dateData_ini_visivel_publico);
			}
			$bi_pagina->setLink_externo($row['link_externo']);
			array_push($lista_bi_pagina, $bi_pagina);
		}
		return $lista_bi_pagina;
	}
}