public async Task <List <SumByCatDTO> > GetSumOfExpensesByCategory(ExpensesByOwnerDTO data) { List <SumByCatDTO> catSums = new List <SumByCatDTO>(); List <Expense> expenses = await Task.Run(() => GetExpenses(new GetExpensesDTO { ownerId = data.ownerId, numberOfDaysToShow = data.numberOfDaysToShow, maxNumberOfExpensesToShow = -1 })); foreach (CategoryEnum e in Enum.GetValues(typeof(CategoryEnum))) { float sum = 0; foreach (var expense in expenses) { if (expense.Expensecategory == (int)e && expense.Expensetime >= DateTime.Now.AddDays(-data.numberOfDaysToShow)) { sum += expense.Moneyused; } else if (expense.Expensecategory == (int)e && data.numberOfDaysToShow == -1) { sum += expense.Moneyused; } } SumByCatDTO tuple = new SumByCatDTO { category = Enum.GetName(typeof(CategoryEnum), e), sum = sum }; catSums.Add(tuple); } return(catSums); }
public async Task <IActionResult> GetSumOfExpensesByOwner(string ownerId, int numberOfDaysToShow) { ExpensesByOwnerDTO data = new ExpensesByOwnerDTO { ownerId = ownerId, numberOfDaysToShow = numberOfDaysToShow }; return(Ok(await Task.Run(() => exp.GetSumOfExpensesByOwner(data)))); }
public async Task <List <SumByOwnerDTO> > GetSumOfExpensesByOwner(ExpensesByOwnerDTO data) { GetExpensesDTO data2 = new GetExpensesDTO(); data2.ownerId = data.ownerId; data2.numberOfDaysToShow = data.numberOfDaysToShow; data2.maxNumberOfExpensesToShow = -1; List <Expense> listOfExpenses = await Task.Run(() => GetExpenses(data2)); List <SumByOwnerDTO> modifiedExpenses = (await Task.WhenAll(listOfExpenses. GroupBy(e => e.Userid). Select(async ce => new SumByOwnerDTO { userName = (await Task.Run(() => usp.GetUserById(new UserIdDTO { userId = ce.First().Userid }))).Username, sum = ce.Sum(e => e.Moneyused) }))).ToList(); return(modifiedExpenses); }