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