Esempio n. 1
0
        public virtual DateTime Calculate(DateTime registrationDateTime,
                                          ResponseTimeColumnsConfig respondTimeColumnsConfig)
        {
            if (ServiceItem == null)
            {
                return(registrationDateTime);
            }
            ResponseTime responseTime = GetMinResponseTime(respondTimeColumnsConfig);

            if (IsCalendarTimeUnit(responseTime.TimeUnitId))
            {
                return(registrationDateTime + responseTime.GetTimeSpan(UserConnection));
            }
            DateTime responseDateTime;

            if (responseTime.TimeUnitId == TermCalculationConstants.WorkingDayTimeUnitId)
            {
                var      timeZoneConvertor            = new TimeZoneConvertor(CalendarTimeZone, UserConnection.CurrentUser.TimeZone);
                DateTime calendarRegistrationDateTime = timeZoneConvertor.ToCalendarDateTime(registrationDateTime);
                responseDateTime = timeZoneConvertor.ToUserDateTime(Actions.AddWorkingDays(calendarRegistrationDateTime,
                                                                                           responseTime.Value));
                return(responseDateTime);
            }
            responseDateTime = CalculateByCalendar(registrationDateTime, responseTime.GetTimeSpan(UserConnection));
            return(responseDateTime);
        }
Esempio n. 2
0
        public virtual DateTime CalculateByCalendar(DateTime registrationDateTime, TimeSpan responseTimeSpan)
        {
            if (Calendar == null)
            {
                return(registrationDateTime);
            }
            var      timeZoneConvertor            = new TimeZoneConvertor(CalendarTimeZone, UserConnection.CurrentUser.TimeZone);
            DateTime calendarRegistrationDateTime = timeZoneConvertor.ToCalendarDateTime(registrationDateTime);
            DateTime calendarResponseDateTime     = responseTimeSpan >= TimeSpan.Zero
                                ? CalculateByCalendarInner(calendarRegistrationDateTime, responseTimeSpan)
                                : CalculateDelayByCalendarInner(calendarRegistrationDateTime, responseTimeSpan);

            return(timeZoneConvertor.ToUserDateTime(calendarResponseDateTime));
        }