/// <summary> /// Envia um email com uma nova senha /// </summary> /// <param name="requisicaoDto"></param> /// <param name="retornoDto"></param> public bool EnviarEmailRecuperacao(RequisicaoFazerLoginDto requisicaoDto, RetornoDto retornoDto) { LogVo logVo = new LogVo() { Id = Guid.NewGuid(), IdEntidade = Guid.Empty, IdUsuario = Guid.Empty, Recurso = LogRecursos.FazerLogin }; if (string.IsNullOrWhiteSpace(requisicaoDto.Email)) { retornoDto.Mensagem = "Informe o email para recuperar a senha."; retornoDto.Retorno = false; logVo.Mensagem = retornoDto.Mensagem; logBll.RegistrarLogVo(logVo); return(false); } string mensagemErro = ""; IQueryable <UsuarioVo> query; if (!ObterQueryBd(out query, ref mensagemErro)) { retornoDto.Retorno = false; retornoDto.Mensagem = $"Erro ao listar os usuários: {mensagemErro}"; logVo.Mensagem = retornoDto.Mensagem; logBll.RegistrarLogVo(logVo); return(false); } //Procurar o email com o flag válido UsuarioVo usuarioVo; query = query.Where(u => u.Email.Trim() == requisicaoDto.Email.Trim() && u.Inativo == false); try { usuarioVo = query.FirstOrDefault(); } catch (Exception ex) { retornoDto.Retorno = false; retornoDto.Mensagem = $"Falha ao obter o usuário do banco de dados: {ex.Message}"; logVo.Mensagem = retornoDto.Mensagem; logBll.RegistrarLogVo(logVo); return(false); } if (usuarioVo == null) { retornoDto.Retorno = false; retornoDto.Mensagem = $"Email não encontrado."; logVo.Mensagem = retornoDto.Mensagem; logBll.RegistrarLogVo(logVo); return(false); } string opcoes = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@abcdefghijklmnopqrstuvxzwy"; Random random = new Random(); string senha = new string(Enumerable.Repeat(opcoes, 8).Select(s => s[random.Next(s.Length)]).ToArray()); string senhaCriptografada = ""; UtilitarioBll.CriptografarSenha(senha, ref senhaCriptografada); usuarioVo.Senha = senhaCriptografada; if (!EditarBd(usuarioVo, ref mensagemErro)) { retornoDto.Mensagem = $"Erro ao editar o usuário: {retornoDto.Mensagem}"; logVo.Mensagem = retornoDto.Mensagem; logBll.RegistrarLogVo(logVo); return(false); } UsuarioDto usuarioDto = new UsuarioDto(); if (!ConverterVoParaDto(usuarioVo, ref usuarioDto, ref mensagemErro)) { retornoDto.Mensagem = $"Erro ao converter o usuário de Vo para Dto: {mensagemErro}"; retornoDto.Retorno = false; logVo.Mensagem = retornoDto.Mensagem; logBll.RegistrarLogVo(logVo); return(false); } string corpoEmail = $"<p> Olá <strong>{usuarioVo.Nome}</strong></p>" + "<p> Sua senha para acessar o sistema PizzaByte foi recuperada. Você poderá utilizar essa senha para acessar " + "o sistema e, se desejar, você poderá alterar esta senha editando o seu usuário.</p>" + $"<p> Sua nova senha é: <strong>{senha}</strong></p><br/>" + "<p> Por favor não responda este e-mail.</p>"; if (!UtilitarioBll.EnviarEmail(usuarioVo.Email, "Recuperação de senha - PizzaByte", corpoEmail, ref mensagemErro)) { retornoDto.Mensagem = $"Problemas para enviar o email com a nova senha. Se o erro persistir, entre em contato com o suporte. Mensagem: " + mensagemErro; retornoDto.Retorno = false; logVo.Mensagem = retornoDto.Mensagem; logBll.RegistrarLogVo(logVo); return(false); } // Salva as alterações if (!pizzaByteContexto.Salvar(ref mensagemErro)) { retornoDto.Retorno = false; retornoDto.Mensagem = "Problemas para salvar a nova senha: " + mensagemErro; logVo.Mensagem = retornoDto.Mensagem; logBll.RegistrarLogVo(logVo); return(false); } retornoDto.Mensagem = "Ok"; retornoDto.Retorno = true; return(true); }