Ejemplo n.º 1
0
        public IndexDateTime?GetDateTimeIndex(Timing Timing, int searchParameterId)
        {
            if (Timing.Event != null)
            {
                var DateTimeIndex = new IndexDateTime(searchParameterId);
                DateTimeIndex.Low = ResolveTargetEventDateTime(Timing, true, searchParameterId);
                if (DateTimeIndex.Low != DateTimeOffset.MaxValue.ToUniversalTime())
                {
                    decimal            TargetDuration    = ResolveTargetDurationValue(Timing);
                    Timing.UnitsOfTime?TargetUnitsOfTime = null;
                    if (TargetDuration > decimal.Zero)
                    {
                        if (Timing.Repeat.DurationUnit.HasValue)
                        {
                            TargetUnitsOfTime = Timing.Repeat.DurationUnit.Value;
                        }
                    }

                    if (TargetDuration > decimal.Zero && TargetUnitsOfTime.HasValue)
                    {
                        DateTimeIndex.High = AddDurationTimeToEvent(ResolveTargetEventDateTime(Timing, false, searchParameterId), TargetDuration, TargetUnitsOfTime.Value);
                    }
                    else
                    {
                        DateTimeIndex.High = null;
                    }
                }
                else
                {
                    DateTimeIndex.Low = null;
                }
                return(DateTimeIndex);
            }
            return(null);
        }
Ejemplo n.º 2
0
        public IndexDateTime?GetDateTimeIndex(Period value, int searchParameterId)
        {
            IndexDateTime?DateTimeIndexStart = null;
            IndexDateTime?DateTimeIndexEnd   = null;

            PartialDateTime?PartialDateTimeLow = null;

            if (value.StartElement != null)
            {
                PartialDateTimeLow = value.StartElement.ToPartialDateTime();
                if (PartialDateTimeLow.HasValue)
                {
                    DateTimeIndexStart = ParsePartialDateTime(PartialDateTimeLow.Value, searchParameterId);
                }
            }

            PartialDateTime?PartialDateTimeHigh = null;

            if (value.EndElement != null)
            {
                PartialDateTimeHigh = value.EndElement.ToPartialDateTime();
                if (PartialDateTimeHigh.HasValue)
                {
                    DateTimeIndexEnd = ParsePartialDateTime(PartialDateTimeHigh.Value, searchParameterId);
                }
            }

            var DateTimeIndex = new IndexDateTime(searchParameterId);

            if (DateTimeIndexStart is object)
            {
                DateTimeIndex.Low = DateTimeIndexStart.Low;
            }
            if (DateTimeIndexEnd is object)
            {
                DateTimeIndex.High = DateTimeIndexEnd.High;
            }


            return(DateTimeIndex);
        }