Exemple #1
0
        public async Task <RespuestaDatos> GenerarEnlaceConfirmacion(string email)
        {
            var userExists = await _userManager.FindByEmailAsync(email);

            if (userExists == null)
            {
                throw new COExcepcion("La cuenta no existe. ");
            }

            var demografia = _repoDemografia.GetDemografiaPorEmail(userExists.Email);

            if (demografia == null)
            {
                RepoErrorLog.AddErrorLog(new ErrorLog
                {
                    Mensaje   = "El usuario no existe en demografia. ",
                    Traza     = "",
                    Usuario   = userExists.Email,
                    Creacion  = DateTime.Now,
                    Tipoerror = COErrorLog.USUARIO_SIN_RELACION
                });
                throw new COExcepcion("Por favor contactar a soporte técnico. ");
            }

            //Generar token de recuperación
            var code = await _userManager.GenerateEmailConfirmationTokenAsync(userExists);

            var urlApp = _configuration["App:Url"];

            //var linkConfirmation = urlApp + Url.Action("ConfirmarCuenta", "Authenticate", new
            //{
            //    userId = userExists.Email,
            //    code
            //});
            var linkConfirmation = urlApp + $@"/ConfirmarCuenta/{userExists.Email}/{code}";

            try
            {
                //Envia mensaje de registro
                await _workflowMensaje.EnviarMensajeRegistro(new DemografiaDatos
                {
                    Nombres   = demografia.Nombre,
                    Apellidos = demografia.Apellido,
                    Email     = demografia.Email
                }, linkConfirmation);

                return(new RespuestaDatos {
                    Codigo = COCodigoRespuesta.OK, Mensaje = "Se envió el enlace de confirmación a su correo electrónico."
                });
            }
            catch (Exception e)
            {
                throw new COExcepcion("No se logró enviar el correo electrónico. " + e.Message);
            }
        }
Exemple #2
0
        public async Task <RespuestaDatos> Register([FromBody] RegisterDatos model)
        {
            // Registra el usuario en el aplicativo
            ApplicationUser user = await _seguridadBiz.RegistrarUsuario(model);

            try
            {
                var urlApp = _configuration["App:Url"];
                //Generar token de confirmación
                var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                var linkConfirmation = urlApp + $@"/ConfirmarCuenta/{user.Email}/{code}";

                Console.WriteLine($@"A1 - {linkConfirmation}");


                //Envia mensaje de registro
                await _workflowMensaje.EnviarMensajeRegistro(new DemografiaDatos
                {
                    Nombres   = model.Nombres,
                    Apellidos = model.Apellidos,
                    Email     = model.Email
                }, linkConfirmation);

                return(new RespuestaDatos {
                    Codigo = COCodigoRespuesta.OK, Mensaje = $@"Hemos enviado a su correo electrónico un enlace de confirmación, por favor revise su bandeja de entrada y siga las instrucciones para activar su cuenta en {_configuration["App:Nombre"]}."
                });
            }
            catch (Exception e)
            {
                try
                {
                    RepoErrorLog.AddErrorLog(new ErrorLog
                    {
                        Mensaje   = e.Message,
                        Traza     = e.StackTrace,
                        Usuario   = user.Email,
                        Creacion  = DateTime.Now,
                        Tipoerror = COErrorLog.ENVIO_CORREO
                    });
                    return(new RespuestaDatos {
                        Codigo = COCodigoRespuesta.OK, Mensaje = $@"Se completo el registro!! Ocurrió un problema al enviar el correo de confirmación. Pongase en contacto con servicio al cliente"
                    });
                }
                catch (Exception e1)
                {
                    return(new RespuestaDatos {
                        Codigo = COCodigoRespuesta.OK, Mensaje = $@"Se completo el registro!! Ocurrió un problema al enviar el correo de confirmación. Pongase en contacto con servicio al cliente"
                    });
                }
            }
        }