public ActionResult DeleteConfirmed(int id)
        {
            LoanEMISchedule loanemischedule = db.LoanEMISchedules.Find(id);

            db.LoanEMISchedules.Remove(loanemischedule);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        //
        // GET: /LoanEMISchedule/Details/5

        public ActionResult Details(int id = 0)
        {
            LoanEMISchedule loanemischedule = db.LoanEMISchedules.Find(id);

            if (loanemischedule == null)
            {
                return(HttpNotFound());
            }
            return(View(loanemischedule));
        }
 public ActionResult Edit(LoanEMISchedule loanemischedule)
 {
     if (ModelState.IsValid)
     {
         db.Entry(loanemischedule).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.LoanDisbursementId = new SelectList(db.LoanDisbursements, "LoanDisbursementId", "DisbursementCode", loanemischedule.LoanDisbursementId);
     return(View(loanemischedule));
 }
        //
        // GET: /LoanEMISchedule/Edit/5

        public ActionResult Edit(int id = 0)
        {
            LoanEMISchedule loanemischedule = db.LoanEMISchedules.Find(id);

            if (loanemischedule == null)
            {
                return(HttpNotFound());
            }
            ViewBag.LoanDisbursementId = new SelectList(db.LoanDisbursements, "LoanDisbursementId", "DisbursementCode", loanemischedule.LoanDisbursementId);
            return(View(loanemischedule));
        }
        public ActionResult Create(LoanEMISchedule loanemischedule)
        {
            ////if (ModelState.IsValid)
            ////{
            ////    db.LoanEMISchedules.Add(loanemischedule);
            ////    db.SaveChanges();
            ////    return RedirectToAction("Index");
            ////}

            //Generate Reschedule Here
            #region Regenerate Schedule

            try
            {
                if (ModelState.IsValid)
                {
                    int id = loanemischedule.LoanDisbursementId.HasValue ? loanemischedule.LoanDisbursementId.Value : 0;

                    var existingSchedules = db.LoanEMISchedules.Where(x => x.LoanDisbursementId.Value == id).ToList();
                    foreach (var item in existingSchedules)
                    {
                        db.LoanEMISchedules.Remove(item);
                    }
                    db.SaveChanges();


                    var loandisbursement = db.LoanDisbursements.Where(x => x.LoanDisbursementId == id).FirstOrDefault();
                    //Create Schedule
                    if (loandisbursement != null)
                    {
                        for (int i = 0; i < loandisbursement.TimePeriod; i++)
                        {
                            db.LoanEMISchedules.Add(new LoanEMISchedule
                            {
                                LoanDisbursementId = id,
                                EMIDate            = loandisbursement.EMIStartDate.Value.AddDays(i),
                                EMI             = loandisbursement.LoanEMI,
                                ScheduleDate    = DateTime.Now,
                                Balance         = loandisbursement.TotalRepayAmountWithInterest - (loandisbursement.LoanEMI * (i + 1)),
                                PrincipleAmount = loandisbursement.LoanEMI,
                                InterestAmount  = 0
                            });
                        }

                        db.SaveChanges();
                    }
                    else
                    {
                        ViewBag.Message = "EMI re-Schedule failed.";
                    }
                    return(RedirectToAction("Index"));
                }
                #endregion


                ViewBag.LoanDisbursementId = new SelectList(db.LoanDisbursements, "LoanDisbursementId", "DisbursementCode", loanemischedule.LoanDisbursementId);
                return(View(loanemischedule));
            }
            catch (Exception ex)
            {
                if (ex.InnerException.ToString().Contains("LoanRepayment"))
                {
                    ViewBag.Message = "EMI re-Schedule failed as already repayment started for this Loan.";
                }
                else
                {
                    ViewBag.Message = "EMI re-Schedule failed." + ex.Message + " InnerException: " + ex.InnerException;
                }

                ViewBag.LoanDisbursementId = new SelectList(db.LoanDisbursements, "LoanDisbursementId", "DisbursementCode", loanemischedule.LoanDisbursementId);
                return(View(loanemischedule));
            }
        }