public async Task <DTO> GetAccountDto() { var dto = new DTO(); var accountDtos = new List <AccountDTO>(); try { var accounts = await _context.Accounts.ToListAsync(); var bills = await _context.Bills.ToListAsync(); var payDeductionDict = CalculationsService.GetPayDeductionDict(accounts, bills); var requiredSavingsDict = CalculationsService.GetAccountRequiredSavingsDict(payDeductionDict, bills); var sumOfAccountBalances = 0.0m; var totalSurplus = 0.0m; foreach (var account in accounts) { var newDto = new AccountDTO(); newDto.Account = account; newDto.Bills = await bills.Where(b => b.AccountId == account.Id).ToListAsync(); newDto.BillSum = newDto.Bills.Sum(b => b.AmountDue); payDeductionDict.TryGetValue(account.Id, out var payDeduction); newDto.PayDeduction = payDeduction; newDto.PaycheckPercentage = CalculationsService.GetPaycheckPercentage(payDeductionDict, payDeduction); newDto.ExpensesBeforeNextPaycheck = 63.43m; requiredSavingsDict.TryGetValue(account.Id, out var accountRequiredSavings); newDto.RequiredSavings = accountRequiredSavings; var accountSurplus = account.Balance - accountRequiredSavings; newDto.BalanceSurplus = accountSurplus; totalSurplus += accountSurplus; sumOfAccountBalances += account.Balance; accountDtos.Add(newDto); } dto.AccountDtos = accountDtos; dto.SumOfAccountBalances = accounts.Sum(a => a.Balance); dto.TotalSurplus = totalSurplus; return(dto); } catch (Exception e) { Console.WriteLine(e); return(null); } }
public async Task <DTO> GetExpenseDto() { var dto = new DTO(); var expenseDtos = new List <ExpenseDTO>(); try { var accounts = await _context.Accounts.ToListAsync(); var expenses = await _context.Expenses.ToListAsync(); var unpaidExpenses = await expenses.Where(e => !e.Paid).ToListAsync(); var payDeductionDict = CalculationsService.GetPayDeductionDict(accounts, expenses, "expenses"); foreach (var expense in unpaidExpenses) { var expenseDto = new ExpenseDTO(); decimal payDeduction = payDeductionDict.FirstOrDefault(e => e.Key == expense.Id).Value; expenseDto.Expense = expense; expenseDto.PayDeduction = payDeduction; expenseDto.PaycheckPercentage = CalculationsService.GetPaycheckPercentage(payDeductionDict, payDeduction); expenseDto.RequiredSavings = CalculationsService.GetExpenseRequiredSavings(payDeductionDict, expense); expenseDtos.Add(expenseDto); } dto.ExpenseDtos = expenseDtos; var costPerPaycheck = payDeductionDict.Sum(e => e.Value); dto.CostOfExpensesPerPayPeriod = costPerPaycheck; } catch (Exception e) { Console.WriteLine(e); throw; } return(dto); }
public async Task <DTO> GetBillDto() { var dto = new DTO(); var billDtos = new List <BillDTO>(); try { var bills = await _context.Bills.ToListAsync(); var accounts = await _context.Accounts.ToListAsync(); var payDeductionDict = CalculationsService.GetPayDeductionDict(accounts, bills, "bill"); foreach (var bill in bills) { var billDto = new BillDTO(); billDto.Bill = bill; decimal payDeduction = payDeductionDict.FirstOrDefault(b => b.Key == bill.Id).Value; billDto.PayDeduction = payDeduction; billDto.PaycheckPercentage = CalculationsService.GetPaycheckPercentage(payDeductionDict, payDeduction); billDto.RequiredSavings = CalculationsService.GetBillRequiredSavings(payDeductionDict, bill); billDtos.Add(billDto); } dto.BillDtos = billDtos; var costPerPaycheck = payDeductionDict.Sum(b => b.Value); dto.CostOfBillsPerPayPeriod = costPerPaycheck; dto.MonthlyCostOfBills = costPerPaycheck * 26 / 12; return(dto); } catch (Exception e) { Console.WriteLine(e); throw; } }