Beispiel #1
0
        public async Task <(bool, bool, bool)> GenerateToken(string cpf, int finalidade)
        {
            if (Methods.ValidarCpf(cpf))
            {
                var user = _usuarioService.GetByCpf(Methods.RemoveSpecialsCaracts(cpf));
                if (user != null)
                {
                    if (_recuperarSenhaService.UserNotHasToken(user.IdUsuario))
                    {
                        // Objeto será criado e inserido apenas se o usuario não possuir Tokens validos cadastrados.
                        var recSenha = new RecuperarSenhaModel
                        {
                            Token       = Methods.GenerateToken(),
                            InicioToken = DateTime.Now,
                            FimToken    = DateTime.Now.AddDays(1),
                            EhValido    = Convert.ToByte(true),
                            IdUsuario   = user.IdUsuario
                        };

                        if (_recuperarSenhaService.Insert(recSenha))
                        {
                            try
                            {
                                await _emailService.SendEmailAsync(user.Email, "MonitoraSUS - Acesso ao Sistema", _usuarioService.MessageEmail(recSenha, finalidade));

                                return(true, true, true);
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine("An exception ({0}) occurred.",
                                                  ex.GetType().Name);
                                Console.WriteLine("   Message:\n{0}", ex.Message);
                                Console.WriteLine("   Stack Trace:\n   {0}", ex.StackTrace);
                                throw ex.InnerException;
                            }
                        }
                        return(true, true, false);  // Falha na inserção do recuperarSenha
                    }
                    // User válido porém tem token.
                    return(true, false, false);
                }
            }
            return(false, false, false);
        }