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 }); }
public async Task <BalanceSheetSummary> GetByLoanApplication(long loanApplicationId) { LoanApplication loanApplication = await loanApplicationRepository.FindAsync(loanApplicationId); IEnumerable <ExistingLoan> existingLoans = await existingLoanRepository.GetActiveByLoanApplication(loanApplicationId); existingLoans = existingLoans.Where(x => x.IsForRenewal == false); IEnumerable <BalanceSheetItem> balanceSheetItems = await balanceSheetItemRepository.GetByLoanApplication(loanApplicationId); IEnumerable <VehicularBalanceSheetItem> vehicularNonCurrentAssets = await vehicularBalanceSheetItemRepository.GetByLoanApplication(loanApplicationId); IEnumerable <RealPropertyBalanceSheetItem> realPropertyAssets = await realPropertyBalanceSheetItemRepository.GetByLoanApplication(loanApplicationId); IEnumerable <SavingsDeposit> savingsDeposits = await savingsDepositRepository.GetByLoanApplication(loanApplicationId); IEnumerable <FixedDeposit> fixedDeposits = await fixedDepositRepository.GetByLoanApplication(loanApplicationId); decimal totalSavingsAverageDailyBalance = TotalSavingsAverageDailyBalance(savingsDeposits); return(new BalanceSheetSummary { BalanceSheetItems = balanceSheetItems.ToList(), LoanApplication = loanApplication, ExistingLoans = existingLoans.ToList(), VehicularBalanceSheetItems = vehicularNonCurrentAssets.ToList(), RealPropertyBalanceSheetItems = realPropertyAssets.ToList(), TotalSavingsAverageDailyBalance = totalSavingsAverageDailyBalance, fixedDeposits = fixedDeposits.ToList() }); }
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); }