public static TeamActivityStats getActivityStatsForTeam(Team T) { var stats = new TeamActivityStats(); var db = new ApplicationDbContext(); var teamOffsets = db.Offsets.Where(o => o.Offsetter.Team.ID == T.ID).ToList(); var teamGroupedActivities = teamOffsets.GroupBy(o => o.Pledge.Activity_Units).ToList(); var calTotal = teamGroupedActivities.FirstOrDefault(g => g.Key == PledgeActivity.ActivityUnits.Calories)?.Sum(a => a.OffsetAmount); var HoursTotal = teamGroupedActivities.FirstOrDefault(g => g.Key == PledgeActivity.ActivityUnits.Hours)?.Sum(a => a.OffsetAmount); var MinutesTotal = teamGroupedActivities.FirstOrDefault(g => g.Key == PledgeActivity.ActivityUnits.Minutes)?.Sum(a => a.OffsetAmount); var KmetersTotal = teamGroupedActivities.FirstOrDefault(g => g.Key == PledgeActivity.ActivityUnits.Kilometers)?.Sum(a => a.OffsetAmount); var MetersTotal = teamGroupedActivities.FirstOrDefault(g => g.Key == PledgeActivity.ActivityUnits.Meters)?.Sum(a => a.OffsetAmount); var MilesTotal = teamGroupedActivities.FirstOrDefault(g => g.Key == PledgeActivity.ActivityUnits.Miles)?.Sum(a => a.OffsetAmount); var SessionsTotal = teamOffsets.Count(); stats.BaseCurrencySponsoredTotal = Math.Round(CurrencyLogic.ToBase(db.PledgeContributors.Where(pc => pc.Sinner.Team.ID == T.ID).ToList()), 2); stats.BaseCurrencyRaisedTotal = Math.Round(CurrencyLogic.ToBase(db.PledgeContributors.ToList().Where(pc => pc.Pledge.Offsets.Exists(o => o.Offsetter.Team?.ID == T.ID)).ToList()), 2); MetersTotal = MetersTotal.HasValue ? MetersTotal : 0; KmetersTotal = KmetersTotal.HasValue ? KmetersTotal : 0; MinutesTotal = MinutesTotal.HasValue ? MinutesTotal : 0; MilesTotal = MilesTotal.HasValue ? MilesTotal : 0; HoursTotal = HoursTotal.HasValue ? HoursTotal : 0; HoursTotal += (MinutesTotal / 60m); KmetersTotal += (MetersTotal / 1000.00m); MilesTotal += (KmetersTotal * 0.621m); stats.Calories = calTotal.HasValue ? Math.Round(calTotal.Value, 2) : 0; stats.Hours = HoursTotal.HasValue ? Math.Round(HoursTotal.Value, 2) : 0; stats.Miles = MilesTotal.HasValue ? Math.Round(MilesTotal.Value, 2) : 0; stats.Sessions = SessionsTotal; return(stats); }
public static TeamActivityStats getActivityStatsForTeam(Team T) { var stats = new TeamActivityStats(); var db = new ApplicationDbContext(); var teamOffsets = db.Offsets.Where(o => o.Offsetter.Team.ID == T.ID).ToList(); var teamGroupedActivities = teamOffsets.GroupBy(o => o.Pledge.Activity_Units).ToList(); var calTotal = teamGroupedActivities.FirstOrDefault(g => g.Key == PledgeActivity.ActivityUnits.Calories)?.Sum(a => a.OffsetAmount); var HoursTotal = teamGroupedActivities.FirstOrDefault(g => g.Key == PledgeActivity.ActivityUnits.Hours)?.Sum(a => a.OffsetAmount); var MinutesTotal = teamGroupedActivities.FirstOrDefault(g => g.Key == PledgeActivity.ActivityUnits.Minutes)?.Sum(a => a.OffsetAmount); var KmetersTotal = teamGroupedActivities.FirstOrDefault(g => g.Key == PledgeActivity.ActivityUnits.Kilometers)?.Sum(a => a.OffsetAmount); var MetersTotal = teamGroupedActivities.FirstOrDefault(g => g.Key == PledgeActivity.ActivityUnits.Meters)?.Sum(a => a.OffsetAmount); var MilesTotal = teamGroupedActivities.FirstOrDefault(g => g.Key == PledgeActivity.ActivityUnits.Miles)?.Sum(a => a.OffsetAmount); var SessionsTotal = teamOffsets.Count(); stats.BaseCurrencySponsoredTotal = Math.Round(CurrencyLogic.ToBase(db.PledgeContributors.Where(pc => pc.Sinner.Team.ID == T.ID).ToList()),2); stats.BaseCurrencyRaisedTotal = Math.Round(CurrencyLogic.ToBase(db.PledgeContributors.ToList().Where(pc => pc.Pledge.Offsets.Exists(o => o.Offsetter.Team?.ID == T.ID)).ToList()), 2); MetersTotal = MetersTotal.HasValue ? MetersTotal : 0; KmetersTotal = KmetersTotal.HasValue ? KmetersTotal : 0; MinutesTotal = MinutesTotal.HasValue ? MinutesTotal : 0; MilesTotal = MilesTotal.HasValue ? MilesTotal : 0; HoursTotal = HoursTotal.HasValue ? HoursTotal : 0; HoursTotal += (MinutesTotal / 60m); KmetersTotal += (MetersTotal / 1000.00m); MilesTotal += (KmetersTotal * 0.621m); stats.Calories = calTotal.HasValue ? Math.Round(calTotal.Value,2) : 0; stats.Hours= HoursTotal.HasValue ? Math.Round(HoursTotal.Value,2) : 0; stats.Miles= MilesTotal.HasValue ? Math.Round(MilesTotal.Value,2) : 0; stats.Sessions = SessionsTotal; return stats; }