Example #1
0
 private static void GetEmptyReto(ref List <DetalleReto> lst)
 {
     if (lst.Count == 0)
     {
         DetalleReto dr = new DetalleReto()
         {
             IdReto       = "",
             Name         = "Sin Retos",
             TotalEquipo  = 0,
             TotalReto    = 0,
             TotalUsuario = 0,
         };
         lst.Add(dr);
     }
 }
Example #2
0
        public void GetDetalleReto(string user, Reto a, List <DetalleReto> lst, bool isReporte = false)
        {
            Task <List <Equipo> > t = Task.Factory.StartNew(() => GetEquipos(a.Equipos));

            List <LogEjercicio> datos        = GetDatosRetoEquipo(a);
            List <Equipo>       equipos      = t.Result;
            int    totalPersonal             = 0;
            Equipo miEquipo                  = new Equipo();
            List <DetalleEquipo> team_detail = new List <DetalleEquipo>();

            if (datos.Count > 0)
            {
                Parallel.ForEach(equipos, (equipo) =>
                {
                    DetalleEquipo detall = new DetalleEquipo();
                    foreach (var miembro in equipo.Miembros)
                    {
                        //mis detalles personales
                        if (user == miembro)
                        {
                            detall.Total   += totalPersonal = datos.Where(x => x.Usuario == miembro).Sum(x => x.Conteo);
                            detall.MiEquipo = true;
                        }
                        else
                        {
                            detall.Total += datos.Where(x => x.Usuario == miembro).Sum(x => x.Conteo);
                        }
                    }
                    detall.Equipo = equipo.Id;
                    team_detail.Add(detall);
                });
                int pos = 1;
                foreach (var detalleEquipo in team_detail.OrderByDescending(x => x.Total))
                {
                    detalleEquipo.Posicion = pos++;
                }
                if (a.Tipo == TipoReto.Superando)
                {
                    if (!isReporte)
                    {
                        DetalleReto dr = new DetalleReto()
                        {
                            IdReto         = a.Id,
                            Name           = a.Name,
                            TotalEquipo    = team_detail.Where(x => x.MiEquipo).Sum(x => x.Total),
                            PosicionEquipo = team_detail.Where(x => x.MiEquipo).Select(x => x.Posicion).First(),
                            TotalReto      = team_detail.Where(x => x.Posicion == 1).Sum(x => x.Total),
                            TotalUsuario   = totalPersonal,
                        };
                        lst.Add(dr);
                    }
                    else
                    {
                        lst.AddRange(team_detail.Select(x => new DetalleReto()
                        {
                            IdReto = a.Id, Name = a.Name, TotalEquipo = x.Total, PosicionEquipo = x.Posicion, TotalReto = x.Total, NombreEquipo = equipos.Where(y => y.Id == x.Equipo).Select(y => y.Name).First()
                        }));
                    }
                }
                else
                {
                    if (!isReporte)
                    {
                        DetalleReto dr = new DetalleReto()
                        {
                            IdReto         = a.Id,
                            Name           = a.Name,
                            TotalEquipo    = team_detail.Where(x => x.MiEquipo).Sum(x => x.Total),
                            PosicionEquipo = team_detail.Where(x => x.MiEquipo).Select(x => x.Posicion).First(),
                            TotalReto      = a.Meta,
                            TotalUsuario   = totalPersonal,
                        };
                        lst.Add(dr);
                    }
                    else
                    {
                        lst.AddRange(team_detail.Select(x => new DetalleReto()
                        {
                            IdReto         = a.Id,
                            Name           = a.Name,
                            TotalEquipo    = x.Total,
                            PosicionEquipo = x.Posicion,
                            TotalReto      = a.Meta,
                            NombreEquipo   = equipos.Where(y => y.Id == x.Equipo).Select(y => y.Name).First()
                        }));
                    }
                }
            }
        }