public ActionResult DeleteConfirmed(int?id)
        {
            LeaveController LvProcessController = new LeaveController();
            LvApplication   lvapplication       = db.LvApplications.Find(id);

            if (lvapplication.IsHalf == false)
            {
                LvProcessController.DeleteFromLVData(lvapplication);
                LvProcessController.DeleteLeaveFromAttData(lvapplication);
                LvProcessController.UpdateLeaveBalance(lvapplication);
                //lvapplication.Active = false;
                db.LvApplications.Remove(lvapplication);
            }
            else
            {
                LvProcessController.DeleteHLFromLVData(lvapplication);
                LvProcessController.DeleteHLFromAttData(lvapplication);
                LvProcessController.UpdateHLeaveBalance(lvapplication);
                db.LvApplications.Remove(lvapplication);
            }
            db.SaveChanges();
            //UpdateLeaveBalance(lvapplication);
            //db.LvApplications.Remove(lvapplication);
            //db.SaveChanges();
            int _userID = Convert.ToInt32(Session["LogedUserID"].ToString());

            HelperClass.MyHelper.SaveAuditLog(_userID, (byte)MyEnums.FormName.Leave, (byte)MyEnums.Operation.Delete, DateTime.Now);
            return(RedirectToAction("Index"));
        }
Beispiel #2
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.");
            }
        }
        public ActionResult Create([Bind(Include = "SlID,EmpID,DutyDate,EmpDate,SHour,EHour,THour,Remarks,CreatedBy,ApprovedBy,Status")] LvShort lvshort,string SHour,string EHour)
        {
            string STimeIn = SHour;
            string STimeOut = EHour;
            string STimeInH = STimeIn.Substring(0, 2);
            string STimeInM = STimeIn.Substring(2, 2);
            string STimeOutH = STimeOut.Substring(0, 2);
            string STimeOutM = STimeOut.Substring(2, 2);
            lvshort.SHour = new TimeSpan(Convert.ToInt16(STimeInH), Convert.ToInt16(STimeInM), 0);
            lvshort.EHour = new TimeSpan(Convert.ToInt16(STimeOutH), Convert.ToInt16(STimeOutM), 0);
            if (lvshort.EHour < lvshort.SHour)
            {
                ModelState.AddModelError("EHour", "End hour required");
            }
            if (Request.Form["EmpNo"].ToString() == "")
            {
                ModelState.AddModelError("EmpNo", "Emplyee No is required!");
            }
            else
            {
                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
                {
                    lvshort.EmpID = _emp.FirstOrDefault().EmpID;
                    lvshort.EmpDate = _emp.FirstOrDefault().EmpID.ToString() + lvshort.DutyDate.Value.ToString("yyMMdd");
                    lvshort.CreatedDate = DateTime.Today;
                    lvshort.THour = lvshort.EHour - lvshort.SHour;
                }
            }
            if (lvshort.DutyDate == null)
            {
                ModelState.AddModelError("DutyDate", "DutyDate is required!");
            }
            if (lvshort.SHour == null)
            {
                ModelState.AddModelError("SHour", "Start Time is required!");
            }
            if (lvshort.EHour == null)
            {
                ModelState.AddModelError("EHour", "Ending Time is required!");
            }
            if (ModelState.IsValid)
            {
                LeaveController LvProcessController = new LeaveController();
                int _userID = Convert.ToInt32(Session["LogedUserID"].ToString());
                User LoggedInUser = Session["LoggedUser"] as User;
                lvshort.CreatedBy = _userID;
                lvshort.CompanyID = LoggedInUser.CompanyID;
                lvshort.Status = true;

                //The below LvShort checks if there is an already existing Lvshort for
                //this date. If there is an existing LvShort remove it from the database
                //, check if he has balance for causal leave and then add a causal leave
                //

                if (db.Options.FirstOrDefault().TwoShortLToOneCausal == true)
                {

                    if (db.LvShorts.Where(aa => aa.EmpDate == lvshort.EmpDate).Count() > 0)
                    {
                        if (CheckForLQuota(lvshort) == true)
                        {
                            ShortLRemove(lvshort.EmpDate);
                            switch (AddCausalLeave(lvshort))
                            {
                                case 1: ModelState.AddModelError("Remarks", "Causal Leave Already exists");
                                    break;
                                case 2: db.SaveChanges();
                                    break;
                                case 3: ModelState.AddModelError("Remarks", "No Quota Defined for this Employee");
                                    break;
                            }

                            return RedirectToAction("Index");
                        }
                        else
                        {
                            ModelState.AddModelError("Remarks", "No Quota Defined for this Employee");
                            return View(lvshort);
                        }

                    }

               }
                        //Check If its already made
                    TimeSpan ehour = new TimeSpan(Convert.ToInt32(STimeOutH), Convert.ToInt32(STimeOutM), 0);
                    TimeSpan shour = new TimeSpan(Convert.ToInt32(STimeInH), Convert.ToInt32(STimeInM), 0);
                    if (db.LvShorts.Where(aa => aa.EmpDate == lvshort.EmpDate && (aa.SHour == shour || aa.EHour == ehour)).Count() > 0)
                        ModelState.AddModelError("Remarks", "Short Leave Already Exists for this time duration");
                    else
                    {

                        db.LvShorts.Add(lvshort);
                        db.SaveChanges();
                        LvProcessController.AddShortLeaveToAttData(lvshort);
                        HelperClass.MyHelper.SaveAuditLog(_userID, (byte)MyEnums.FormName.ShortLeave, (byte)MyEnums.Operation.Add, DateTime.Now);
                        return RedirectToAction("Index");
                    }

            }

            return View(lvshort);
        }
        private int AddCausalLeave(LvShort lvshort)
        {
            //find that bastard through the causal leave field in EmpLvType
            string EmpLvType= lvshort.EmpID+"A";
            //if there is some freak accident and now he has two or more records
            //cater for that by going through a list
            List<LvConsumed> consumed = db.LvConsumeds.Where(aa => aa.EmpLvType == EmpLvType).ToList();
            if (consumed.Count() > 0)
            {
                foreach (LvConsumed consume in consumed)
                {
                    consume.GrandTotalRemaining = consume.GrandTotalRemaining - 1;
                    consume.YearRemaining = consume.YearRemaining - 1;
                    LvConsumed refresh = new LvConsumed();
                    refresh = CheckMonthAndAddOneLeave(consume);
                    if (db.LvApplications.Where(aa => aa.LvDate == lvshort.DutyDate && aa.EmpID == lvshort.EmpID && aa.LvType == "A").Count() > 0)
                    {
                        return 1;

                    }
                    else
                    {
                        LvApplication lvapplication = new LvApplication();
                        lvapplication.EmpID = (int)lvshort.EmpID;
                        lvapplication.LvDate = (DateTime)lvshort.DutyDate;
                        lvapplication.LvType = "A";
                        lvapplication.FromDate = (DateTime)lvshort.DutyDate;
                        lvapplication.ToDate = (DateTime)lvshort.DutyDate;
                        lvapplication.NoOfDays = 1;
                        lvapplication.IsHalf = false;
                        lvapplication.HalfAbsent = false;
                        lvapplication.LvReason = lvshort.Remarks;
                        lvapplication.CreatedBy = lvshort.CreatedBy;
                        lvapplication.LvStatus = "P";
                        lvapplication.CompanyID = lvshort.CompanyID;
                        lvapplication.Active = true;
                        LeaveController LvProcessController = new LeaveController();
                        if (LvProcessController.HasLeaveQuota(lvapplication.EmpID, lvapplication.LvType))
                        {
                            if (lvapplication.IsHalf != true)
                            {

                                if (LvProcessController.CheckDuplicateLeave(lvapplication))
                                {
                                    //Check leave Balance
                                    if (LvProcessController.CheckLeaveBalance(lvapplication))
                                    {
                                        lvapplication.LvDate = DateTime.Today;
                                        int _userID = Convert.ToInt32(Session["LogedUserID"].ToString());
                                        lvapplication.CreatedBy = _userID;
                                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);
                                            LvProcessController.AddLeaveToLeaveAttData(lvapplication);
                                             return 2;
                                        }
                                        else
                                        {
                                            ModelState.AddModelError("Remarks", "There is an error while creating leave.");
                                        }

                                    }
                                    else
                                        ModelState.AddModelError("Remarks", "Leave Balance Exceeds, Please check the balance");
                                }
                                else
                                    ModelState.AddModelError("Remarks", "This Employee already has leave of this date ");
                            }
                      }
                        else
                            ModelState.AddModelError("Remarks", "Leave Quota does not exist");

                    }

                }
                return 2;
            }
            else
                return 3;
        }
