private async Task CreateNuevaAsignacion(string jugadorId) { Asignacion asignacion = new Asignacion(); asignacion.InterludioId = _contexto.Interludios.Single(p => p.Actual == true).InterludioId; Personaje personaje = await _contexto.Personajes. Include(p => p.Seguidores).Include(p => p.TramasParticipadas) .SingleAsync(p => p.JugadorId == jugadorId); asignacion.PersonajeId = personaje.PersonajeId; PersonajeAsignacion nuevaAsignacion; foreach (ParticipantesTrama trama in personaje.TramasParticipadas) { foreach (PersonaTrasfondo seguidor in personaje.Seguidores) { nuevaAsignacion = new PersonajeAsignacion { PersonajeId = seguidor.TrasfondoRelacionadoId, TramaId = trama.TramaId, PuntosParticipacion = 0 }; asignacion.Asignaciones.Add(nuevaAsignacion); } nuevaAsignacion = new PersonajeAsignacion { PersonajeId = personaje.PersonajeId, TramaId = trama.TramaId, PuntosParticipacion = 0 }; asignacion.Asignaciones.Add(nuevaAsignacion); } _contexto.Asignaciones.Add(asignacion); await ConfirmarCambios(); }
private async Task CreateAsignacionesRestantes(Asignacion asignacion) { foreach (ParticipantesTrama trama in asignacion.Personaje.TramasParticipadas) { foreach (PersonaTrasfondo seguidor in asignacion.Personaje.Seguidores) { if (asignacion.Asignaciones. Where(a => a.PersonajeId == seguidor.TrasfondoRelacionadoId && a.TramaId == trama.TramaId).Count() == 0) { asignacion.Asignaciones.Add(new PersonajeAsignacion { PersonajeId = seguidor.TrasfondoRelacionadoId, TramaId = trama.TramaId, PuntosParticipacion = 0 }); } } if (asignacion.Asignaciones. Where(a => a.PersonajeId == asignacion.PersonajeId && a.TramaId == trama.TramaId).Count() == 0) { asignacion.Asignaciones.Add(new PersonajeAsignacion { PersonajeId = asignacion.PersonajeId, TramaId = trama.TramaId, PuntosParticipacion = 0 }); } } await ConfirmarCambios(); }
private async Task DeleteAsignacionesSobrantes(Asignacion asignacion) { List<int> tramas = asignacion.Personaje.TramasParticipadas.Select(tp => tp.TramaId).Distinct().ToList(); List<int> seguidores = asignacion.Personaje.Seguidores.Select(s => s.TrasfondoRelacionadoId).Distinct().ToList(); seguidores.Add(asignacion.PersonajeId); //incluimos el id del personaje en la lista de seguidores para facilitar la busqueda PersonajeAsignacion asignacionParaBorrar; foreach (PersonajeAsignacion personajeAsignacion in asignacion.Asignaciones) { //si el id de la trama o del seguidor/personaje no esta en las listas de ids de tramas o de seguidores, //la asignacion sobra if (!tramas.Contains(personajeAsignacion.TramaId) || !seguidores.Contains(personajeAsignacion.PersonajeId)) { asignacionParaBorrar = asignacion.Asignaciones. Where(a => a.PersonajeId == personajeAsignacion.PersonajeId && a.TramaId == personajeAsignacion.TramaId).FirstOrDefault(); this.Eliminar(asignacionParaBorrar); } } await ConfirmarCambios(); }
public async Task<IActionResult> Asignaciones(Asignacion nuevaAsignacion) { ApplicationUser usuario = await _userManager.GetUserAsync(User); if (ModelState.IsValid) { Asignacion asignacionOriginal = await _servicioAsignaciones.GetAsignacion(usuario.Id); if (nuevaAsignacion.AsignacionId == asignacionOriginal.AsignacionId && nuevaAsignacion.InterludioId == asignacionOriginal.InterludioId && nuevaAsignacion.PersonajeId == asignacionOriginal.PersonajeId) { foreach (PersonajeAsignacion pa in nuevaAsignacion.Asignaciones) { asignacionOriginal.Asignaciones.Single(a => a.PersonajeAsignacionId == pa.PersonajeAsignacionId && a.PersonajeId == pa.PersonajeId && a.TramaId == pa.TramaId).PuntosParticipacion = pa.PuntosParticipacion; } _servicioAsignaciones.Actualizar(asignacionOriginal); await _servicioAsignaciones.ConfirmarCambios(); ViewBag.MensajeExito = $"Asignaciones guardadas"; nuevaAsignacion = await _servicioAsignaciones.GetAsignacion(usuario.Id); return View(nuevaAsignacion); } else { ViewBag.MensajeError = $"Quieto parao', esos identificadores no me cuadran. No estarás intentando chanchullear esto, ¿verdad?"; nuevaAsignacion = await _servicioAsignaciones.GetAsignacion(usuario.Id); return View(nuevaAsignacion); } } ViewBag.MensajeError = $"Uppss... parece que tenemos algún problemilla"; nuevaAsignacion = await _servicioAsignaciones.GetAsignacion(usuario.Id); return View(nuevaAsignacion); }