<?php

/**
 * Classe que implementa a estrutura do banco SACC
 */
class SACC{
    
    private static $conn;

        /**
     * Funcao construtora da classe
     * 
     * @param type $par
     */    
    public function __construct($par = array()){
        
        foreach ($par as $indice => $valor) {
            $this->$indice = $valor;
        }
        
        if(!isset(self::$conn)){
            self::$conn = new PDO(DSN_SACC, USER, PASS);
            self::$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            self::$conn->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_EMPTY_STRING);
        }
    }
    
    /**
     * Funcao de retorno
     * @return type Retorno da base.
     */
    public function ok(){
        return $this->database;
    }
    
    public function desconectar(){
        return self::$conn = null;
    }
    
    public function sql($sql){
        try{
            
            return self::$conn->exec($sql);
            
        } catch (Exception $ex) {
            return "Erro na funcao SQL: ".$ex;
        }
    }

    public function mysql_insert_id() {
        try{

            return self::$conn->lastInsertId();
            
        } catch (Exception $ex) {
            return "Erro na funcao mysql_insert_id: ".$ex;
        }        
    }

    public function todos_registros($query, $modo = "assoc") {
        
        try{
            $tmp = self::$conn->query($query);

            $registros = array();
            
            if($modo == "assoc") {
                while ($linha = $tmp->fetch(PDO::FETCH_ASSOC)) {
                    $registros[] = $linha;
                }
            }
            else
                if($modo == "array") {
                    while ($linha = $tmp->fetch(PDO::FETCH_NUM)) {
                        $registros[] = $linha;
                    }
                }

            return $registros;
            
        } catch (Exception $ex) {
            echo "error".$ex;
        }        
    }

    public function registro($query) {
        try{

            $resultado = self::$conn->query($query);

            return $resultado->fetchColumn() ? $resultado->fetch(PDO::FETCH_NUM) : array();
            
        } catch (Exception $ex) {
            return "Erro na funcao registro: ".$ex;
        }        
    }

    public function coluna($query) {
        try{
            
            $tmp = self::$conn->query($query);

            $registros = array();

            while ($linha = $tmp->fetch(PDO::FETCH_ASSOC)) {
                $registros[] = reset($linha);
            }

            return $registros;
            
        } catch (Exception $ex) {
            return "Erro na funcao coluna: ".$ex;
        }
    }
}
