Ejemplo n.º 1
0
        public TimeSpan GetRemindTimeSpan(DateTime toDate, bool isResolution,
                                          ResponseLabelTermCalculationData termCalculationData = null)
        {
            TimeSpan workingTimeSpan = TimeSpan.Zero;

            if (TermCalculationData == null || toDate == DateTime.MinValue)
            {
                return(workingTimeSpan);
            }

            DateTime userCurrentDateTIme = UserConnection.CurrentUser.GetCurrentDateTime();
            bool     isCalendarDays      = isResolution
                                ? TermCalculationData.IsResolutionInCalendarDays
                                : TermCalculationData.IsResponseInCalendarDays;

            if (isCalendarDays)
            {
                workingTimeSpan = toDate - userCurrentDateTIme;
            }
            else
            {
                var termCalculatorActions = new TermCalculatorActions(UserConnection,
                                                                      TermCalculationData.CalendarId);
                var timeZoneConvertor = new TimeZoneConvertor(TermCalculationData.CalendarTimeZone,
                                                              UserConnection.CurrentUser.TimeZone);
                DateTime calendarUserCurrentDateTime = timeZoneConvertor.ToCalendarDateTime(userCurrentDateTIme);
                DateTime calendarResponseDate        = timeZoneConvertor.ToCalendarDateTime(toDate);
                workingTimeSpan = termCalculatorActions.GetWorkingTimeSpan(calendarUserCurrentDateTime, calendarResponseDate);
            }

            return(workingTimeSpan);
        }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
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));
        }