<?php
class AuditoriaDAO{
    private static $tabela = 'auditorias';
    private static $seq    = 'idAuditoria';
    
    private $banco;
    private $ultimoId;
    
    public function __construct($tipo, $acao, $idAudit = false) {
        $this->banco = new Banco();
        
        $audit = new Auditoria();
        $audit->setUltAcao($acao);
        
        if($tipo == 'insere'){
            $audit->setUsuarioCadastro(new Usuario($_SESSION["login"]["idUsuario"]));
            $audit->setDtCadastro(date("Y-m-d H:i:s"));
            $idAudit = self::insere($audit);
            self::setUltimoId($idAudit);
        }
        
        if($tipo == 'edita'){
            $audit->setIdAuditoria($idAudit);
            $audit->setUsuarioModificacao(new Usuario($_SESSION["login"]["idUsuario"]));
            $audit->setDtModificacao(date("Y-m-d H:i:s"));
            self::altera($audit);
        }
        
        return $idAudit;
    }
    
    public function insere(Auditoria $objAuditoria){
        $dados["idUsuarioCadastro"] = $objAuditoria->getUsuarioCadastro()->getIdUsuario();
        $dados["dtCadastro"]        = $objAuditoria->getDtCadastro();
        $dados["ultAcao"]           = $objAuditoria->getUltAcao();
        $dados["Historico"]         = "Inserido por ".$_SESSION["login"]["Nome"]." em ".date("d/m/Y")." as ".date("H:i:s")." | ";
        
        $insere = $this->banco->insere(self::$tabela, $dados, self::$seq);
        
        if($insere) return $insere; else return false;
        
    }
    
    public function altera(Auditoria $objAuditoria){
        $dados["idUsuarioModificacao"] = $objAuditoria->getUsuarioModificacao()->getIdUsuario();
        $dados["dtModificacao"]        = $objAuditoria->getDtModificacao();
        $dados["ultAcao"]              = $objAuditoria->getUltAcao();
        
        $altera = $this->banco->alterar(self::$tabela, $dados, self::$seq, $objAuditoria->getIdAuditoria());
        
        if($altera) return $objAuditoria->getIdAuditoria(); else return false;
    }
    
    public function setUltimoId($id){
        $this->ultimoId = $id;
    }
    public function getUltimoId(){
        return $this->ultimoId;
    }
    
}