public async Task<IActionResult> NuevoMensaje(Mensaje mensaje, List<string> Para, List<string> CopiaOculta) { if (ModelState.IsValid) { if (Para.Count() > 0 || CopiaOculta.Count() > 0) { if (await _servicioMensajeria.EnviarMensaje(mensaje, Para, CopiaOculta)) { ViewBag.MensajeExito = "Mensaje enviado"; _servicioMensajeria.EnviarEmails(Para, CopiaOculta); //todo enviar de forma asincrona return View(); } } else { ViewBag.MensajeError = $"Iiiioooo... sipote... selecciona a alguien pa' mandarle el mensaje, ¿no?"; } } else { ViewBag.MensajeError = $"Uppss... parece que los datos no son válidos"; } SelectList personajes = new SelectList(await _servicioPersonajes.GetEnumeradoPersonajes(), "Id", "Descripcion"); ViewBag.PersonajesPara = personajes; ViewBag.PersonajesCopiaOculta = personajes; ViewBag.Titulo = "Nuevo Mensaje"; return View(mensaje); }
public async Task<IViewComponentResult> InvokeAsync(int personajeId) { Mensaje nuevoMensaje = new Mensaje(); nuevoMensaje.RemitenteId = personajeId; return View(nuevoMensaje); }
public async Task<bool> EnviarMensaje(Mensaje mensaje, List<string> para, List<string> copiaOculta) { bool resultado = true; mensaje.FechaCreacion = DateTime.Now; if (mensaje.EsAnonimo) { mensaje.NombreParaMostrar = string.Empty; } mensaje.Destinatarios = new List<DestinatarioMensaje>(); DestinatarioMensaje destinatario; foreach (string destinatarioId in para) { destinatario = new DestinatarioMensaje(); destinatario.DestinatarioId = Convert.ToInt32(destinatarioId); destinatario.EstadoMensaje = EstadoMensaje.SinLeer; destinatario.TipoDestinatario = TipoDestinatario.Para; mensaje.Destinatarios.Add(destinatario); } foreach (string destinatarioId in copiaOculta) { destinatario = new DestinatarioMensaje(); destinatario.DestinatarioId = Convert.ToInt32(destinatarioId); destinatario.EstadoMensaje = EstadoMensaje.SinLeer; destinatario.TipoDestinatario = TipoDestinatario.CopiaOculta; mensaje.Destinatarios.Add(destinatario); } _contexto.Mensajes.Add(mensaje); await ConfirmarCambios(); return resultado; }
public async Task<IActionResult> NuevoMensaje(Mensaje mensaje, List<string> Para, List<string> CopiaOculta) { if (ModelState.IsValid) { if (Para.Count() > 0 || CopiaOculta.Count() > 0) { ApplicationUser usuario = await _userManager.GetUserAsync(User); mensaje.RemitenteId = _servicioJugadores.GetPersonajeId(usuario.Id); if (!mensaje.EsAnonimo || (mensaje.EsAnonimo && _servicioPersonajes.PuedeHacerEnvioAnonimo(mensaje.RemitenteId))) { if (await _servicioMensajeria.EnviarMensaje(mensaje, Para, CopiaOculta)) { ViewBag.MensajeExito = "Mensaje enviado"; _servicioMensajeria.EnviarEmails(Para, CopiaOculta); //todo enviar de forma asincrona return View(); } } else { ViewBag.MensajeError = $"Uppss... esto es delicado. Parece que estás intentando mandar el mensaje como anónimo pero tu personaje no tiene las habilidades para ello"; } } else { ViewBag.MensajeError = $"Iiiioooo... sipote... selecciona a alguien pa' mandarle el mensaje, ¿no?"; } } else { ViewBag.MensajeError = $"Uppss... parece que los datos no son válidos"; } SelectList personajes = new SelectList(await _servicioPersonajes.GetEnumeradoPersonajes(), "Id", "Descripcion"); ViewBag.Personajes = personajes; return View(mensaje); }