// Procesar confirmación de mail sin usar websocket
        private async Task ProcesarConfirmacionEmail(HttpContext contexto)
        {
            var email = contexto.Request.Query["Email"];

            if (string.IsNullOrEmpty(email))
            {
                await contexto.Response.WriteAsync("BadRequest: Email es requerido");
            }
            else
            {
                var usuario = await _usuarioService.ObtenerUsuarioPorEmail(email);

                if (usuario.MailEstaConfirmado)
                {
                    await contexto.Response.WriteAsync("OK");
                }
                else
                {
                    await contexto.Response.WriteAsync("EsperandoPorConfirmacionEmail");

                    usuario.MailEstaConfirmado     = true;
                    usuario.FechaConfirmacionEmail = DateTime.Now;
                    _usuarioService.ActualizarUsuario(usuario).Wait(); // Con wait esperamos a que el Task se complete
                }
            }
        }
        public async Task <IActionResult> Index(string email)
        {
            var invitacion = new InvitacionJuegoModel
            {
                InvitadoPor = email,
                Id          = Guid.NewGuid()
            };

            Request.HttpContext.Session.SetString("Email", email);
            var usuario = await _servicio.ObtenerUsuarioPorEmail(email);

            Request.HttpContext.Session.SetString("NombreCompleto", $"{ usuario.Nombre} { usuario.Apellido}");

            return(View(invitacion));
        }
示例#3
0
        public async Task <SesionJuegoModel> CrearSesionJuego(Guid idInvitacion, string emailInvitadoPor, string invitadoEmail)
        {
            var invitadoPor = await _usuarioServicio.ObtenerUsuarioPorEmail(emailInvitadoPor);

            var jugadorInvitado = await _usuarioServicio.ObtenerUsuarioPorEmail(invitadoEmail);

            SesionJuegoModel sesion = new SesionJuegoModel
            {
                Jugador1      = invitadoPor,
                Jugador2      = jugadorInvitado,
                Id            = idInvitacion,
                JugadorActivo = invitadoPor
            };

            _sesiones.Add(sesion);
            return(sesion);
        }
示例#4
0
        public async Task <IActionResult> ConfirmacionCorreo(string email)
        {
            // El mail no ha sido confirmado
            _logger.LogInformation($"##Start##  Proceso de confirmación de correo para {email} ");
            var usuario = await _servicio.ObtenerUsuarioPorEmail(email);

            var urlAccion = new UrlActionContext
            {
                Action     = "ConfirmacionCorreo",
                Controller = "RegistroUsuario",
                Values     = new { email },
                Protocol   = Request.Scheme,
                Host       = Request.Host.ToString()
            };

            var emailRegistroUsuario = new UsuarioRegistroEmailModelo
            {
                Nombre    = $"{usuario.Nombre} {usuario.Apellido}",
                Email     = email,
                AccionUrl = Url.Action(urlAccion)
            };

            var emailRenderServicio = HttpContext.RequestServices.GetService <IEmailRenderPlantillaServicio>();
            // TODO: Renderear la vista
            // var mensaje = await emailRenderServicio.RenderearTemplate("PlantillasEmail/RegistroUsuarioMail", emailRegistroUsuario, Request.Host.ToString());
            var mensaje = "Mensaje que va dentro del mail";

            try
            {
                _emailServicio.EnviarEmail(email, "Confirmación de correo de Ta Te Ti", mensaje).Wait();
            }
            catch (Exception e)
            {
            }

            ViewBag.Email = email;
            return(View());
        }