internal float CalculateNoOfDays(LvApplication lvapplication, LvType lvType)
        {
            TAS2013Entities db  = new TAS2013Entities();
            float           val = 0;

            if (lvapplication.IsHalf == true)
            {
                val = (float)0.5;
            }
            else
            {
                if (lvType.CountRestDays != true)
                {
                    Shift    ss  = db.Emps.Where(aa => aa.EmpID == lvapplication.EmpID).First().Shift;
                    DateTime dts = lvapplication.FromDate;
                    while (dts <= lvapplication.ToDate)
                    {
                        if (!CurrentDayNotRest(ss, dts))
                        {
                            val = val + 1;
                        }
                        dts = dts.AddDays(1);
                    }
                }
            }
            return(val);
        }
        internal bool CheckForMaxMonthDays(LvApplication lvapplication, LvType lvType)
        {
            bool check = false;

            if (lvapplication.FromDate.Month == lvapplication.ToDate.Month)
            {
                DateTime dts = new DateTime(lvapplication.FromDate.Year, lvapplication.FromDate.Month, 1);
                DateTime dte = new DateTime(lvapplication.FromDate.Year, lvapplication.FromDate.Month, lvapplication.ToDate.Day);
                float    TotalnumOfDayInMonth = 0;
                using (var ctx = new TAS2013Entities())
                {
                    List <LvApplication> lvapps = new List <LvApplication>();
                    lvapps = ctx.LvApplications.Where(aa => aa.FromDate >= dts && aa.ToDate <= dte && aa.EmpID == lvapplication.EmpID).ToList();
                    foreach (var lv in lvapps)
                    {
                        TotalnumOfDayInMonth = TotalnumOfDayInMonth + lv.NoOfDays;
                    }
                }
                if (lvType.MaxDaysMonth == 0)
                {
                    check = true;
                }
                else if (TotalnumOfDayInMonth <= lvType.MaxDaysMonth)
                {
                    check = true;
                }
            }
            else
            {
                check = true;
            }
            return(check);
        }
 public void BalanceLeaves(LvApplication lvappl, LvType LeaveType)
 {
     if (LeaveType.UpdateBalance == true)
     {
         using (var ctx = new TAS2013Entities())
         {
             List <LvConsumed> _lvConsumed = new List <LvConsumed>();
             string            empLvType   = lvappl.EmpID.ToString() + lvappl.LeaveTypeID + lvappl.FromDate.Year.ToString("0000");
             _lvConsumed = ctx.LvConsumeds.Where(aa => aa.EmpLvTypeYear == empLvType).ToList();
             float _NoOfDays = lvappl.NoOfDays;
             if (_lvConsumed.Count > 0)
             {
                 _lvConsumed.FirstOrDefault().YearRemaining       = (float)(_lvConsumed.FirstOrDefault().YearRemaining - _NoOfDays);
                 _lvConsumed.FirstOrDefault().GrandTotalRemaining = (float)(_lvConsumed.FirstOrDefault().GrandTotalRemaining - _NoOfDays);
                 if (lvappl.IsHalf == true)
                 {
                     AddHalfLeaveBalancceMonthQuota(_lvConsumed, lvappl);
                 }
                 else
                 {
                     AddBalancceMonthQuota(_lvConsumed, lvappl);
                 }
                 ctx.SaveChanges();
             }
             ctx.Dispose();
         }
     }
 }
        public bool AddLeaveToLeaveData(LvApplication lvappl, LvType lvType)
        {
            DateTime datetime = new DateTime();

            datetime = lvappl.FromDate;
            for (int i = 0; i < lvappl.NoOfDays; i++)
            {
                string _EmpDate = lvappl.EmpID + datetime.Date.ToString("yyMMdd");
                LvData _LVData  = new LvData();
                _LVData.EmpID     = lvappl.EmpID;
                _LVData.EmpDate   = _EmpDate;
                _LVData.Remarks   = lvappl.LvReason;
                _LVData.HalfLeave = lvappl.IsHalf;
                _LVData.LvID      = lvappl.LvID;
                _LVData.AttDate   = datetime.Date;
                _LVData.LvCode    = lvappl.LeaveTypeID;
                try
                {
                    using (var context = new TAS2013Entities())
                    {
                        context.LvDatas.Add(_LVData);
                        context.SaveChanges();
                    }
                }
                catch (Exception ex)
                {
                }
                datetime = datetime.AddDays(1);
                // Balance Leaves from Emp Table
            }
            BalanceLeaves(lvappl, lvType);
            return(true);
        }
        //public void BalanceLeaves(LvApplication lvappl)
        //{
        //    _empQuota.Clear();
        //    using (var context = new TAS2013Entities())
        //    {
        //        _empQuota = context.LvQuotas.Where(aa => aa.EmpID == lvappl.EmpID).ToList();
        //        float _NoOfDays = lvappl.NoOfDays;
        //        if (_empQuota.Count > 0)
        //        {
        //            switch (lvappl.LvType)
        //            {
        //                case "A":
        //                    _empQuota.FirstOrDefault().A = (float)(_empQuota.FirstOrDefault().A - _NoOfDays);
        //                    break;
        //                case "B":
        //                    _empQuota.FirstOrDefault().B = (float)(_empQuota.FirstOrDefault().B - _NoOfDays);
        //                    break;
        //                case "C":
        //                    _empQuota.FirstOrDefault().C = (float)(_empQuota.FirstOrDefault().C - _NoOfDays);
        //                    break;
        //                case "D":
        //                    _empQuota.FirstOrDefault().D = (float)(_empQuota.FirstOrDefault().D - _NoOfDays);
        //                    break;
        //                case "E":
        //                    _empQuota.FirstOrDefault().E = (float)(_empQuota.FirstOrDefault().E - _NoOfDays);
        //                    break;
        //                case "F":
        //                    _empQuota.FirstOrDefault().F = (float)(_empQuota.FirstOrDefault().F - _NoOfDays);
        //                    break;
        //                case "G":
        //                    _empQuota.FirstOrDefault().G = (float)(_empQuota.FirstOrDefault().G - _NoOfDays);
        //                    break;
        //                case "H":
        //                    _empQuota.FirstOrDefault().H = (float)(_empQuota.FirstOrDefault().H - _NoOfDays);
        //                    break;
        //                case "I":
        //                    _empQuota.FirstOrDefault().I = (float)(_empQuota.FirstOrDefault().I - _NoOfDays);
        //                    break;
        //                case "J":
        //                    _empQuota.FirstOrDefault().J = (float)(_empQuota.FirstOrDefault().J - _NoOfDays);
        //                    break;
        //                case "K":
        //                    _empQuota.FirstOrDefault().K = (float)(_empQuota.FirstOrDefault().K - _NoOfDays);
        //                    break;
        //                case "L":
        //                    _empQuota.FirstOrDefault().L = (float)(_empQuota.FirstOrDefault().L - _NoOfDays);
        //                    break;
        //                default:
        //                    break;
        //            }
        //            context.SaveChanges();
        //        }
        //    }
        //}

        #endregion

        #region -- Add Half Leave--

        public void AddHalfLeaveToLeaveData(LvApplication lvappl, LvType lvType)
        {
            DateTime datetime = new DateTime();

            datetime = lvappl.FromDate;
            string _EmpDate = lvappl.EmpID + datetime.Date.ToString("yyMMdd");
            LvData _LVData  = new LvData();

            _LVData.EmpID     = lvappl.EmpID;
            _LVData.EmpDate   = _EmpDate;
            _LVData.Remarks   = lvappl.LvReason;
            _LVData.HalfLeave = true;
            _LVData.LvID      = lvappl.LvID;
            _LVData.AttDate   = datetime.Date;
            _LVData.LvCode    = lvappl.LeaveTypeID;
            _LVData.FirstHalf = lvappl.FirstHalf;
            try
            {
                using (var db = new TAS2013Entities())
                {
                    db.LvDatas.Add(_LVData);
                    db.SaveChanges();
                }
            }
            catch (Exception ex)
            {
            }
            // Balance Leaves from Emp Table
            BalanceLeaves(lvappl, lvType);
        }
        public bool CheckHalfLeaveBalance(LvApplication lvapplication, LvType lvType)
        {
            bool              check = false;
            float             RemainingLeaves;
            List <LvConsumed> _lvConsumed = new List <LvConsumed>();

            if (lvType.UpdateBalance == true)
            {
                using (var ctx = new TAS2013Entities())
                {
                    string empLvType = lvapplication.EmpID.ToString() + lvapplication.LeaveTypeID + lvapplication.FromDate.Year.ToString("0000");
                    _lvConsumed = ctx.LvConsumeds.Where(aa => aa.EmpLvTypeYear == empLvType).ToList();
                    if (_lvConsumed.Count > 0)
                    {
                        RemainingLeaves = (float)_lvConsumed.FirstOrDefault().YearRemaining;
                        if ((RemainingLeaves - (float)lvapplication.NoOfDays) >= 0)
                        {
                            check = true;
                        }
                        else
                        {
                            check = false;
                        }
                    }
                }
            }
            else
            {
                check = true;
            }
            return(check);
        }
        public ActionResult DeleteConfirmed(string id)
        {
            LvType lvtype = db.LvTypes.Find(id);

            db.LvTypes.Remove(lvtype);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Beispiel #8
0
        private void AddLeaveIntoDatabase(string empDate, VMLeaveEditor datas, string Name, string date, bool IsHalf)
        {
            int    empid  = db.Emps.First(aa => aa.EmpNo == datas.EmpNo).EmpID;
            LvType lvtype = new LvType();

            if (Name == "HLV:Casual")
            {
                lvtype = db.LvTypes.First(aa => aa.LvDesc == "LV:Casual");
            }
            else if (Name == "HLV:Annual")
            {
                lvtype = db.LvTypes.First(aa => aa.LvDesc == "LV:Annual");
            }
            else
            {
                lvtype = db.LvTypes.First(aa => aa.LvDesc == Name);
            }
            User          LoggedInUser = Session["LoggedUser"] as User;
            LvApplication lv           = new LvApplication();

            lv.EmpID       = empid;
            lv.LeaveTypeID = lvtype.LvTypeID;
            lv.LvDate      = DateTime.Today;
            if (IsHalf == true)
            {
                lv.NoOfDays = (float)0.5;
                lv.IsHalf   = true;
            }
            else
            {
                lv.NoOfDays = 1;
            }
            lv.CreatedBy = LoggedInUser.UserID;
            lv.FromDate  = Convert.ToDateTime(date);
            lv.ToDate    = Convert.ToDateTime(date);
            if (lvtype.UpdateBalance == true)
            {
                if (HasLeaveQuota(empid, lvtype.LvTypeID, lvtype))
                {
                    if (CheckLeaveBalance(lv, lvtype))
                    {
                        CreateLeave(lv, lvtype);
                    }
                    else
                    {
                        ViewBag.validtonmessage = "Leave Balance Exceeds, Please check the balance";
                    }
                }
                else
                {
                    ViewBag.validtonmessage = "Leave Quota does not exist";
                }
            }
            else
            {
                CreateLeave(lv, lvtype);
            }
        }
 public ActionResult Edit([Bind(Include = "LvTypeID,LvDesc,FldName,HalfLeave,HalfLvCode,HalfAbCode,MaxDays,UpdateBalance,Enable,CarryForward,CarryForwardYear,CarryForwardDays,CountGZDays,CountRestDays,MaxDaysConsective,MaxDaysMonth")] LvType lvtype)
 {
     if (ModelState.IsValid)
     {
         db.Entry(lvtype).State = System.Data.Entity.EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(lvtype));
 }
        public ActionResult Create([Bind(Include = "LvTypeID,LvDesc,FldName,HalfLeave,HalfLvCode,HalfAbCode,MaxDays,UpdateBalance,Enable,CarryForward,CarryForwardYear,CarryForwardDays,CountGZDays,CountRestDays,MaxDaysConsective,MaxDaysMonth")] LvType lvtype)
        {
            if (ModelState.IsValid)
            {
                db.LvTypes.Add(lvtype);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(lvtype));
        }
Beispiel #11
0
        public void AddHalfLeaveToAttData(LvApplication lvappl)
        {
            DateTime datetime = new DateTime();

            datetime = lvappl.FromDate;
            string _EmpDate = lvappl.EmpID + datetime.Date.ToString("yyMMdd");

            using (var db = new TAS2013Entities())
            {
                if (db.AttDatas.Where(aa => aa.EmpDate == _EmpDate).Count() > 0)
                {
                    LvType  lvtype      = db.LvTypes.First(aa => aa.LvType1 == lvappl.LvType);
                    AttData _EmpAttData = new AttData();
                    _EmpAttData          = db.AttDatas.First(aa => aa.EmpDate == _EmpDate);
                    _EmpAttData.DutyCode = "L";
                    if (_EmpAttData.WorkMin > 0)
                    {
                        _EmpAttData.Remarks = _EmpAttData.Remarks + lvtype.HalfLvCode;
                    }
                    else
                    {
                        _EmpAttData.Remarks = "HA" + lvappl.LvType1.HalfLvCode;
                    }
                    if (_EmpAttData.Remarks.Contains("[Absent]"))
                    {
                        _EmpAttData.Remarks = _EmpAttData.Remarks.Replace("[Abesnt]", "");
                    }
                    if (_EmpAttData.Remarks.Contains("[EO]"))
                    {
                        _EmpAttData.Remarks = _EmpAttData.Remarks.Replace("[EO]", "");
                    }
                    if (_EmpAttData.Remarks.Contains("[LI]"))
                    {
                        _EmpAttData.Remarks = _EmpAttData.Remarks.Replace("[LI]", "");
                    }
                    _EmpAttData.StatusHL = true;
                    if (lvappl.FirstHalf == true)
                    {
                        _EmpAttData.LateIn   = 0;
                        _EmpAttData.StatusLI = false;
                    }
                    else
                    {
                        _EmpAttData.StatusEO = false;
                        _EmpAttData.EarlyOut = 0;
                    }
                    //_EmpAttData.statushl


                    db.SaveChanges();
                }
            }
        }
 public bool AddLeaveToLeaveAttData(LvApplication lvappl, LvType lvType)
 {
     try
     {
         DateTime datetime = new DateTime();
         datetime = lvappl.FromDate;
         for (int i = 0; i < lvappl.NoOfDays; i++)
         {
             string _EmpDate = lvappl.EmpID + datetime.Date.ToString("yyMMdd");
             using (var context = new TAS2013Entities())
             {
                 if (context.AttDatas.Where(aa => aa.EmpDate == _EmpDate).Count() > 0)
                 {
                     AttData _EmpAttData = new AttData();
                     _EmpAttData             = context.AttDatas.First(aa => aa.EmpDate == _EmpDate);
                     _EmpAttData.LateIn      = null;
                     _EmpAttData.LateOut     = null;
                     _EmpAttData.EarlyIn     = null;
                     _EmpAttData.EarlyOut    = null;
                     _EmpAttData.StatusAB    = false;
                     _EmpAttData.StatusLeave = true;
                     _EmpAttData.StatusEI    = null;
                     _EmpAttData.StatusEO    = null;
                     _EmpAttData.StatusLI    = null;
                     _EmpAttData.DutyCode    = "L";
                     _EmpAttData.StatusLI    = null;
                     _EmpAttData.StatusLO    = null;
                     _EmpAttData.StatusDO    = null;
                     _EmpAttData.StatusGZ    = null;
                     _EmpAttData.StatusGZOT  = null;
                     _EmpAttData.StatusMN    = null;
                     _EmpAttData.StatusOD    = null;
                     if (lvappl.NoOfDays == 0.5)
                     {
                         _EmpAttData.Remarks = lvType.HalfLvCode;
                     }
                     else
                     {
                         _EmpAttData.Remarks = lvType.FldName;
                     }
                     context.SaveChanges();
                 }
             }
             datetime = datetime.AddDays(1);
         }
     }
     catch (Exception ex)
     {
         return(false);
     }
     return(true);
 }
        // GET: /LeaveType/Delete/5
        public ActionResult Delete(string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            LvType lvtype = db.LvTypes.Find(id);

            if (lvtype == null)
            {
                return(HttpNotFound());
            }
            return(View(lvtype));
        }
Beispiel #14
0
        public bool HasLeaveQuota(int empID, string lvType, LvType leaveType)
        {
            bool check = false;

            using (var ctx = new TAS2013Entities())
            {
                List <LvConsumed> lv = new List <LvConsumed>();
                lv = ctx.LvConsumeds.Where(aa => aa.EmpID == empID && aa.LeaveTypeID == lvType).ToList();
                if (lv.Count > 0)
                {
                    check = true;
                }
            }
            return(check);
        }
Beispiel #15
0
        private void CreateLeave(LvApplication lv, LvType lvTypes)
        {
            LeaveController LvProcessController = new LeaveController();

            lv.LvDate = DateTime.Today;
            int _userID = Convert.ToInt32(Session["LogedUserID"].ToString());

            lv.CreatedBy = _userID;
            lv.Active    = true;
            db.LvApplications.Add(lv);
            if (db.SaveChanges() > 0)
            {
                HelperClass.MyHelper.SaveAuditLog(_userID, (byte)MyEnums.FormName.Leave, (byte)MyEnums.Operation.Add, DateTime.Now);
                LvProcessController.AddLeaveToLeaveData(lv, lvTypes);
                LvProcessController.AddLeaveToLeaveAttData(lv, lvTypes);
            }
            else
            {
                ViewBag.validtonmessage = "There is an error while creating leave.";
            }
        }
        public void CreateLeave(LvApplication lvapplication, LvType lvType)
        {
            LeaveController LvProcessController = new LeaveController();

            lvapplication.LvDate = DateTime.Today;
            int _userID = Convert.ToInt32(Session["LogedUserID"].ToString());

            lvapplication.CreatedBy = _userID;
            lvapplication.Active    = true;
            db.LvApplications.Add(lvapplication);
            if (db.SaveChanges() > 0)
            {
                HelperClass.MyHelper.SaveAuditLog(_userID, (byte)MyEnums.FormName.Leave, (byte)MyEnums.Operation.Add, DateTime.Now);
                LvProcessController.AddLeaveToLeaveData(lvapplication, lvType);
                LvProcessController.AddLeaveToLeaveAttData(lvapplication, lvType);
            }
            else
            {
                ModelState.AddModelError("LvType", "There is an error while creating leave.");
            }
        }
Beispiel #17
0
        public bool CheckLeaveBalance(LvApplication _lvapp, LvType LeaveType)
        {
            bool    balance = false;
            decimal RemainingLeaves;

            if (LeaveType.UpdateBalance == true)
            {
                using (var ctx = new TAS2013Entities())
                {
                    List <LvConsumed> _lvConsumed = new List <LvConsumed>();
                    string            empLvType   = _lvapp.EmpID.ToString() + _lvapp.LeaveTypeID + _lvapp.FromDate.Year.ToString("0000");
                    _lvConsumed = ctx.LvConsumeds.Where(aa => aa.EmpLvTypeYear == empLvType).ToList();
                    if (_lvConsumed.Count > 0)
                    {
                        RemainingLeaves = (decimal)_lvConsumed.FirstOrDefault().YearRemaining;
                        if ((RemainingLeaves - Convert.ToDecimal(_lvapp.NoOfDays)) >= 0)
                        {
                            balance = true;
                        }
                        else
                        {
                            balance = false;
                        }
                    }
                    else
                    {
                        balance = false;
                    }
                }
            }
            else
            {
                balance = true;
            }

            return(balance);
        }
Beispiel #18
0
        public bool HasLeaveQuota(int empID, string lvType)
        {
            bool check = false;

            using (var ctx = new TAS2013Entities())
            {
                LvType LeaveType = ctx.LvTypes.First(aa => aa.LvType1 == lvType);
                if (LeaveType.UpdateBalance == true)
                {
                    List <LvConsumed> lv        = new List <LvConsumed>();
                    string            empLvType = empID.ToString() + lvType + DateTime.Today.Year.ToString();
                    lv = ctx.LvConsumeds.Where(aa => aa.EmpLvTypeYear == empLvType).ToList();
                    if (lv.Count > 0)
                    {
                        check = true;
                    }
                }
                else
                {
                    check = true;
                }
            }
            return(check);
        }
        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));
        }
        public ActionResult Create([Bind(Include = "LvID,LvDate,LvType,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 = db.Emps.Where(aa => aa.EmpID == LoggedInUser.EmpID).FirstOrDefault().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.LvType1 == lvapplication.LvType);
                LeaveController LvProcessController = new LeaveController();
                if (LvProcessController.HasLeaveQuota(lvapplication.EmpID, lvapplication.LvType, lvType))
                {
                    if (lvapplication.IsHalf != true)
                    {
                        lvapplication.NoOfDays  = (float)((lvapplication.ToDate - lvapplication.FromDate).TotalDays) + 1;
                        lvapplication.Active    = false;
                        lvapplication.IsRevoked = false;
                        if (LvProcessController.CheckDuplicateLeave(lvapplication))
                        {
                            //Check leave Balance
                            if (LvProcessController.CheckLeaveBalance(lvapplication, lvType))
                            {
                                lvapplication.LvDate = DateTime.Today;
                                int _userID = Convert.ToInt32(Session["LogedUserID"].ToString());
                                lvapplication.CreatedBy = _userID;
                                lvapplication.Active    = true;
                                db.LvApplications.Add(lvapplication);
                                if (db.SaveChanges() > 0)
                                {
                                    HelperClass.MyHelper.SaveAuditLog(_userID, (byte)MyEnums.FormName.Leave, (byte)MyEnums.Operation.Add, DateTime.Now);
                                    //  LvProcessController.AddLeaveToLeaveData(lvapplication, lvType);
                                    //  LvProcessController.AddLeaveToLeaveAttData(lvapplication, lvType);
                                    ViewBag.EmpID  = new SelectList(db.Emps.OrderBy(s => s.EmpName), "EmpID", "EmpNo");
                                    ViewBag.LvType = new SelectList(db.LvTypes.Where(aa => aa.Enable == true).OrderBy(s => s.LvType1).ToList(), "LvType1", "LvDesc");
                                    return(RedirectToAction("Create"));
                                }
                                else
                                {
                                    ModelState.AddModelError("LvType", "There is an error while creating leave.");
                                }
                            }
                            else
                            {
                                ModelState.AddModelError("LvType", "Leave Balance Exceeds, Please check the balance");
                            }
                        }
                        else
                        {
                            ModelState.AddModelError("FromDate", "This Employee already has leave of this date ");
                        }
                    }
                    else
                    {
                        lvapplication.NoOfDays = (float)0.5;
                        if (lvapplication.FromDate.Date == lvapplication.ToDate.Date)
                        {
                            if (LvProcessController.CheckDuplicateLeave(lvapplication))
                            {
                                if (LvProcessController.CheckHalfLeaveBalance(lvapplication, lvType))
                                {
                                    lvapplication.LvDate = DateTime.Today;
                                    int _userID = Convert.ToInt32(Session["LogedUserID"].ToString());
                                    lvapplication.CreatedBy = _userID;
                                    lvapplication.Active    = true;
                                    db.LvApplications.Add(lvapplication);
                                    if (db.SaveChanges() > 0)
                                    {
                                        HelperClass.MyHelper.SaveAuditLog(_userID, (byte)MyEnums.FormName.Leave, (byte)MyEnums.Operation.Add, DateTime.Now);
                                        LvProcessController.AddHalfLeaveToLeaveData(lvapplication, lvType);
                                        LvProcessController.AddHalfLeaveToAttData(lvapplication, lvType);
                                        ViewBag.EmpID  = new SelectList(db.Emps.OrderBy(s => s.EmpName), "EmpID", "EmpNo");
                                        ViewBag.LvType = new SelectList(db.LvTypes.Where(aa => aa.Enable == true).OrderBy(s => s.LvType1).ToList(), "LvType1", "LvDesc");
                                        return(RedirectToAction("Create"));
                                    }
                                }
                                else
                                {
                                    ModelState.AddModelError("LvType", "Leave Balance Exceeds, Please check the balance");
                                }
                            }
                            else
                            {
                                ModelState.AddModelError("FromDate", "This Employee already has leave of this date ");
                            }
                        }
                        else
                        {
                            ModelState.AddModelError("FromDate", "Half Leave should be entered of same date");
                        }
                    }
                }
                else
                {
                    ModelState.AddModelError("LvType", "Leave Quota does not exist");
                }
            }
            else
            {
                ModelState.AddModelError("LvType", "Leave is not created. Please contact with network administrator");
            }
            ViewBag.EmpID  = new SelectList(db.Emps.OrderBy(s => s.EmpName), "EmpID", "EmpNo", lvapplication.EmpID);
            ViewBag.LvType = new SelectList(db.LvTypes.Where(aa => aa.Enable == true).OrderBy(s => s.LvType1), "LvType1", "LvDesc", lvapplication.LvType);
            return(View(lvapplication));
        }