<?php
class LoginDAO{
    private $banco;
    private $UsuarioDAO;
    
    private $email;
    private $senha;
    
    public function __construct($email, $senha) {
        $this->banco      = new Banco();
        $this->UsuarioDAO = new UsuarioDAO();
        
        $this->email = $email;
        $this->senha = md5('$$'.$senha.'$$'); // f!@#$you cript!
    }
    public function logar($timestamp){
        $dados["pessoas.Email"]     = $this->email;
        $dados["usuarios.Situacao"] = 'A'; // Apenas usuários ativos logam
        $dados["usuarios.senha"]    = $this->senha;
        
        $logar = $this->UsuarioDAO->busca($dados);
        
        if($logar){
          /* $logar[0] é obejto de Usuário */  
          self::gravaSessao($logar[0], $timestamp);
          return true;
        }else{
            return false;
        }
    }
    
    
    private function gravaSessao(Usuario $usuario, $timestamp){
        $modulos = self::buscaModulos($usuario);
        /* Atribuir mais segurança no ato de salvar a sessão*/
        $_SESSION['login']['idUsuario']     = $usuario->getIdUsuario();
        $_SESSION['login']['Nome']          = $usuario->getPessoa()->getNome();
        $_SESSION['login']['Nivel']['id']   = $usuario->getNivel()->getIdNivel();
        $_SESSION['login']['Nivel']['Nome'] = $usuario->getNivel()->getNome();
        $_SESSION['login']['Modulos']       = $modulos;
        $_SESSION['login']['ModuloAtual']   = null;
        $_SESSION['login']['config']        = $usuario->getConfig();
        $_SESSION['login']['timestamp']     = $timestamp;
        return;
    }
    
    private function buscaModulos(Usuario $usuario){
        $campos = 'modulos.Nome as Modulo, usuarios_modulos.idModulo as ModuloID'; 
        $join   = ' INNER JOIN modulos ON usuarios_modulos.idModulo = modulos.idModulo ';
        $param  = array('usuarios_modulos.idUsuario' => $usuario->getIdUsuario());
        $busca  = $this->banco->buscar('usuarios_modulos', $campos, $param, $join);
        if(is_array($busca)){
            foreach($busca as $ch=>$vl){
                $r[$ch]['id']   = $vl['ModuloID'];
                $r[$ch]['Nome'] =  $vl['Modulo'];
            }
            return $r;
        }else{
            return false;
        }
    }
}
