public static UserStats getStatsForUser(ApplicationUser user) { var stats = new UserStats(); var groupedActivities = user.Offsetters.GroupBy(o => o.Pledge.Activity_Units); stats.calTotal = groupedActivities.FirstOrDefault(g => g.Key == PledgeActivity.ActivityUnits.Calories)?.Sum(a => a.OffsetAmount); stats.HoursTotal = groupedActivities.FirstOrDefault(g => g.Key == PledgeActivity.ActivityUnits.Hours)?.Sum(a => a.OffsetAmount); stats.KmetersTotal = groupedActivities.FirstOrDefault(g => g.Key == PledgeActivity.ActivityUnits.Kilometers)?.Sum(a => a.OffsetAmount); stats.MetersTotal = groupedActivities.FirstOrDefault(g => g.Key == PledgeActivity.ActivityUnits.Meters)?.Sum(a => a.OffsetAmount); stats.MilesTotal = groupedActivities.FirstOrDefault(g => g.Key == PledgeActivity.ActivityUnits.Miles)?.Sum(a => a.OffsetAmount); stats.MinutesTotal = groupedActivities.FirstOrDefault(g => g.Key == PledgeActivity.ActivityUnits.Minutes)?.Sum(a => a.OffsetAmount); stats.SessionsTotal = groupedActivities.FirstOrDefault(g => g.Key == PledgeActivity.ActivityUnits.Sessions)?.Sum(a => a.OffsetAmount); stats.MetersTotal = stats.MetersTotal.HasValue ? stats.MetersTotal : 0; stats.KmetersTotal = stats.KmetersTotal.HasValue ? stats.KmetersTotal : 0; stats.MinutesTotal = stats.MinutesTotal.HasValue ? stats.MinutesTotal : 0; stats.MilesTotal = stats.MilesTotal.HasValue ? stats.MilesTotal : 0; stats.HoursTotal = stats.HoursTotal.HasValue ? stats.HoursTotal : 0; stats.KmetersTotal += (stats.MetersTotal / 1000.00m); stats.MilesTotal += (stats.KmetersTotal * 0.621m); stats.HoursTotal += (stats.MinutesTotal / 60m); stats.PledgedTotal = CurrencyLogic.ToBase(user.Contributions); return(stats); }
public static ChartLogic.chartData getChartDataForCharities(ApplicationUser user) { var Labels = new List <ChartLogic.chartData.chartDataItem>(); var Series = new List <ChartLogic.chartData.chartDataItem>(); var Legends = new List <ChartLogic.chartData.chartDataItem>(); var CharityTotals = user.Contributions.GroupBy(c => c.Pledge.Charity?.Name).Select(g => new { g.First().Pledge.Charity?.Name, Total = CurrencyLogic.ToBase(g.ToList()) }).OrderByDescending(a => a.Total).ToList(); foreach (var T in CharityTotals) { var Amt = T.Total.ToString("0.00"); Labels.Add(new ChartLogic.chartData.chartDataItem(Amt)); Series.Add(new ChartLogic.chartData.chartDataItem(Amt)); Legends.Add(new ChartLogic.chartData.chartDataItem(T.Name)); } return(new ChartLogic.chartData(Legends, Series, Labels, "Charities", true)); }
public static ChartLogic.chartData getUserPledgeContributionsForCharity(Models.Charities.Charity C) { var Amounts = new List <ChartLogic.chartData.chartDataItem>(); var Labels = new List <ChartLogic.chartData.chartDataItem>(); var Ledgends = new List <ChartLogic.chartData.chartDataItem>(); var db = new Models.ApplicationDbContext(); var AllCharityPledgeContributions = db.PledgeContributors.Where(PC => PC.Pledge.Charity.ID == C.ID).ToList(); var GroupedPledgeContributions = AllCharityPledgeContributions.GroupBy(pc => pc.Sinner).Select(g => new { g, Sum = CurrencyLogic.ToBase(g.ToList()) }).ToList(); foreach (var gPC in GroupedPledgeContributions.OrderByDescending(a => a.Sum)) { Amounts.Add(new ChartLogic.chartData.chartDataItem(gPC.Sum.ToString("0.00"))); Labels.Add(new ChartLogic.chartData.chartDataItem(gPC.Sum.ToString("0.00"))); Ledgends.Add(new ChartLogic.chartData.chartDataItem(gPC.g.Key.UserName)); } return(new ChartLogic.chartData(Ledgends, Amounts, Labels, GenericLogic.HTML.USER_HTML + " Users", true)); }
public static ChartLogic.chartData getTeamPledgeContributionsForCharity(Models.Charities.Charity C) { var Amounts = new List <ChartLogic.chartData.chartDataItem>(); var Labels = new List <ChartLogic.chartData.chartDataItem>(); var Ledgends = new List <ChartLogic.chartData.chartDataItem>(); var db = new Models.ApplicationDbContext(); var AllCharityPledgeContributions = db.PledgeContributors.Where(PC => PC.Pledge.Charity.ID == C.ID).ToList(); var GroupedPledgeContributions = AllCharityPledgeContributions.GroupBy(pc => pc.Sinner.Team).Select(pc => new { pc, Sum = CurrencyLogic.ToBase(pc.ToList()) }); foreach (var gPC in GroupedPledgeContributions.OrderByDescending(a => a.Sum)) { Amounts.Add(new ChartLogic.chartData.chartDataItem(gPC.Sum.ToString("0.00"))); Labels.Add(new ChartLogic.chartData.chartDataItem(gPC.Sum.ToString("0.00"))); Ledgends.Add(gPC.pc.Key == null ? new ChartLogic.chartData.chartDataItem("Unaffiliated") : new ChartLogic.chartData.chartDataItem(gPC.pc.Key.Name)); } return(new ChartLogic.chartData(Ledgends, Amounts, Labels, GenericLogic.HTML.TEAM_HTML + " Teams", true)); }
public static List <Models.Charities.Charity> GetTopCharitiesByAmountRaised() { var db = new Models.ApplicationDbContext(); return(db.Charities.ToList().OrderByDescending(c => c.Pledges.ToList().Sum(p => p.Contributors.ToList().Sum(con => CurrencyLogic.ToBase(con.Currency, con.Amount)))).Take(5).ToList()); }