private string GenerateClosedLoansSection(List <Loan> closedLoans) { bool isFirst = true; var closedLoansSection = new StringBuilder(); if (closedLoans.Count > 0) { closedLoansSection.Append("Loans that were closed last month:<br>"); foreach (Loan closedLoan in closedLoans) { if (!isFirst) { closedLoansSection.Append("<br>"); } isFirst = false; var rows = new List <LoanStatusRow>(); foreach (LoanTransaction loanTransaction in closedLoan.Transactions.Where(lt => lt.Status == LoanTransactionStatus.Done)) { LoanStatusRow currentRow = CreateLoanStatusRowFromTransaction(loanTransaction); if (currentRow != null) { rows.Add(currentRow); } } string tableForLoan = CreateHtmlTableFromClass(rows.OrderBy(p => p.PostDate)); closedLoansSection.Append(tableForLoan); } } return(closedLoansSection.ToString()); }
private LoanStatusRow CreateLoanStatusRowFromTransaction(LoanTransaction loanTransaction) { var currentRow = new LoanStatusRow { PostDate = loanTransaction.PostDate, Description = loanTransaction.Description, Fees = FormatNumberWithDash(loanTransaction.Fees) }; var pacnetTransaction = loanTransaction as PacnetTransaction; if (pacnetTransaction == null) { var paypointTransaction = loanTransaction as PaypointTransaction; if (paypointTransaction == null) { return(null); } currentRow.Type = "Payment"; currentRow.Interest = FormatNumberWithDash(paypointTransaction.Interest); currentRow.Principal = FormatNumberWithDash(paypointTransaction.LoanRepayment); currentRow.Total = FormatNumberWithDash(paypointTransaction.LoanRepayment + paypointTransaction.Interest + loanTransaction.Fees); currentRow.Status = paypointTransaction.Status.ToString(); } else { currentRow.Type = "Loan"; currentRow.Interest = "-"; currentRow.Principal = "-"; currentRow.Total = "-"; currentRow.Status = pacnetTransaction.Status.ToString(); } return(currentRow); }
private string GenerateOutstandingLoansSection(List <Loan> outstandingLoans) { bool isFirst = true; var outstandingLoansSection = new StringBuilder(); if (outstandingLoans.Count > 0) { outstandingLoansSection.Append("Loans that are outstanding:<br>"); foreach (Loan outstandingLoan in outstandingLoans) { if (!isFirst) { outstandingLoansSection.Append("<br>"); } isFirst = false; var rows = new List <LoanStatusRow>(); foreach ( LoanTransaction loanTransaction in outstandingLoan.Transactions.Where(lt => lt.Status == LoanTransactionStatus.Done)) { LoanStatusRow currentRow = CreateLoanStatusRowFromTransaction(loanTransaction); if (currentRow != null) { rows.Add(currentRow); } } foreach ( var loanSchedule in outstandingLoan.Schedule.Where( ls => ls.Status != LoanScheduleStatus.Paid && ls.Status != LoanScheduleStatus.PaidEarly && ls.Status != LoanScheduleStatus.PaidOnTime)) { rows.Add(new LoanStatusRow { Type = "Schedule", PostDate = loanSchedule.Date, Description = string.Empty, Fees = FormatNumberWithDash(loanSchedule.Fees), Interest = FormatNumberWithDash(loanSchedule.Interest), Principal = FormatNumberWithDash(loanSchedule.LoanRepayment), Status = loanSchedule.Status.ToString(), Total = FormatNumberWithDash(loanSchedule.LoanRepayment + loanSchedule.Interest + loanSchedule.Fees) }); } string tableForLoan = CreateHtmlTableFromClass(rows.OrderBy(p => p.PostDate)); outstandingLoansSection.Append(tableForLoan); } } return(outstandingLoansSection.ToString()); }