/// <summary> /// Do the sampling /// </summary> /// <param name="value">The timestamp</param> /// <param name="local">use UTC time zone</param> /// <param name="factor">use factor of the time unit</param> /// <returns>The projected timestamp</returns> public static DateTimeOffset DoSampling(DateTimeOffset value, bool local, int factor = 1) { var timezone = GetTimeZone(); if (local && timezone != null) { var dt = TimeZoneSource.ConvertUtcToLocal(value, timezone); value = new DateTimeOffset(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, default(TimeSpan)); } int month = value.Month; if (factor != 1) { month = value.Month - 1; var reminder = month % factor; if (reminder != 0) { month = month - reminder; } month++; } return(new DateTimeOffset(value.Year, month, NatualValues.DayOfMonth, NatualValues.Hour, NatualValues.Minute, NatualValues.Second, value.Offset)); }
/// <summary> /// Attempts to get time zone from calendar of service of sourcing case entity. /// </summary> /// <returns>Time zone.</returns> protected TimeZoneInfo GetFromServiceCalendar() { var calendarId = TimeZoneSource.GetTypedColumnValue <Guid>(ServiceItemCalendarColumnName); var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Calendar"); var timeZoneCodeColumnName = esq.AddColumn("TimeZone.Code").Name; Entity calendar = esq.GetEntity(UserConnection, calendarId); var timeZoneCode = calendar.GetTypedColumnValue <string>(timeZoneCodeColumnName); return(FindByCode(timeZoneCode)); }
/// <summary> /// Attempts to get time zone from service in service pact of sourcing case entity. /// </summary> /// <returns>Time zone.</returns> private TimeZoneInfo GetFromServiceInServicePact() { var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "ServiceInServicePact"); EntitySchemaQueryColumn timeZoneCodeColumn = esq.AddColumn("Calendar.TimeZone.Code"); esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "ServiceItem", TimeZoneSource.GetTypedColumnValue <Guid>(ServiceItemIdColumnName))); esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "ServicePact", TimeZoneSource.GetTypedColumnValue <Guid>(ServicePactIdColumnName))); Entity serviceInServicePact = esq.GetEntityCollection(UserConnection).First.Value; string code = serviceInServicePact.GetTypedColumnValue <string>(timeZoneCodeColumn.Name); return(FindByCode(code)); }
/// <summary> /// Do the sampling /// </summary> /// <param name="value">The timestamp</param> /// <param name="local">use UTC time zone</param> /// <param name="firstDay">The first day of the week</param> /// <param name="factor">use factor of the time unit</param> /// <returns>The projected timestamp</returns> public static DateTimeOffset DoSampling(DateTimeOffset value, bool local, string firstDay, int factor = 1) { var timezone = GetTimeZone(); if (local && timezone != null) { var dt = TimeZoneSource.ConvertUtcToLocal(value, timezone); value = new DateTimeOffset(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, default(TimeSpan)); } var offset = ProjectByDayOfWeek.GetOffset(value.DayOfWeek, firstDay, factor); value = value.AddDays(offset); return(new DateTimeOffset(value.Year, value.Month, value.Day, NatualValues.Hour, NatualValues.Minute, NatualValues.Second, value.Offset)); }
/// <summary> /// Do the sampling /// </summary> /// <param name="value">The timestamp</param> /// <param name="local">use UTC time zone</param> /// <param name="factor">use factor of the time unit</param> /// <returns>The projected timestamp</returns> public static DateTimeOffset DoSampling(DateTimeOffset value, bool local, int factor = 1) { var timezone = GetTimeZone(); if (local && timezone != null) { var dt = TimeZoneSource.ConvertUtcToLocal(value, timezone); value = new DateTimeOffset(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, default(TimeSpan)); } var second = value.Second; if (factor != 1) { var reminder = second % factor; if (reminder != 0) { second = second - reminder; } } return(new DateTimeOffset(value.Year, value.Month, value.Day, value.Hour, value.Minute, second, value.Offset)); }
/// <summary> /// Do the sampling /// </summary> /// <param name="value">The timestamp</param> /// <param name="local">use UTC time zone</param> /// <param name="firstDay">The first day of the week</param> /// <param name="factor">use factor of the time unit</param> /// <returns>The projected timestamp</returns> public static DateTimeOffset DoSampling(DateTimeOffset value, bool local, string firstDay = "sunday", int factor = 1) { var timezone = GetTimeZone(); if (local && timezone != null) { var dt = TimeZoneSource.ConvertUtcToLocal(value, timezone); value = new DateTimeOffset(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, default(TimeSpan)); } if (firstDay.ToLower() == "monday") { return(new DateTimeOffset(NatualValues.YearFirstWeekMonday1970, NatualValues.MonthFirstWeekMonday1970, NatualValues.DayOfWeekMonday1970, value.Hour, value.Minute, value.Second, value.Offset)); } else if (firstDay.ToLower() == "saturday") { return(new DateTimeOffset(NatualValues.Year, NatualValues.Month, NatualValues.DayOfWeekSaturday1970, value.Hour, value.Minute, value.Second, value.Offset)); } else { return(new DateTimeOffset(NatualValues.Year, NatualValues.Month, NatualValues.DayOfWeekSunday1970, value.Hour, value.Minute, value.Second, value.Offset)); } }