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); } }
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() })); } } } }