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