Esempio n. 1
0
        /// <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));
        }
Esempio n. 4
0
        /// <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));
        }
Esempio n. 5
0
        /// <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));
        }
Esempio n. 6
0
        /// <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));
            }
        }