public async Task ExecuteAsync() { var startDate = DateTime.Now.Date.AddMonths(-1); var endDate = DateTime.Now.Date.AddDays(1); var operations = await _dbLogicManager.GetOperationsByPeriod(startDate, endDate); var allAvailableCategories = operations.SelectMany(op => op.Categories).ToHashSet(); foreach (var cat in allAvailableCategories) { Console.Write(cat + " "); } Console.WriteLine(); var categoriesChosenByUser = ConsoleExtensions.ReadStringListOrRetry().Select(c => c.Trim().ToUpper()); var categorySums = new Dictionary <string, decimal>(); foreach (var cat in categoriesChosenByUser) { var sum = operations.Where(op => op.Categories != null && op.Categories.Contains(cat)).Sum(c => c.Amount); categorySums[cat] = sum; } foreach (var kv in categorySums.OrderBy(kv => kv.Value)) { Console.WriteLine($"{kv.Key}: {kv.Value}"); } var chosenCategoriesSum = operations.Where(op => op.Categories != null && op.Categories.Any(c => categoriesChosenByUser.Contains(c))).Sum(op => op.Amount); Console.WriteLine($"Всего для выбранных категорий:{chosenCategoriesSum}"); }
public async Task ExecuteAsync(List <CardOperation> operationsToAdd) { Console.WriteLine("Введите категории через запятую:"); var categoryNames = ConsoleExtensions.ReadStringListOrRetry(); await _dbLogicManager.AddOperationCategories(operationsToAdd, categoryNames); }
public async Task ExecuteAsync() { RenderMenu(); var userCategoriesInput = ConsoleExtensions.ReadStringListOrRetry(); var operations = await GetCardOperationsByUserCategoriesInput(userCategoriesInput); RenderOperationsAndTotal(operations); }
private async Task <List <CardOperation> > GetByCategory() { Console.WriteLine("Перечислите имена категорий через запятую"); var userCategoriesInput = ConsoleExtensions.ReadStringListOrRetry(); List <CardOperation> operations = null; if (userCategoriesInput.Count != 0) { operations = await _dbLogicManager.GetOperationsByCategories(userCategoriesInput); } else { operations = await _dbLogicManager.GetOperationsWithNoCategories(); } return(operations); }