public BudgetInsightsViewModel CalculateCategoryInsights(BudgetInsightsViewModel budgetInsights, string user) { var monthListForUser = _unitOfWork.BudgetItemsRepository.GetBudgetMonthNumbersList(user); for (var budgetType = 1; budgetType < 7; budgetType++) { var insights = new BudgetInsightsByCategory { CategoryType = budgetType, AvgPurchasePrice = _unitOfWork.BudgetItemsRepository.AveragePurchasePriceByCat(monthListForUser, user, budgetType), AvgSpentPerMonth = _unitOfWork.BudgetItemsRepository.AverageMonthlySpendingByCat(monthListForUser, user, budgetType), AvgOverUnderPerCategory = _unitOfWork.BudgetItemsRepository.AvgOverUnderByCat(monthListForUser, user, budgetType), NumMonthsUnderBudgetPerCat = _unitOfWork.BudgetItemsRepository.NumMonthsUnderBudgetByCat(monthListForUser, user, budgetType) }; budgetInsights.BudgetInsightsByCategoryList.Add(insights); } return(budgetInsights); }
public IActionResult BudgetInsights() { var user = User.Identity.Name; var highestSavings = _unitOfWork.BudgetItemsRepository.HighestSavings(user).Single(); var budgetInsights = new BudgetInsightsViewModel { AvgMonthlySpending = _unitOfWork.BudgetItemsRepository.AvgMonthlySpending(user), AmtOverOrUnder = _unitOfWork.BudgetItemsRepository.AmtOverOrUnderBudget(user), MostCommonCategory = _unitOfWork.BudgetItemsRepository.MostCommonCategory(user), CategoryTimes = _unitOfWork.BudgetItemsRepository.HowManyTimesCatOccur(_unitOfWork.BudgetItemsRepository.MostCommonCategory(user), user), NumMonthsUnderBudget = _unitOfWork.BudgetItemsRepository.NumMonthsUnderBudget(user), TotalMonths = _unitOfWork.BudgetItemsRepository.GetBudgetMonthsList(user).Count, TotalSpentFirstMonth = _unitOfWork.BudgetItemsRepository.TotalSpentByMonth(DateTime.Now.Month, user), TotalSpentSecondMonth = _unitOfWork.BudgetItemsRepository.TotalSpentByMonth((DateTime.Now.Month - 1), user), HighSaveCat = highestSavings.Key, HighSaveAmt = highestSavings.Value }; if (budgetInsights.AmtOverOrUnder == 0) { ViewBag.NotEnoughInfoMsg = "If multiple insights are showing a 'No Information' message, " + "there may not be enough budget data to calculate budget insights. This often happens when a new " + "budget has just been created or if a budget does not have any transactions added."; } var budgetInsightsWithCategoryInsights = CalculateCategoryInsights(budgetInsights, User.Identity.Name); if (budgetInsightsWithCategoryInsights.BudgetInsightsByCategoryList.Count == 0) { ViewBag.HasCategoryInsights = false; return(View(budgetInsightsWithCategoryInsights)); } ViewBag.CategoryList = budgetInsightsWithCategoryInsights.BudgetInsightsByCategoryList.Select(x => x.CategoryType).ToList(); var listOfCategoryNames = new List <string>(); foreach (var category in ViewBag.CategoryList) { switch (category) { case 1: listOfCategoryNames.Add("Food | Grocery"); break; case 2: listOfCategoryNames.Add("Housing"); break; case 3: listOfCategoryNames.Add("Bills | Payments"); break; case 4: listOfCategoryNames.Add("Entertainment"); break; case 5: listOfCategoryNames.Add("Gas | Auto"); break; case 6: listOfCategoryNames.Add("Miscellaneous"); break; } } ViewBag.ListOfCategoryNames = listOfCategoryNames; return(View(budgetInsightsWithCategoryInsights)); }