public List <ExpenseStatistic> GetExpensesStatistic(long userId) { var expenses = _dbContext.GetExpenses(userId); var expenseStatistics = new List <ExpenseStatistic>(); foreach (var category in expenses.Select(r => r.Category.Name).Distinct()) { var categoryAmount = expenses.Where(r => r.Category.Name == category).Select(r => r.Amount).Sum(); var percent = Math.Round(categoryAmount * 100 / expenses.Select(r => r.Amount).Sum(), 1); expenseStatistics.Add(new ExpenseStatistic(category, categoryAmount, percent)); } return(expenseStatistics.OrderByDescending(r => r.TotalAmount).ToList()); }
private string GetExpensesListText(long userId, DateTime startDate, DateTime endDate) { List <Expense> expenses = _dbContext.GetExpenses(userId, startDate, endDate).OrderByDescending(r => r.Date).ToList(); StringBuilder stringBuilder = new StringBuilder(); string period = startDate.Year == DateTime.Now.Year ? startDate.ToString("MMMM", _culture) : startDate.ToString("MMMM yyyy", _culture); stringBuilder.Append($"{new Emoji(0x1F4DC)} Список витрат за <u><b>{period}</b></u>\n"); foreach (var expense in expenses) { stringBuilder.Append(expense + "\n"); } return(stringBuilder.ToString()); }