public DashboardItem(LoanOutlook loanOutlook)
 {
     Date     = loanOutlook.Date;
     Amount   = loanOutlook.AddAmount + loanOutlook.BaseAmount + loanOutlook.EscrowAmount + loanOutlook.InterestAmount;
     IsShared = false;
     Type     = "Loan";
     IsPaid   = false;
 }
Example #2
0
 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;
 }
Example #3
0
        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;
 }
Example #5
0
        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));
        }
Example #6
0
        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);
        }