Beispiel #6
0
        public ActionResult Create([Bind(Include = "LvID,LvDate,LvType,EmpID,FromDate,ToDate,NoOfDays,IsHalf,FirstHalf,HalfAbsent,LvReason,LvAddress,CreatedBy,ApprovedBy,Status")] LvApplication lvapplication)
        {
            string Firstdate  = Request.Form["FromDate"].ToString();
            string Seconddate = Request.Form["ToDate"].ToString();

            lvapplication.NoOfDays = (float)((lvapplication.ToDate - lvapplication.FromDate).TotalDays) + 1;
            #region
            if (lvapplication.NoOfDays > 100)
            {
                ModelState.AddModelError("LvType", "Date criteria is too much long kindly give correct date ");
            }
            User LoggedInUser = Session["LoggedUser"] as User;
            if (lvapplication.FromDate.Date > lvapplication.ToDate.Date)
            {
                ModelState.AddModelError("FromDate", "From Date should be smaller than To Date");
            }
            Int16      CompID = Convert.ToInt16(Request.Form["CompanyID"]);
            string     _EmpNo = Request.Form["EmpNo"].ToString();
            List <Emp> _emp   = db.Emps.Where(aa => aa.EmpNo == _EmpNo && aa.CompanyID == CompID && aa.Status == true).ToList();
            if (_emp.Count == 0)
            {
                ModelState.AddModelError("EmpNo", "Emp No not exist");
            }
            else
            {
                lvapplication.EmpID = _emp.FirstOrDefault().EmpID;
            }
            if (ModelState.IsValid)
            {
                LeaveController LvProcessController = new LeaveController();
                if (LvProcessController.HasLeaveQuota(lvapplication.EmpID, lvapplication.LvType, lvapplication.FromDate))
                {
                    if (lvapplication.IsHalf != true)
                    {
                        lvapplication.NoOfDays = (float)((lvapplication.ToDate - lvapplication.FromDate).TotalDays) + 1;
                        lvapplication.Active   = true;
                        if (LvProcessController.CheckDuplicateLeave(lvapplication))
                        {
                            //Check leave Balance
                            if (LvProcessController.CheckLeaveBalance(lvapplication))
                            {
                                lvapplication.LvDate = DateTime.Today;
                                int _userID = Convert.ToInt32(Session["LogedUserID"].ToString());
                                lvapplication.CreatedBy = _userID;
                                lvapplication.CompanyID = _emp.FirstOrDefault().CompanyID;
                                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);
                                    LvProcessController.AddLeaveToLeaveAttData(lvapplication);
                                    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");
                                    // Make Request of Monthly Attendance of current employee
                                    //ManualMonthlyRequest mpr = new ManualMonthlyRequest();
                                    //mpr.SaveManualRequest((int)lvapplication.EmpID, new DateTime(lvapplication.FromDate.Year, lvapplication.ToDate.Month, 1), new DateTime(lvapplication.FromDate.Year, lvapplication.ToDate.Month, 30));

                                    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))
                                {
                                    lvapplication.LvDate = DateTime.Today;
                                    int _userID = Convert.ToInt32(Session["LogedUserID"].ToString());
                                    lvapplication.CreatedBy = _userID;
                                    lvapplication.CompanyID = _emp.FirstOrDefault().CompanyID;
                                    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);
                                        LvProcessController.AddHalfLeaveToAttData(lvapplication);
                                        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.CompanyID = new SelectList(db.Companies.OrderBy(s => s.CompName), "CompID", "CompName");
            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));

            #endregion
        }
        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));
        }
