コード例 #1
0
        public IActionResult Statistics()
        {
            IEnumerable <Expense> expenses = _expenseDbContext.Expenses.ToList();

            if (expenses.Count() > 0)
            {
                ExpenseStatisticsViewModel newStatistics = new ExpenseStatisticsViewModel();
                newStatistics.HoogsteBedrag        = Highest(expenses);
                newStatistics.LaagsteBedrag        = Lowest(expenses);
                newStatistics.DuursteDag           = HighestDay(expenses);
                newStatistics.ExpensesPerMonth     = OverViewPerMonth(expenses);
                newStatistics.DuursteCategorie     = HighestCategory(expenses);
                newStatistics.GoedkoopsteCategorie = CheapestCategory(expenses);
                return(View(newStatistics));
            }
            else
            {
                return(View());
            }
        }
コード例 #2
0
        public IActionResult Index()
        {
            var vm = new ExpenseStatisticsViewModel();

            // Most & least expensive expense
            var leastExpensive = _expenses.OrderBy(x => x.Amount).First();
            var mostExpensive  = _expenses.OrderBy(x => x.Amount).Last();

            vm.LeastExpensive = new ExpenseDetailViewModel()
            {
                Amount      = leastExpensive.Amount,
                Date        = leastExpensive.Date,
                Description = leastExpensive.Description
            };

            vm.MostExpensive = new ExpenseDetailViewModel()
            {
                Amount      = mostExpensive.Amount,
                Description = mostExpensive.Description,
                Date        = mostExpensive.Date
            };

            // Most expensive DAY
            var groupedExpensesPerDay = _expenses.GroupBy(x => x.Date.Date);
            var sumPerDay             = new Dictionary <DateTime, decimal>();

            foreach (var group in groupedExpensesPerDay)
            {
                var sumFromGroup = group.ToList().Sum(expense => expense.Amount);
                sumPerDay.Add(group.Key, sumFromGroup);
            }

            var mostExpensiveDay = sumPerDay.OrderByDescending(x => x.Value).First();

            vm.MostExpensiveDay = (mostExpensiveDay.Key, mostExpensiveDay.Value);

            // Expenses per month
            var groupedExpensesPerMonth = _expenses.GroupBy(expense => new { expense.Date.Month, expense.Date.Year });
            var sumPerMonth             = new Dictionary <string, decimal>();

            foreach (var group in groupedExpensesPerMonth)
            {
                var sumFromMonth = group.ToList().Sum(x => x.Amount);
                sumPerMonth.Add($"{group.Key.Month}/{group.Key.Year}", sumFromMonth);
            }
            vm.SumPerMonth = sumPerMonth;

            // Most & least expensive category
            var groupedCategories = _expenses.GroupBy(expense => expense.Category);
            var sumPerCategory    = new Dictionary <string, decimal>();

            foreach (var group in groupedCategories)
            {
                var sumPerGroupedCategory = group.ToList().Sum(x => x.Amount);
                sumPerCategory.Add(group.Key, sumPerGroupedCategory);
            }

            var mostExpensiveCat  = sumPerCategory.OrderBy(x => x.Value).Last();
            var leastExpensiveCat = sumPerCategory.OrderBy(x => x.Value).First();

            vm.LeastExpensiveCategory = (leastExpensiveCat.Key, leastExpensiveCat.Value);
            vm.MostExpensiveCategory  = (mostExpensiveCat.Key, mostExpensiveCat.Value);

            return(View());
        }