Esempio n. 1
0
        public ActionResult LeaveRecords()
        {
            int ManagerId = 0;
            int UserId    = 0;
            List <LeaveRequestEntity> lstRequest = new List <LeaveRequestEntity>();

            if (User.IsInRole("Admin"))
            {
                ViewBag.UserList = UserServices.GetAllUser();
            }
            if (User.IsInRole("Manager"))
            {
                ViewBag.UserList = UserServices.GetUserByManagerId(HRMHelper.CurrentUser.UserId);
                ManagerId        = HRMHelper.CurrentUser.UserId;
            }

            if (Request.Form["lstUser"] != null)
            {
                int.TryParse(Request.Form["lstUser"].ToString(), out UserId);
            }
            ViewBag.SelectedUser = UserId;
            if ((!User.IsInRole("Manager")) && !User.IsInRole("Admin"))
            {
                UserId = HRMHelper.CurrentUser.UserId;
            }


            string _strStartDate = "";
            string _strEndDate   = "";

            if (Request.Form["txtStartDate"] != null)
            {
                _strStartDate = Request.Form["txtStartDate"].ToString();
            }
            if (Request.Form["txtEndDate"] != null)
            {
                _strEndDate = Request.Form["txtEndDate"].ToString();
            }

            ViewBag.StartDate = _strStartDate;
            ViewBag.EndDate   = _strEndDate;
            DateTime _startdate = new DateTime();
            DateTime _enddate   = new DateTime();
            DateTime?StartDate  = null;
            DateTime?EndDate    = null;

            if (_strStartDate != "")
            {
                DateTime.TryParseExact(_strStartDate, new string[] { "MM/dd/yyyy" }, CultureInfo.InvariantCulture, DateTimeStyles.None, out _startdate);
            }
            //else
            //{
            //    _startdate = new DateTime(DateTime.Now.Year, DateTime.Now.Month-1, 1);
            //}
            if (_strEndDate != "")
            {
                DateTime.TryParseExact(_strEndDate, new string[] { "MM/dd/yyyy" }, CultureInfo.InvariantCulture, DateTimeStyles.None, out _enddate);
            }
            if (_startdate != new DateTime())
            {
                _startdate = _startdate.Add(HRMHelper.TimeDiffrence);
                StartDate  = _startdate;
            }
            if (_enddate != new DateTime())
            {
                _enddate = _enddate.Subtract(HRMHelper.TimeDiffrence);
                EndDate  = _enddate;
            }
            List <LeaveStatusTypeEntity> LeaveStatusList     = LeaveServices.GetAllLeaveStatus();
            List <LeaveStatusTypeEntity> PersonalLeaveStatus = LeaveServices.GetAllLeaveStatus();
            List <LeaveRequestEntity>    model = new List <LeaveRequestEntity>();

            if (User.IsInRole("Admin") || User.IsInRole("Manager"))
            {
                LeaveStatusTypeEntity tempPendingApproval = LeaveStatusList.Where(l => l.StatusId == (int)LeaveServices.Leave_status_Type.PendingApproval).FirstOrDefault();
                LeaveStatusList.Remove(tempPendingApproval);
            }
            else
            {
                LeaveStatusTypeEntity tempApproval = LeaveStatusList.Where(l => l.StatusId == (int)LeaveServices.Leave_status_Type.Approved).FirstOrDefault();
                LeaveStatusTypeEntity tempDeclined = LeaveStatusList.Where(l => l.StatusId == (int)LeaveServices.Leave_status_Type.Declined).FirstOrDefault();
                LeaveStatusList.Remove(tempApproval);
                LeaveStatusList.Remove(tempDeclined);
            }

            {
                LeaveStatusTypeEntity tempApproval = PersonalLeaveStatus.Where(l => l.StatusId == (int)LeaveServices.Leave_status_Type.Approved).FirstOrDefault();
                LeaveStatusTypeEntity tempDeclined = PersonalLeaveStatus.Where(l => l.StatusId == (int)LeaveServices.Leave_status_Type.Declined).FirstOrDefault();
                PersonalLeaveStatus.Remove(tempApproval);
                PersonalLeaveStatus.Remove(tempDeclined);
            }
            if (User.IsInRole("Manager"))
            {
                if (UserId == 0)
                {
                    lstRequest = LeaveServices.GetLeaveByUserId(HRMHelper.CurrentUser.UserId, StartDate, EndDate);
                }
            }
            lstRequest.AddRange(LeaveServices.GetLeave(0, UserId, ManagerId, 0, StartDate, EndDate, 0));
            model = lstRequest.OrderBy(l => l.LeaveStatusId).ThenByDescending(l => l.RequestDate).ToList();
            ViewBag.TotalLeaves         = model.Where(s => s.LeaveStatusId == (int)LeaveServices.Leave_status_Type.Approved).Sum(s => s.TotalDays);
            ViewBag.LeaveStatus         = LeaveStatusList;
            ViewBag.PersonalLeaveStatus = PersonalLeaveStatus;
            return(View(model));
        }