Beispiel #8
0
        public ActionResult Create([Bind(Include = "SlID,EmpID,DutyDate,EmpDate,SHour,EHour,THour,Remarks,CreatedBy,ApprovedBy,Status")] LvShort lvshort, string SHour, string EHour)
        {
            string STimeIn   = SHour;
            string STimeOut  = EHour;
            string STimeInH  = STimeIn.Substring(0, 2);
            string STimeInM  = STimeIn.Substring(2, 2);
            string STimeOutH = STimeOut.Substring(0, 2);
            string STimeOutM = STimeOut.Substring(2, 2);

            lvshort.SHour = new TimeSpan(Convert.ToInt16(STimeInH), Convert.ToInt16(STimeInM), 0);
            lvshort.EHour = new TimeSpan(Convert.ToInt16(STimeOutH), Convert.ToInt16(STimeOutM), 0);
            if (lvshort.EHour < lvshort.SHour)
            {
                ModelState.AddModelError("EHour", "End hour required");
            }
            if (Request.Form["EmpNo"].ToString() == "")
            {
                ModelState.AddModelError("EmpNo", "Emplyee No is required!");
            }
            else
            {
                string     _EmpNo = Request.Form["EmpNo"].ToString();
                List <Emp> _emp   = db.Emps.Where(aa => aa.EmpNo == _EmpNo).OrderBy(s => s.EmpNo).ToList();
                if (_emp.Count == 0)
                {
                    ModelState.AddModelError("EmpNo", "Emp No not exist");
                }
                else
                {
                    lvshort.EmpID       = _emp.FirstOrDefault().EmpID;
                    lvshort.EmpDate     = _emp.FirstOrDefault().EmpID.ToString() + lvshort.DutyDate.Value.ToString("yyMMdd");
                    lvshort.CreatedDate = DateTime.Today;
                    lvshort.THour       = lvshort.EHour - lvshort.SHour;
                }
            }
            if (lvshort.DutyDate == null)
            {
                ModelState.AddModelError("DutyDate", "DutyDate is required!");
            }
            if (lvshort.SHour == null)
            {
                ModelState.AddModelError("SHour", "Start Time is required!");
            }
            if (lvshort.EHour == null)
            {
                ModelState.AddModelError("EHour", "Ending Time is required!");
            }
            if (ModelState.IsValid)
            {
                LeaveController LvProcessController = new LeaveController();
                int             _userID             = Convert.ToInt32(Session["LogedUserID"].ToString());
                User            LoggedInUser        = Session["LoggedUser"] as User;
                lvshort.CreatedBy = _userID;
                lvshort.Status    = true;
                db.LvShorts.Add(lvshort);
                db.SaveChanges();
                LvProcessController.AddShortLeaveToAttData(lvshort);
                HelperClass.MyHelper.SaveAuditLog(_userID, (byte)MyEnums.FormName.ShortLeave, (byte)MyEnums.Operation.Add, DateTime.Now);

                return(RedirectToAction("Index"));
            }

            return(View(lvshort));
        }
        public ActionResult Create([Bind(Include = "LvID,LvDate,LvType,EmpID,FromDate,ToDate,NoOfDays,IsHalf,FirstHalf,HalfAbsent,LvReason,LvAddress,CreatedBy,ApprovedBy,Status")] LvApplication lvapplication)
        {
            string Message = "";
            User LoggedInUser = Session["LoggedUser"] as User;
            if (lvapplication.FromDate.Date > lvapplication.ToDate.Date)
                ModelState.AddModelError("FromDate", "From Date should be smaller than To Date");
            Int16 CompID = Convert.ToInt16(Request.Form["CompanyID"]);
            string _EmpNo = Request.Form["EmpNo"].ToString();
            List<Emp> _emp = db.Emps.Where(aa => aa.EmpNo == _EmpNo && aa.CompanyID == CompID).ToList();
            if (_emp.Count == 0 )
            {
                ModelState.AddModelError("EmpNo", "Emp No not exist");
            }
            else
            {
                lvapplication.EmpID = _emp.FirstOrDefault().EmpID;
            }
            if (ModelState.IsValid)
            {
                LeaveController LvProcessController = new LeaveController();
                if (LvProcessController.HasLeaveQuota(lvapplication.EmpID,lvapplication.LvType))
                {
                    if (lvapplication.IsHalf != true)
                    {
                        lvapplication.NoOfDays = (float)((lvapplication.ToDate - lvapplication.FromDate).TotalDays) + 1;
                        lvapplication.Active = true;
                        if (LvProcessController.CheckDuplicateLeave(lvapplication))
                        {
                            //Check leave Balance
                            if (LvProcessController.CheckLeaveBalance(lvapplication))
                            {
                                lvapplication.LvDate = DateTime.Today;
                                int _userID = Convert.ToInt32(Session["LogedUserID"].ToString());
                                lvapplication.CreatedBy = _userID;
                                lvapplication.CompanyID = _emp.FirstOrDefault().CompanyID;
                                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);
                                    LvProcessController.AddLeaveToLeaveAttData(lvapplication);
                                    ViewBag.EmpID = new SelectList(db.Emps, "EmpID", "EmpNo");
                                    ViewBag.LvType = new SelectList(db.LvTypes.Where(aa => aa.Enable == true).ToList(), "LvType1", "LvDesc");
                                    Message = "Leave Created Sucessfully";
                                    ViewBag.CMessage = "Leave Created Sucessfully eeeeeeeeeeeeeeeee";

                                    ViewBag.CMessage = Message;
                                    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))
                                {
                                    lvapplication.LvDate = DateTime.Today;
                                    int _userID = Convert.ToInt32(Session["LogedUserID"].ToString());
                                    lvapplication.CreatedBy = _userID;
                                    lvapplication.CompanyID = _emp.FirstOrDefault().CompanyID;
                                    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);
                                        LvProcessController.AddHalfLeaveToAttData(lvapplication);
                                        ViewBag.EmpID = new SelectList(db.Emps, "EmpID", "EmpNo");
                                        ViewBag.LvType = new SelectList(db.LvTypes.Where(aa => aa.Enable == true).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.CompanyID = new SelectList(db.Companies, "CompID", "CompName");
            ViewBag.EmpID = new SelectList(db.Emps, "EmpID", "EmpNo", lvapplication.EmpID);
            ViewBag.LvType = new SelectList(db.LvTypes.Where(aa=>aa.Enable==true), "LvType1", "LvDesc", lvapplication.LvType);
            return View(lvapplication);
        }
 public ActionResult DeleteConfirmed(int id)
 {
     LeaveController LvProcessController = new LeaveController();
     LvApplication lvapplication = db.LvApplications.Find(id);
     if (lvapplication.IsHalf == false || lvapplication.IsHalf == null)
     {
         LvProcessController.DeleteFromLVData(lvapplication);
         LvProcessController.DeleteLeaveFromAttData(lvapplication);
         LvProcessController.UpdateLeaveBalance(lvapplication);
         //lvapplication.Active = false;
         db.LvApplications.Remove(lvapplication);
     }
     else
     {
         LvProcessController.DeleteHLFromLVData(lvapplication);
         LvProcessController.DeleteHLFromAttData(lvapplication);
         LvProcessController.UpdateHLeaveBalance(lvapplication);
         db.LvApplications.Remove(lvapplication);
     }
     db.SaveChanges();
     //UpdateLeaveBalance(lvapplication);
     //db.LvApplications.Remove(lvapplication);
     //db.SaveChanges();
     int _userID = Convert.ToInt32(Session["LogedUserID"].ToString());
     HelperClass.MyHelper.SaveAuditLog(_userID, (byte)MyEnums.FormName.Leave, (byte)MyEnums.Operation.Delete, DateTime.Now);
     return RedirectToAction("Index");
 }
        private int AddCausalLeave(LvShort lvshort)
        {
            //find that bastard through the causal leave field in EmpLvType
            string EmpLvType = lvshort.EmpID + "A";
            //if there is some freak accident and now he has two or more records
            //cater for that by going through a list
            List <LvConsumed> consumed = db.LvConsumeds.Where(aa => aa.EmpLvType == EmpLvType).ToList();

            if (consumed.Count() > 0)
            {
                foreach (LvConsumed consume in consumed)
                {
                    consume.GrandTotalRemaining = consume.GrandTotalRemaining - 1;
                    consume.YearRemaining       = consume.YearRemaining - 1;
                    LvConsumed refresh = new LvConsumed();
                    refresh = CheckMonthAndAddOneLeave(consume);
                    if (db.LvApplications.Where(aa => aa.LvDate == lvshort.DutyDate && aa.EmpID == lvshort.EmpID && aa.LvType == "A").Count() > 0)
                    {
                        return(1);
                    }
                    else
                    {
                        LvApplication lvapplication = new LvApplication();
                        lvapplication.EmpID      = (int)lvshort.EmpID;
                        lvapplication.LvDate     = (DateTime)lvshort.DutyDate;
                        lvapplication.LvType     = "A";
                        lvapplication.FromDate   = (DateTime)lvshort.DutyDate;
                        lvapplication.ToDate     = (DateTime)lvshort.DutyDate;
                        lvapplication.NoOfDays   = 1;
                        lvapplication.IsHalf     = false;
                        lvapplication.HalfAbsent = false;
                        lvapplication.LvReason   = lvshort.Remarks;
                        lvapplication.CreatedBy  = lvshort.CreatedBy;
                        lvapplication.LvStatus   = "P";
                        lvapplication.CompanyID  = lvshort.CompanyID;
                        lvapplication.Active     = true;
                        LeaveController LvProcessController = new LeaveController();
                        if (LvProcessController.HasLeaveQuota(lvapplication.EmpID, lvapplication.LvType))
                        {
                            if (lvapplication.IsHalf != true)
                            {
                                if (LvProcessController.CheckDuplicateLeave(lvapplication))
                                {
                                    //Check leave Balance
                                    if (LvProcessController.CheckLeaveBalance(lvapplication))
                                    {
                                        lvapplication.LvDate = DateTime.Today;
                                        int _userID = Convert.ToInt32(Session["LogedUserID"].ToString());
                                        lvapplication.CreatedBy = _userID;
                                        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);
                                            LvProcessController.AddLeaveToLeaveAttData(lvapplication);
                                            return(2);
                                        }
                                        else
                                        {
                                            ModelState.AddModelError("Remarks", "There is an error while creating leave.");
                                        }
                                    }
                                    else
                                    {
                                        ModelState.AddModelError("Remarks", "Leave Balance Exceeds, Please check the balance");
                                    }
                                }
                                else
                                {
                                    ModelState.AddModelError("Remarks", "This Employee already has leave of this date ");
                                }
                            }
                        }
                        else
                        {
                            ModelState.AddModelError("Remarks", "Leave Quota does not exist");
                        }
                    }
                }
                return(2);
            }
            else
            {
                return(3);
            }
        }
        public ActionResult Create([Bind(Include = "SlID,EmpID,DutyDate,EmpDate,SHour,EHour,THour,Remarks,CreatedBy,ApprovedBy,Status")] LvShort lvshort, string SHour, string EHour)
        {
            string STimeIn   = SHour;
            string STimeOut  = EHour;
            string STimeInH  = STimeIn.Substring(0, 2);
            string STimeInM  = STimeIn.Substring(2, 2);
            string STimeOutH = STimeOut.Substring(0, 2);
            string STimeOutM = STimeOut.Substring(2, 2);

            lvshort.SHour = new TimeSpan(Convert.ToInt16(STimeInH), Convert.ToInt16(STimeInM), 0);
            lvshort.EHour = new TimeSpan(Convert.ToInt16(STimeOutH), Convert.ToInt16(STimeOutM), 0);
            if (lvshort.EHour < lvshort.SHour)
            {
                ModelState.AddModelError("EHour", "End hour required");
            }
            if (Request.Form["EmpNo"].ToString() == "")
            {
                ModelState.AddModelError("EmpNo", "Emplyee No is required!");
            }
            else
            {
                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
                {
                    lvshort.EmpID       = _emp.FirstOrDefault().EmpID;
                    lvshort.EmpDate     = _emp.FirstOrDefault().EmpID.ToString() + lvshort.DutyDate.Value.ToString("yyMMdd");
                    lvshort.CreatedDate = DateTime.Today;
                    lvshort.THour       = lvshort.EHour - lvshort.SHour;
                }
            }
            if (lvshort.DutyDate == null)
            {
                ModelState.AddModelError("DutyDate", "DutyDate is required!");
            }
            if (lvshort.SHour == null)
            {
                ModelState.AddModelError("SHour", "Start Time is required!");
            }
            if (lvshort.EHour == null)
            {
                ModelState.AddModelError("EHour", "Ending Time is required!");
            }
            if (ModelState.IsValid)
            {
                LeaveController LvProcessController = new LeaveController();
                int             _userID             = Convert.ToInt32(Session["LogedUserID"].ToString());
                User            LoggedInUser        = Session["LoggedUser"] as User;
                lvshort.CreatedBy = _userID;
                lvshort.CompanyID = LoggedInUser.CompanyID;
                lvshort.Status    = true;

                //The below LvShort checks if there is an already existing Lvshort for
                //this date. If there is an existing LvShort remove it from the database
                //, check if he has balance for causal leave and then add a causal leave
                //

                if (db.Options.FirstOrDefault().TwoShortLToOneCausal == true)
                {
                    if (db.LvShorts.Where(aa => aa.EmpDate == lvshort.EmpDate).Count() > 0)
                    {
                        if (CheckForLQuota(lvshort) == true)
                        {
                            ShortLRemove(lvshort.EmpDate);
                            switch (AddCausalLeave(lvshort))
                            {
                            case 1: ModelState.AddModelError("Remarks", "Causal Leave Already exists");
                                break;

                            case 2: db.SaveChanges();
                                break;

                            case 3: ModelState.AddModelError("Remarks", "No Quota Defined for this Employee");
                                break;
                            }


                            return(RedirectToAction("Index"));
                        }
                        else
                        {
                            ModelState.AddModelError("Remarks", "No Quota Defined for this Employee");
                            return(View(lvshort));
                        }
                    }
                }
                //Check If its already made
                TimeSpan ehour = new TimeSpan(Convert.ToInt32(STimeOutH), Convert.ToInt32(STimeOutM), 0);
                TimeSpan shour = new TimeSpan(Convert.ToInt32(STimeInH), Convert.ToInt32(STimeInM), 0);
                if (db.LvShorts.Where(aa => aa.EmpDate == lvshort.EmpDate && (aa.SHour == shour || aa.EHour == ehour)).Count() > 0)
                {
                    ModelState.AddModelError("Remarks", "Short Leave Already Exists for this time duration");
                }
                else
                {
                    db.LvShorts.Add(lvshort);
                    db.SaveChanges();
                    LvProcessController.AddShortLeaveToAttData(lvshort);
                    HelperClass.MyHelper.SaveAuditLog(_userID, (byte)MyEnums.FormName.ShortLeave, (byte)MyEnums.Operation.Add, DateTime.Now);
                    return(RedirectToAction("Index"));
                }
            }

            return(View(lvshort));
        }
Beispiel #13
0
        public ActionResult Create([Bind(Include = "SlID,EmpID,DutyDate,EmpDate,SHour,EHour,THour,Remarks,CreatedBy,ApprovedBy,Status")] LvShort lvshort,string SHour,string EHour)
        {
            string STimeIn = SHour;
            string STimeOut = EHour;
            string STimeInH = STimeIn.Substring(0, 2);
            string STimeInM = STimeIn.Substring(2, 2);
            string STimeOutH = STimeOut.Substring(0, 2);
            string STimeOutM = STimeOut.Substring(2, 2);
            lvshort.SHour = new TimeSpan(Convert.ToInt16(STimeInH), Convert.ToInt16(STimeInM), 0);
            lvshort.EHour = new TimeSpan(Convert.ToInt16(STimeOutH), Convert.ToInt16(STimeOutM), 0);
            if (lvshort.EHour < lvshort.SHour)
            {
                ModelState.AddModelError("EHour", "End hour required");
            }
            if (Request.Form["EmpNo"].ToString() == "")
            {
                ModelState.AddModelError("EmpNo", "Emplyee No is required!");
            }
            else
            {
                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
                {
                    lvshort.EmpID = _emp.FirstOrDefault().EmpID;
                    lvshort.EmpDate = _emp.FirstOrDefault().EmpID.ToString() + lvshort.DutyDate.Value.ToString("yyMMdd");
                    lvshort.CreatedDate = DateTime.Today;
                    lvshort.THour = lvshort.EHour - lvshort.SHour;
                }
            }
            if (lvshort.DutyDate == null)
            {
                ModelState.AddModelError("DutyDate", "DutyDate is required!");
            }
            if (lvshort.SHour == null)
            {
                ModelState.AddModelError("SHour", "Start Time is required!");
            }
            if (lvshort.EHour == null)
            {
                ModelState.AddModelError("EHour", "Ending Time is required!");
            }
            if (ModelState.IsValid)
            {
                LeaveController LvProcessController = new LeaveController();
                int _userID = Convert.ToInt32(Session["LogedUserID"].ToString());
                User LoggedInUser = Session["LoggedUser"] as User;
                lvshort.CreatedBy = _userID;
                lvshort.CompanyID = LoggedInUser.CompanyID;
                lvshort.Status = true;
                db.LvShorts.Add(lvshort);
                db.SaveChanges();
                LvProcessController.AddShortLeaveToAttData(lvshort);
                HelperClass.MyHelper.SaveAuditLog(_userID, (byte)MyEnums.FormName.ShortLeave, (byte)MyEnums.Operation.Add, DateTime.Now);

                return RedirectToAction("Index");
            }

            return View(lvshort);
        }