예제 #1
0
        /// <summary>
        /// Validates the list of updated holidays
        /// </summary>
        /// <param name="holidays"></param>
        private void ValidateHolidaysListUpdateRequest(HolidayPatternInfoRequest request)
        {
            var existingHolidays = holidayPatternRepository.Get(request.HolidayPatternId)
                                   .Holidays.Where(x => x.IsActive).Select(y => y.Date).ToList();

            if (request.Holidays.Where(x =>
                                       x.Date <= TimeZoneUtility.GetCurrentTimestamp().Date).Any(y =>
                                                                                                 !existingHolidays.Contains(y)))
            {
                throw new NDMSBusinessException(ValidationMessages.PastDateError);
            }
        }
예제 #2
0
        /// <summary>
        /// Update Holiday Mappings
        /// </summary>
        /// <param name="request"></param>
        /// <param name="userName"></param>
        private void UpdateHolidayMapping(HolidayPatternInfoRequest request, string userName)
        {
            var loggedInUserId = userRepository.GetAll().FirstOrDefault(x =>
                                                                        x.AccountName == userName).Id;
            var holidayPattern = holidayPatternRepository.Get(request.HolidayPatternId);

            var removedHolidays = holidayPattern.Holidays.Where(m =>
                                                                m.IsActive &&
                                                                !request.Holidays.Contains(m.Date));

            foreach (var holiday in removedHolidays)
            {
                holiday.IsActive       = false;
                holiday.LastModifiedBy = loggedInUserId;
                holiday.LastModifiedOn = TimeZoneUtility.GetCurrentTimestamp();
            }
            var reactivatedHolidays = holidayPattern.Holidays.Where(m =>
                                                                    !m.IsActive &&
                                                                    request.Holidays.Contains(m.Date));

            foreach (var holiday in reactivatedHolidays)
            {
                holiday.IsActive       = true;
                holiday.LastModifiedBy = loggedInUserId;
                holiday.LastModifiedOn = TimeZoneUtility.GetCurrentTimestamp();
            }

            var addedHolidays = request.Holidays.Where(x =>
                                                       !holidayPattern.Holidays.Select(m => m.Date).Contains(x));

            foreach (var holiday in addedHolidays)
            {
                holidayPattern.Holidays.Add(new HolidayPatternInfo
                {
                    HolidayPatternId = request.HolidayPatternId,
                    Date             = holiday.Date,
                    IsActive         = true,
                    CreatedBy        = loggedInUserId,
                    CreatedOn        = TimeZoneUtility.GetCurrentTimestamp(),
                    LastModifiedBy   = loggedInUserId,
                    LastModifiedOn   = TimeZoneUtility.GetCurrentTimestamp()
                });
            }

            holidayPatternRepository.AddOrUpdate(holidayPattern);
            holidayPatternRepository.Save();
        }
예제 #3
0
 public IHttpActionResult UpdateHolidayPatternInfo([FromBody] HolidayPatternInfoRequest request)
 {
     CheckModelState();
     holidayPatternManager.UpdateHolidayPatternMapping(request, Username);
     return(Ok());
 }
예제 #4
0
 /// <summary>
 /// Update Holidays Mapping
 /// </summary>
 /// <param name="request"></param>
 /// <param name="userName"></param>
 public void UpdateHolidayPatternMapping(HolidayPatternInfoRequest request, string userName)
 {
     ValidateHolidaysListUpdateRequest(request);
     UpdateHolidayMapping(request, userName);
 }