protected void submitHolidayRequest(object sender, EventArgs e)
        {
            DateTime startDate   = startDateCalendar.SelectedDate;
            DateTime endDate     = endDateCalendar.SelectedDate;
            int      workingDays = GeneralUtils.CalculateWorkingDays(startDate, endDate);

            startDate = GeneralUtils.simplifyStartDate(startDate);
            endDate   = GeneralUtils.simplifyEndDate(endDate);
            if (workingDays == 0)
            {
                displayHolidaySummary("You selected weekend days, no need for holiday allowance", GeneralUtils.DANGER_COLOR);
                return;
            }
            else if (workingDays > GeneralUtils.MAX_POSSIBLE_HOLIDAY)
            {
                displayHolidaySummary("Too many days selected, it exceeds the maximum allowance", GeneralUtils.DANGER_COLOR);
                return;
            }
            if (startDate.Year > DateTime.Now.Year || endDate.Year > DateTime.Now.Year)
            {
                displayHolidaySummary("Sorry, not accepting holiday requests for next year yet", GeneralUtils.DANGER_COLOR);
                return;
            }
            try
            {
                using (HBSModel _entity = new HBSModel())
                {
                    int userId = (int)Session["userId"];

                    HolidayRequest holidayRequest = new HolidayRequest()
                    {
                        StartDate    = startDate,
                        EndDate      = endDate,
                        UserID       = userId,
                        NumberOfDays = workingDays
                    };
                    var usr = _entity.Users.Find(userId);

                    if (usr.HolidayRequests.Where(x => x.StatusRequest.Status == GeneralUtils.APPROVED ||
                                                  x.StatusRequest.Status == GeneralUtils.PENDING)
                        .Any(x => GeneralUtils.isOverlappingHoliday(x, holidayRequest)))
                    {
                        displayHolidaySummary("There is an overlap with your current pending or approved requests", GeneralUtils.DANGER_COLOR);
                        return;
                    }
                    holidayRequest.RequestStatusID = _entity.StatusRequests
                                                     .FirstOrDefault(status => status.Status == GeneralUtils.PENDING).ID;
                    holidayRequest.ConstraintsBroken = new ConstraintChecking(usr, holidayRequest).getBrokenConstraints();
                    holidayRequest.DaysPeakTime      = PrioritiseRequests
                                                       .daysFallPeakTimesCount(holidayRequest.StartDate, holidayRequest.EndDate);
                    _entity.HolidayRequests.Add(holidayRequest);
                    _entity.SaveChanges();
                    Response.Redirect("/EmployeeHome?HolidayRequest=Success");
                }
            }
            catch
            {
                Response.Write("Server encountered an issue while submitting your request");
            }
        }
Пример #2
0
        public void initializeRequestsList()
        {
            outstandingHolidaysListView.Items.Clear();
            try
            {
                messageLabel.Visible = false;
                using (HBSModel _entity = new HBSModel())
                {
                    var prioritiseReqs = (from el in _entity.HolidayRequests
                                          where el.StatusRequest.Status == GeneralUtils.PENDING
                                          select new PriorityRequest()
                    {
                        Constraints = new BreakingConstraints()
                        {
                            AtLeastPercentage = el.ConstraintsBroken.AtLeastPercentage,
                            ExceedsHolidayEntitlement = el.ConstraintsBroken.ExceedsHolidayEntitlement,
                            HeadOrDeputy = el.ConstraintsBroken.HeadOrDeputy,
                            ManagerOrSenior = el.ConstraintsBroken.ManagerOrSenior
                        },
                        WorkingDays = el.NumberOfDays,
                        DaysPeakTime = el.DaysPeakTime,
                        EndDate = el.EndDate,
                        ID = el.ID,
                        RemainingDays = el.User.RemainingDays,
                        StartDate = el.StartDate,
                        InitialHolidayEntitlement = el.User.InitialHolidayEntitlement,
                        TotalPeakDaysHoliday = el.User.TotalPeakDaysHoliday
                    }).ToList();
                    var ordered = new PrioritiseRequests(prioritiseReqs).getPrioritisedRequests();
                    foreach (var request in ordered)
                    {
                        string[] arr = new string[4];
                        arr[0] = request.ID.ToString();
                        arr[1] = request.StartDate.ToShortDateString();
                        arr[2] = request.EndDate.ToShortDateString();
                        arr[3] = request.WorkingDays.ToString();
                        ListViewItem item = new ListViewItem(arr);
                        if (PriorityRequest.isAnyConstraintBroken(request.Constraints))
                        {
                            item.BackColor = Color.SandyBrown;
                        }
                        else
                        {
                            item.BackColor = Color.Lime;
                        }

                        outstandingHolidaysListView.Items.Add(item);
                    }
                }
            }
            catch (Exception err)
            {
                DesktopAppUtils.popDefaultErrorMessageBox("Could not retrieve Item from DB \n" + err.Message);
            }
        }
 public int HolidayRequest(DateTime startDate, DateTime endDate, int workingDays, string username, string password)
 {
     if (startDate > endDate || startDate < DateTime.Now.AddDays(2) || workingDays == 0)
     {
         return(-4);
     }
     try
     {
         using (HBSModel _entity = new HBSModel())
         {
             var _user = _entity.Users.FirstOrDefault(x => x.Username == username);
             if (_user == null)
             {
                 return(-1);
             }
             if (!GeneralUtils.VerifyPasswordHash(password, _user.Pwd, _user.PwdSalt) || _user.Role.RoleName == GeneralUtils.ADMIN_ROLE)
             {
                 return(-2);
             }
             HolidayRequest holidayRequest = new HolidayRequest()
             {
                 StartDate    = startDate,
                 EndDate      = endDate,
                 UserID       = _user.id,
                 NumberOfDays = workingDays
             };
             holidayRequest.RequestStatusID = _entity.StatusRequests
                                              .FirstOrDefault(status => status.Status == GeneralUtils.PENDING).ID;
             holidayRequest.ConstraintsBroken = new ConstraintChecking(_user, holidayRequest).getBrokenConstraints();
             holidayRequest.DaysPeakTime      = PrioritiseRequests
                                                .daysFallPeakTimesCount(holidayRequest.StartDate, holidayRequest.EndDate);
             _entity.HolidayRequests.Add(holidayRequest);
             _entity.SaveChanges();
         }
     }
     catch
     {
         return(-3);
     }
     return(1);
 }