public async Task <FinancialRatio> FindByLoanApplication(long loanApplicationId)
        {
            BalanceSheetSummary balanceSheetSummary = await balanceSheetSummaryRepository.GetByLoanApplication(loanApplicationId);

            IncomeStatement incomeStatement = await businessRepository.GetIncomeStatement(loanApplicationId);

            var personalExpenses = await personalExpenseRepository.GetByLoanApplication(loanApplicationId);

            LoanApplication loanApplication = await context.LoanApplications.SingleOrDefaultAsync(e => e.Id == loanApplicationId);

            var internalLoansAnnualAmortization = (await internalLoanAnnualAmortizationRepository.GetAnnualAmortizations(loanApplication.Id, loanApplication.RecastDate)).ToList();


            var appliedLoanPaymentCapacity = await loanApplicationAnnualAmortizationRepository.GetLoanApplicationCapacity(loanApplication);

            internalLoansAnnualAmortization.Add(appliedLoanPaymentCapacity);

            var externalLoansAnnualAmortization = await externalLoanAnnualAmortizationRepository.GetAnnualAmortizations(loanApplication.Id, loanApplication.RecastDate);

            var existingLoans = (await existingLoanRepository.GetActiveByLoanApplication(loanApplication.Id))
                                .Where(x => x.IsForRenewal == false);

            return(new FinancialRatio
            {
                BalanceSheetSummary = balanceSheetSummary,
                IncomeStatement = incomeStatement,
                PersonalExpenses = personalExpenses,
                LoanApplication = loanApplication,
                ExistingLoans = existingLoans,
                InternalLoansAnnualAmortization = internalLoansAnnualAmortization,
                ExternalLoansAnnualAmortization = externalLoansAnnualAmortization
            });
        }
Exemple #2
0
        public async Task <CashFlowSummary> FindByLoanApplication(long loanApplicationId)
        {
            LoanApplication loanApplication = await loanApplicationRepository.FindAsync(loanApplicationId);


            IncomeStatement incomeStatement = await businessRepository.GetIncomeStatement(loanApplicationId);

            int numberOfYears = (int)Math.Ceiling((loanApplication.TermInMonths + loanApplication.GracePeriods) / (decimal)CoreSystemConstants.MonthsPerYear);

            var personalExpenses = await personalExpenseRepository.GetByLoanApplication(loanApplicationId);

            BalanceSheetSummary balanceSheetSummary = await balanceSheetSummaryRepository.GetByLoanApplication(loanApplicationId);

            IEnumerable <BuyOutLoan> buyOutLoans = await buyOutLoanRepository.GetByLoanApplication(loanApplicationId);

            IEnumerable <ExistingLoan> existingLoans = await existingLoanRepository.GetActiveByLoanApplication(loanApplicationId);

            List <ExistingLoan> excludedMarkedForRenewLoans = existingLoans.Where(e => e.IsForRenewal == false).ToList();


            var loanRepaymentCashFlow = new List <LoanRepaymentCashFlowItem>();

            var internalLoanCashFLow = await internalLoanCashFlowRepository.GenerateCashFlow(loanApplication, numberOfYears);

            var externalLoanCashFlow = await externalLoanCashFlowRepository.GenerateCashFlow(loanApplication, numberOfYears);

            loanRepaymentCashFlow.AddRange(internalLoanCashFLow);

            loanRepaymentCashFlow.AddRange(externalLoanCashFlow);

            loanRepaymentCashFlow.Add(await GenerateAppliedLoanCashFlow(loanApplication, numberOfYears));



            var renewedLoans = existingLoans.Where(e => e.IsForRenewal == true).ToList();

            CashFlowSummary cashFlow = new CashFlowSummary
            {
                IncomeStatement       = incomeStatement,
                NumberOfYears         = numberOfYears,
                LoanApplication       = loanApplication,
                PersonalExpenses      = personalExpenses,
                BalanceSheet          = balanceSheetSummary,
                BuyOutLoans           = buyOutLoans,
                ExistingLoansCashFlow = loanRepaymentCashFlow,
                RenewedLoans          = renewedLoans
            };

            return(cashFlow);
        }
Exemple #3
0
        public CashFlowSummary()
        {
            IncomeStatement = new IncomeStatement();

            LoanApplication = new LoanApplication();

            PersonalExpenses = new List <PersonalExpense>();

            BalanceSheet = new BalanceSheetSummary();

            BuyOutLoans = new List <BuyOutLoan>();

            ExistingLoansCashFlow = new List <LoanRepaymentCashFlowItem>();
        }
Exemple #4
0
        public async Task <BalanceSheetSummaryResponse> GetByLoanApplication(long loanApplicationId)
        {
            BalanceSheetSummary balanceSheetSummary = await balanceSheetSummaryRepository.GetByLoanApplication(loanApplicationId);

            return(mapper.Map <BalanceSheetSummaryResponse>(balanceSheetSummary));
        }