Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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;
            }
        }