public ActionResult Create([Bind(Include = "LvID,LvDate,LeaveTypeID,EmpID,FromDate,ToDate,NoOfDays,IsHalf,FirstHalf,HalfAbsent,LvReason,LvAddress,CreatedBy,ApprovedBy,Status")] LvApplication lvapplication) { User LoggedInUser = Session["LoggedUser"] as User; if (lvapplication.FromDate.Date > lvapplication.ToDate.Date) { ModelState.AddModelError("FromDate", "From Date should be smaller than To Date"); } string _EmpNo = Request.Form["EmpNo"].ToString(); List <Emp> _emp = db.Emps.Where(aa => aa.EmpNo == _EmpNo).ToList(); if (_emp.Count == 0) { ModelState.AddModelError("EmpNo", "Emp No not exist"); } else { lvapplication.EmpID = _emp.FirstOrDefault().EmpID; } if (ModelState.IsValid) { LvType lvType = db.LvTypes.First(aa => aa.LvTypeID == lvapplication.LeaveTypeID); LeaveController LvProcessController = new LeaveController(); if (LvProcessController.CheckDuplicateLeave(lvapplication)) { // max days float noofDays = LvProcessController.CalculateNoOfDays(lvapplication, lvType); lvapplication.NoOfDays = noofDays; int _UserID = Convert.ToInt32(Session["LogedUserID"].ToString()); lvapplication.CreatedBy = _UserID; if (lvType.UpdateBalance == true) { if (LvProcessController.HasLeaveQuota(lvapplication.EmpID, lvapplication.LeaveTypeID, lvType)) { if (LvProcessController.CheckLeaveBalance(lvapplication, lvType)) { if (LvProcessController.CheckForMaxMonthDays(lvapplication, lvType)) { if (lvType.MaxDaysConsective == 0) { CreateLeave(lvapplication, lvType); return(RedirectToAction("Index")); } if (noofDays <= lvType.MaxDaysConsective) { CreateLeave(lvapplication, lvType); return(RedirectToAction("Index")); } else { ModelState.AddModelError("FromDate", "Leave Consective days exceeds"); } } else { ModelState.AddModelError("FromDate", "Leave Monthly Quota Exceeds"); } } else { ModelState.AddModelError("FromDate", "Leave Balance Exceeds, Please check the balance"); } } else { ModelState.AddModelError("FromDate", "Leave Quota does not exist"); } } else { CreateLeave(lvapplication, lvType); return(RedirectToAction("Index")); } } else { ModelState.AddModelError("FromDate", "This Employee already has leave of this date "); } } ViewBag.EmpID = new SelectList(db.Emps.OrderBy(s => s.EmpName), "EmpID", "EmpNo", lvapplication.EmpID); ViewBag.LeaveTypeID = new SelectList(db.LvTypes.Where(aa => aa.Enable == true).OrderBy(s => s.LvTypeID), "LvTypeID", "LvDesc", lvapplication.LvType); return(View(lvapplication)); }