예제 #1
0
        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);
        }
예제 #2
0
파일: Currency.cs 프로젝트: Rumkee/Website1
        public static string GetDisplayAmount(string InputAmount, string InputCurrencyCode, string OutputCountryCode, CurrencyEnum?UserCurrency)
        {
            var OutputCurrency = CurrencyLogic.MapCountryCodeToCurrencyEnum(OutputCountryCode);
            var InputCurrency  = CurrencyLogic.MapCurrencyStringToCurrencyEnum(InputCurrencyCode);

            if (UserCurrency.HasValue)
            {
                OutputCurrency = UserCurrency.Value;
            }

            decimal InputAmountDec = 0;

            decimal.TryParse(InputAmount, out InputAmountDec);

            decimal OutputAmount = InputAmountDec;

            if (InputCurrency != OutputCurrency)
            {
                OutputAmount = ConvertAmount(InputCurrency, OutputCurrency, InputAmountDec);
                return($"~{GetCurrencyPrefix(OutputCurrency)}{OutputAmount.ToString("0.00")}");
            }

            return($"{GetCurrencyPrefix(OutputCurrency)}{OutputAmount.ToString("0.00")}");
        }
예제 #3
0
        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));
        }
예제 #4
0
        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 + "&nbsp;Teams", true));
        }
예제 #5
0
        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 + "&nbsp;Users", true));
        }
예제 #6
0
        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());
        }