private string ValidateDateTimeRangeAndAdddefaults()
{
// EndTime is optional
DateTime endTime = this.EndTime.HasValue ? this.EndTime.Value : DateTime.Now;
// StartTime is optional
DateTime startTime = this.StartTime.HasValue ? this.StartTime.Value : endTime.Subtract(this.GetDefaultQueryTimeRange());
// Check the value of StartTime
if (startTime > DateTime.Now)
{
throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, ResourcesForEventCmdlets.StartDateLaterThanNow, startTime, DateTime.Now));
}
// Check that the dateTime range makes sense
if (endTime < startTime)
{
throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, ResourcesForEventCmdlets.EndDateEarlierThanStartDate, endTime, startTime));
}
// Validate start and end dates difference is reasonable (<= MaximumDateDifferenceAllowedInDays)
var dateDifference = endTime.Subtract(startTime);
if (dateDifference > MaximumDateDifferenceAllowedInDays)
{
throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, ResourcesForEventCmdlets.StartAndEndDatesTooFarAppart, MaximumDateDifferenceAllowedInDays.TotalDays, dateDifference.TotalDays));
}
return string.Format("eventTimestamp ge '{0:o}' and eventTimestamp le '{1:o}'", startTime.ToUniversalTime(), endTime.ToUniversalTime());
}