public async Task <PreviousExpenses> ShowPreviousExpenses(int walletId, DateTime d)
        {
            DateTime[] date              = GetDate(d);
            var        currentMonth      = date[0];
            var        endOfCurrentMonth = date[1];
            //var currentMonth = new DateTime(date.Year, date.Month, 1);
            //var endOfCurrentMonth = currentMonth.AddMonths(1).AddMilliseconds(-1);
            var categories = await _walletRepo.GetCategories(walletId);

            PreviousExpenses previousExpenses        = new PreviousExpenses();
            List <ExpensesWithCategoryData> expenses = new List <ExpensesWithCategoryData>();

            foreach (var category in categories)
            {
                ExpensesWithCategoryData expGroup = new ExpensesWithCategoryData();
                expGroup.CategoryId   = category.Id;
                expGroup.CategoryName = category.Title;

                var catExpenses = await(from e in _context.Expenses
                                        join u in _context.Users
                                        on e.ExpenseUserId equals u.Id
                                        where e.ExpenseCategoryId == category.Id
                                        where e.FamilyWalletId == walletId
                                        where e.CreationDate >= currentMonth && e.CreationDate <= endOfCurrentMonth
                                        select new ExpenseDTO
                {
                    Id                 = e.Id,
                    UserName           = u.UserName,
                    ExpenseTitle       = e.ExpenseTitle,
                    ExpenseDescription = e.ExpenseDescription,
                    CreationDate       = e.CreationDate,
                    MoneySpent         = e.MoneySpent,
                }).Take(10).ToListAsync();
                if (catExpenses.Count == 0)
                {
                    expGroup.Expenses = new List <ExpenseDTO>();
                }
                else
                {
                    expGroup.Expenses = catExpenses;
                }
                expenses.Add(expGroup);
            }
            previousExpenses.PreviousMonthExpenses = expenses;
            previousExpenses.TopFiveUsers          = await GetTopMembers(walletId, currentMonth, endOfCurrentMonth);

            previousExpenses.PreviousExpensesBars = await CreateBarExpensesData(walletId, d);

            return(previousExpenses);
        }
        public async Task <List <ExpensesWithCategoryData> > ShowExpenses(int walletId)
        {
            var today             = DateTime.Today;
            var currentMonth      = new DateTime(today.Year, today.Month, 1);
            var endOfCurrentMonth = currentMonth.AddMonths(1).AddMilliseconds(-1);
            List <ExpensesWithCategoryData> expenses = new List <ExpensesWithCategoryData>();

            var categories = await _walletRepo.GetCategories(walletId);

            foreach (var category in categories)
            {
                ExpensesWithCategoryData expGroup = new ExpensesWithCategoryData();
                expGroup.CategoryId   = category.Id;
                expGroup.CategoryName = category.Title;

                var catExpenses = await(from e in _context.Expenses
                                        join u in _context.Users
                                        on e.ExpenseUserId equals u.Id
                                        where e.ExpenseCategoryId == category.Id
                                        where e.FamilyWalletId == walletId
                                        where e.CreationDate >= currentMonth && e.CreationDate <= endOfCurrentMonth
                                        select new ExpenseDTO
                {
                    Id                 = e.Id,
                    UserName           = u.UserName,
                    ExpenseTitle       = e.ExpenseTitle,
                    ExpenseDescription = e.ExpenseDescription,
                    CreationDate       = e.CreationDate,
                    MoneySpent         = e.MoneySpent,
                }).Take(10).ToListAsync();
                if (catExpenses.Count == 0)
                {
                    expGroup.Expenses = new List <ExpenseDTO>();
                }
                else
                {
                    expGroup.Expenses = catExpenses;
                }
                expenses.Add(expGroup);
            }
            return(expenses);
        }