public DashboardItem(LoanOutlook loanOutlook) { Date = loanOutlook.Date; Amount = loanOutlook.AddAmount + loanOutlook.BaseAmount + loanOutlook.EscrowAmount + loanOutlook.InterestAmount; IsShared = false; Type = "Loan"; IsPaid = false; }
public DashboardItem(LoanOutlook loanOutlook) { Date = loanOutlook.Date; Amount = loanOutlook.AddAmount + loanOutlook.BaseAmount + loanOutlook.EscrowAmount + loanOutlook.InterestAmount; IsPastDue = (Date < DateTime.Now); IsShared = false; Type = "Loan"; IsPaid = false; }
public LoanHistory(Loan loan) { LoanOutlook outlook = loan.LoanOutlook.FirstOrDefault(); this.LoanId = loan.Id; this.BasicPayment = outlook.BaseAmount; this.AddPayment = outlook.AddAmount; this.Interest = outlook.InterestAmount; this.Escrow = outlook.EscrowAmount; this.DatePaid = outlook.Date; this.Principal = outlook.Principal; this.PaymentTypeId = loan.PaymentTypeId; this.Loan = loan; }
public DashboardItem(LoanOutlook outlook) { Id = outlook.Loan.ID; Name = outlook.Loan.Name; Date = outlook.Date; Amount = outlook.Payment; YouPay = outlook.YouPay; IsShared = outlook.Loan.IsShared; NotOwner = outlook.Loan.NotOwner; if (outlook.Loan.SharedWith.Any()) { SharedWith = outlook.Loan.SharedWith.Select(x => x.SharedWithUser).ToList(); } Type = "Loan"; IsPaid = false; }
public static IEnumerable <LoanOutlook> GetLoanOutlook(this Loan loan) { List <LoanOutlook> outlook = new List <LoanOutlook>(); double principal = Convert.ToDouble(loan.Principal); DateTime date = loan.LastPaidDate; double inte = Convert.ToDouble(loan.InterestRate); if (loan.InterestCompMonthly) { inte = (inte / 100 / 12); } else if (loan.InterestCompDaily) { inte = (inte / 100 / (DateTime.IsLeapYear(loan.LastPaidDate.Year) ? 366 : 365)); } while (principal > 0.00) { if (loan.InterestCompMonthly) { date = date.AddMonths(1); double interest = Math.Round(inte * Convert.ToDouble(principal), 2); double baseAmount = Convert.ToDouble(loan.BasePayment) - interest; baseAmount = (baseAmount > principal) ? principal : baseAmount; principal -= baseAmount; double add = Convert.ToDouble(loan.AddPayment); add = (principal - add > 0) ? add : principal; principal -= add; if (principal <= 10) { add += principal; principal = 0.00; } LoanOutlook item = new LoanOutlook(date, Convert.ToDecimal(interest), Convert.ToDecimal(baseAmount), Convert.ToDecimal(add), loan.Escrow, Convert.ToDecimal(principal)); outlook.Add(item); } else { DateTime lastDate = date; date = date.AddMonths(1); date = new DateTime(date.Year, date.Month, loan.FirstPaymentDate.Day); if (date.DayOfWeek == DayOfWeek.Saturday) { date = date.AddDays(2); } else if (date.DayOfWeek == DayOfWeek.Sunday) { date = date.AddDays(1); } double interest = 0.0; if (lastDate.Year == date.Year) { interest = inte * Convert.ToDouble(principal) * ((date - lastDate).TotalDays); } else { interest = inte * Convert.ToDouble(principal) * ((new DateTime(lastDate.Year, 12, 31) - lastDate).TotalDays + 0.5); inte = (Convert.ToDouble(loan.InterestRate) / 100 / (DateTime.IsLeapYear(date.Year) ? 366 : 365)); interest += inte * Convert.ToDouble(principal) * ((date - new DateTime(date.Year, 1, 1)).TotalDays + 0.5); } interest = Math.Floor(interest * 100) / 100; double baseAmount = Convert.ToDouble(loan.BasePayment) - interest; baseAmount = (baseAmount > principal) ? principal : baseAmount; principal -= baseAmount; double add = Convert.ToDouble(loan.AddPayment); add = (principal - add > 0) ? add : principal; principal -= add; if (principal <= 10) { add += principal; principal = 0.00; } LoanOutlook item = new LoanOutlook(date, Convert.ToDecimal(interest), Convert.ToDecimal(baseAmount), Convert.ToDecimal(add), loan.Escrow, Convert.ToDecimal(principal)); outlook.Add(item); } } return(outlook.OrderBy(x => x.Date)); }
public static IEnumerable<LoanOutlook> GetLoanOutlook(this Loan loan) { List<LoanOutlook> outlook = new List<LoanOutlook>(); double principal = Convert.ToDouble(loan.Principal); DateTime date = loan.LastPaidDate; double inte = Convert.ToDouble(loan.InterestRate); if (loan.InterestCompMonthly) { inte = (inte / 100 / 12); } else if (loan.InterestCompDaily) { inte = (inte / 100 / (DateTime.IsLeapYear(loan.LastPaidDate.Year) ? 366 : 365)); } while (principal > 0.00) { if (loan.InterestCompMonthly) { date = date.AddMonths(1); double interest = Math.Ceiling(inte * Convert.ToDouble(principal) * 100) / 100; double baseAmount = Convert.ToDouble(loan.BasePayment) - interest; baseAmount = (baseAmount > principal) ? principal : baseAmount; principal -= baseAmount; double add = Convert.ToDouble(loan.AddPayment); add = (principal - add > 0) ? add : principal; principal -= add; if (principal <= 10) { add += principal; principal = 0.00; } LoanOutlook item = new LoanOutlook(date, Convert.ToDecimal(interest), Convert.ToDecimal(baseAmount), Convert.ToDecimal(add), loan.Escrow, Convert.ToDecimal(principal)); outlook.Add(item); } else { DateTime lastDate = date; date = date.AddMonths(1); date = new DateTime(date.Year, date.Month, loan.FirstPaymentDate.Day); if (date.DayOfWeek == DayOfWeek.Saturday) { date = date.AddDays(2); } else if (date.DayOfWeek == DayOfWeek.Sunday) { date = date.AddDays(1); } double interest = 0.0; if (lastDate.Year == date.Year) { interest = inte * Convert.ToDouble(principal) * (date - lastDate).TotalDays; } else { interest = inte * Convert.ToDouble(principal) * (new DateTime(lastDate.Year, 12, 31) - lastDate).TotalDays; inte = (Convert.ToDouble(loan.InterestRate) / 100 / (DateTime.IsLeapYear(date.Year) ? 366 : 365)); interest += inte * Convert.ToDouble(principal) * (date - new DateTime(date.Year, 1, 1)).TotalDays; } interest = Math.Ceiling(interest * 100) / 100; double baseAmount = Convert.ToDouble(loan.BasePayment) - interest; baseAmount = (baseAmount > principal) ? principal : baseAmount; principal -= baseAmount; double add = Convert.ToDouble(loan.AddPayment); add = (principal - add > 0) ? add : principal; principal -= add; if (principal <= 10) { add += principal; principal = 0.00; } LoanOutlook item = new LoanOutlook(date, Convert.ToDecimal(interest), Convert.ToDecimal(baseAmount), Convert.ToDecimal(add), loan.Escrow, Convert.ToDecimal(principal)); outlook.Add(item); } } return outlook.OrderBy(x => x.Date); }