///// <summary>
        ///// Selecionar um usuário especifico
        ///// </summary>
        ///// <param name="idPerfil">Identificador do Usuário</param>
        ///// <param name="resultado">Retorna se a busca foi bem sucedida por referência</param>
        ///// <returns>Objeto usuário preenchido</returns>
        public Resultado Alterar(Usuario oUsuario)
        {
            Resultado resultado = new Resultado();

            UsuarioData usuarioData = new UsuarioData();
            resultado = usuarioData.Atualizar(oUsuario);
            return resultado;
        }
        public Resultado AlterarSenha(Usuario oUsuario)
        {
            Resultado resultado = new Resultado();
            resultado = new UsuarioValidation().ValidarSenha(oUsuario);

            if (resultado.Sucesso)
            {
                oUsuario.Senha = oUsuario.NovaSenha;
                UsuarioData usuarioData = new UsuarioData();
                resultado = usuarioData.AtualizarSenha(oUsuario);

            }

            return resultado;
        }
        public Resultado Excluir(int UsuarioID)
        {
            UsuarioData oUsuarioData = new UsuarioData();

            Resultado resultado = new UsuarioData().Excluir(UsuarioID);

            if (!resultado.Sucesso)
            {
                Mensagem mensagem = new Mensagem();
                mensagem.Campo = "ExcluirUsuario";
                mensagem.Descricoes.Insert(0, "Erro ao excluir Usuário!");

                resultado.Mensagens.Add(mensagem);
                resultado.Sucesso = false;
            }
            return resultado;
        }
        public Usuario GetByID(int UsuarioID)
        {
            Usuario oUsuario = new UsuarioData().GetByID(UsuarioID);

             return oUsuario;

            //if (listaUsuario.Count == 0)
            //{
            //    Mensagem mensagem = new Mensagem();
            //    mensagem.Campo = "Usuário";
            //    mensagem.Descricoes.Add("Nenhum Usuário encontrado!");

            //    resultado.Mensagens.Add(mensagem);
            //    resultado.Sucesso = false;
            //}
            //else
            //{
            //    resultado.Sucesso = true;
            //}

            //return listaUsuario;
        }
        /// <summary>
        /// Lista vários usuários por uma condição
        /// </summary>
        /// <param name="usuarioFiltro">Condições filtradas</param>
        /// <param name="resultado">Retorna a busca foi bem sucedida por referência</param>
        /// <returns>Retorna a lista de usuários</returns>
        public List<Usuario> Listar(string usuarioFiltro, ref Resultado resultado)
        {
            List<Usuario> listaUsuario = new UsuarioData().Listar(usuarioFiltro);

            if (listaUsuario.Count == 0)
            {
                Mensagem mensagem = new Mensagem();
                mensagem.Campo = "Usuário";
                mensagem.Descricoes.Add("Nenhum Usuário encontrado!");

                resultado.Mensagens.Add(mensagem);
                resultado.Sucesso = false;
            }
            else
            {
                resultado.Sucesso = true;
            }

            return listaUsuario;
        }
        ///// <summary>
        ///// Selecionar um usuário especifico
        ///// </summary>
        ///// <param name="idPerfil">Identificador do Usuário</param>
        ///// <param name="resultado">Retorna se a busca foi bem sucedida por referência</param>
        ///// <returns>Objeto usuário preenchido</returns>
        public Resultado Inserir(Usuario oUsuario)
        {
            Resultado resultado = new Resultado();

            UsuarioData usuarioData = new UsuarioData();
            resultado = usuarioData.Inserir(oUsuario);
            return resultado;
        }
        //#region Métodos
        //#region Validação de Campos
        ///// <summary>
        ///// Verificar se já existe um algum usuário com mesmo login que está sendo pesquisado
        ///// </summary>
        internal Resultado ValidarSenha(Usuario oUsuario)
        {
            //UsuarioData usuarioData = new UsuarioData();
            Mensagem mensagem = new Mensagem();
            Resultado resultado = new Resultado();
            Usuario usuarioRetorno = new UsuarioData().Autenticar(oUsuario, ref resultado);

            if (resultado.Sucesso)
            {
                //Criptofrafa a senha atual
                MD5CryptoServiceProvider hash = new MD5CryptoServiceProvider();
                UTF8Encoding encode = new UTF8Encoding();
                byte[] senhacripto = hash.ComputeHash(encode.GetBytes(oUsuario.Senha));

                //Obtém a senha atual do BD
                byte[] pwd = (byte[])usuarioRetorno.SenhaCript;
                if (Consts.Funcoes.CompararIgualdadeByteArray(pwd, senhacripto))
                {
                    m_resultado.Sucesso = true;
                }
                else
                {
                    mensagem.Campo = "Login";
                    mensagem.Descricoes.Add("Usuário ou senha inválidos!");
                    m_resultado.Mensagens.Add(mensagem);
                    m_resultado.Sucesso = false;
                }

            }
            else
            {
                mensagem.Campo = "Login";
                mensagem.Descricoes.Add("Usuário ou senha inválidos!");
                m_resultado.Mensagens.Add(mensagem);
                m_resultado.Sucesso = false;
            }

            return m_resultado;
        }