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); } }
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" }); } } }