<?php

require_once($config->diretorio_raiz()."/src/model/bd/Conexao.php");
require_once($config->diretorio_raiz()."/src/controller/Funcoes_arquivo.php");
class Funcoes_bd
{
	private $_conexao;
	function __construct()
	{
		$this->_conexao = Conexao::obterConexao();
	}
	
	public function sql($sql)
	{
		$rows = array();
		$rows = $this->_conexao->query($sql);
		return  $rows;
	}
	public function sqlArrayInputs($sql, $inputs)
	{
		$stmt = $this->_conexao->prepare($sql);
		for ($i=0; $i < count($inputs); $i++)
		{
			if(is_int($inputs[$i]["valor"]))
			 $param = PDO::PARAM_INT;
			elseif(is_bool($inputs[$i]["valor"]))
			 $param = PDO::PARAM_BOOL;
			elseif(is_null($inputs[$i]["valor"]))
			 $param = PDO::PARAM_NULL;
			elseif(is_string($inputs[$i]["valor"]))
			 $param = PDO::PARAM_STR;
			else
			 $param = FALSE;
			$stmt->bindValue($inputs[$i]["campo"],$inputs[$i]["valor"], $param);	
		}
		$result = $stmt->execute();
		$rows = array();
		$rows = $stmt->fetchAll();
		return  $rows;
	}
	public function executarSql($sql,$inputs)
	{
		//echo $sql . " <br>";
		//session_start();
		$permitir = true;
		$funcoes_arquivo = new Funcoes_arquivo();
		if(! isset($_SESSION["tipo_usuario"]))//primeiro cadastro
		{ 
			//caso não autenticado pode apenas inserir pessoa, no caso fazer seu cadastro
			if( $funcoes_arquivo->encontrar_palavra_no_texto("insert", $sql, false, true) and  $funcoes_arquivo->encontrar_palavra_no_texto("pessoa", $sql, false, true) and  $funcoes_arquivo->encontrar_palavra_no_texto("email", $sql, false, true))
			{	
				$permitir = true;
			}	
		}
		elseif($_SESSION["tipo_usuario"] == "3") //cliente
		{
			//cliente so pode alterar seus registros, seu codigo de sessão deve estar no sql
			$permitir = true;
			//echo $sql;
			/*if( $funcoes_arquivo->encontrar_palavra_no_texto($_SESSION["codigo_usuario"], $sql, false, true))
			{
				$permitir = true;
			}
			foreach($inputs as $imp)
			{
				//primeiro trata tabelas que não som de pessoas e depois trata tabela pessoa
				if(($funcoes_arquivo->encontrar_palavra_no_texto("pessoa", $imp["campo"], false, true) and $imp["valor"] == $_SESSION["codigo_usuario"]) 
				or ($funcoes_arquivo->encontrar_palavra_no_texto("pessoa", $sql, false, true) and $funcoes_arquivo->encontrar_palavra_no_texto("codigo", $imp["campo"], false, true) and $imp["valor"] == $_SESSION["codigo_usuario"])
				)
				{
					$permitir = true;
				}
			}*/
		}
		else
		{
			$permitir = true;
		}
		
		if($permitir)
		{	
			$stmt = $this->_conexao->prepare($sql);
			for ($i=0; $i < count($inputs); $i++)
			{
				/*
				if (empty($inputs[$i]["valor"]))
				{	
					echo "null, ";
				}	
				else
				{
					echo "'".$inputs[$i]["valor"]."', ";
				}*/
				
				$stmt->bindValue($inputs[$i]["campo"],$inputs[$i]["valor"]);
				
			}
			
			$result = $stmt->execute();
			if (!$result)
			{	
				throw new Exception($stmt->errorInfo()[0]. " - ".$stmt->errorInfo()[1]." - ".$stmt->errorInfo()[2]);
			}
			else
			{
				return $this->_conexao->lastInsertId();
			}
		}
		else
		{
				throw new Exception("Sem permissão");
		}
		
	}
	
	public function escape($str)
	{
		return $this->_conexao->quote($str); 
	}
	
	
}