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); }
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)); }