Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
 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);
 }