public void MSOXWSCORE_S07_TC16_GetTaskItemWithTwoItemIdTypesSuccessfully() { #region Step 1: Create a recurring task item. // Define the pattern and range of the recurring task item. DailyRecurrencePatternType pattern = new DailyRecurrencePatternType(); pattern.Interval = 1; NumberedRecurrenceRangeType range = new NumberedRecurrenceRangeType(); int numberOfOccurrences = 5; range.NumberOfOccurrences = numberOfOccurrences; System.DateTime start = System.DateTime.Now; range.StartDate = start; // Define the TaskType item. TaskType[] items = new TaskType[] { new TaskType() }; items[0].Subject = Common.GenerateResourceName( this.Site, TestSuiteHelper.SubjectForCreateItem); items[0].Recurrence = new TaskRecurrenceType(); items[0].Recurrence.Item = pattern; items[0].Recurrence.Item1 = range; // Call CreateItem operation. CreateItemResponseType createItemResponse = this.CallCreateItemOperation(DistinguishedFolderIdNameType.tasks, items); // Check the operation response. Common.CheckOperationSuccess(createItemResponse, 1, this.Site); BaseItemIdType[] createdTaskItemIds = Common.GetItemIdsFromInfoResponse(createItemResponse); // One created task item should be returned. Site.Assert.AreEqual <int>( 1, createdTaskItemIds.GetLength(0), "One created task item should be returned! Expected Item Count: {0}, Actual Item Count: {1}", 1, createdTaskItemIds.GetLength(0)); #endregion #region Step 2: Get the recurring task item by ItemIdType. // Call GetItem operation using the created task item ID. GetItemResponseType getItemResponse = this.CallGetItemOperation(createdTaskItemIds); // Check the operation response. Common.CheckOperationSuccess(getItemResponse, 1, this.Site); #endregion // Exchange 2007 and Exchange 2010 do not support the RecurringMasterItemIdRanges element. SutVersion currentSutVersion = (SutVersion)Enum.Parse(typeof(SutVersion), Common.GetConfigurationPropertyValue("SutVersion", this.Site)); if (currentSutVersion.Equals(SutVersion.ExchangeServer2013)) { #region Step 3: Get the recurring task item by RecurringMasterItemIdRangesType. // Define the RecurringMasterItemIdRanges using the created task item ID. RecurringMasterItemIdRangesType[] recurringMasterItemIdRanges = new RecurringMasterItemIdRangesType[1]; recurringMasterItemIdRanges[0] = new RecurringMasterItemIdRangesType(); recurringMasterItemIdRanges[0].Id = (createdTaskItemIds[0] as ItemIdType).Id; recurringMasterItemIdRanges[0].ChangeKey = (createdTaskItemIds[0] as ItemIdType).ChangeKey; recurringMasterItemIdRanges[0].Ranges = new OccurrencesRangeType[1]; recurringMasterItemIdRanges[0].Ranges[0] = new OccurrencesRangeType(); recurringMasterItemIdRanges[0].Ranges[0].CompareOriginalStartTimeSpecified = true; recurringMasterItemIdRanges[0].Ranges[0].CompareOriginalStartTime = true; recurringMasterItemIdRanges[0].Ranges[0].StartSpecified = true; recurringMasterItemIdRanges[0].Ranges[0].Start = start; recurringMasterItemIdRanges[0].Ranges[0].EndSpecified = true; recurringMasterItemIdRanges[0].Ranges[0].End = start.AddDays(numberOfOccurrences); // Call GetItem operation using the recurringMasterItemIdRanges. getItemResponse = this.CallGetItemOperation(recurringMasterItemIdRanges); // Check the operation response. Common.CheckOperationSuccess(getItemResponse, 1, this.Site); #endregion } }
private ItemType[] GetRemoteCalendarItems(List <SearchExpressionType> searchItems) { FindItemType findItemType = new FindItemType(); findItemType.ItemShape = CalendarItemFields.CalendarQueryShape; findItemType.ParentFolderIds = new BaseFolderIdType[] { new DistinguishedFolderIdType { Id = DistinguishedFolderIdNameType.calendar } }; findItemType.Restriction = new RestrictionType { Item = new OrType { Items = searchItems.ToArray() } }; FindItemResponseType response = this.binding.FindItem(findItemType); ItemType[] array = this.HandleFindItemResponse(response); if (array == null) { Globals.ConsistencyChecksTracer.TraceDebug((long)this.GetHashCode(), "FindItem returned NULL ArrayOfRealItemsType."); return(null); } List <ItemIdType> list = new List <ItemIdType>(); foreach (ItemType itemType in array) { if (itemType is CalendarItemType) { CalendarItemType calendarItemType = itemType as CalendarItemType; if (calendarItemType.CalendarItemType1 == CalendarItemTypeType.Single) { list.Add(itemType.ItemId); } else { OccurrencesRangeType occurrencesRangeType = new OccurrencesRangeType { Start = base.ValidateFrom.UniversalTime, StartSpecified = true, End = base.ValidateUntil.UniversalTime, EndSpecified = true, Count = 100, CountSpecified = true }; RecurringMasterItemIdRangesType item = new RecurringMasterItemIdRangesType { Id = itemType.ItemId.Id, ChangeKey = itemType.ItemId.ChangeKey, Ranges = new OccurrencesRangeType[] { occurrencesRangeType } }; list.Add(item); } } else { Globals.ConsistencyChecksTracer.TraceDebug((long)this.GetHashCode(), "FindItem returned an item which is not a CalendarItemType. Skipping it."); } } if (list.Count < 1) { Globals.ConsistencyChecksTracer.TraceDebug((long)this.GetHashCode(), "FindItem didn't return valid items."); return(null); } GetItemType getItem = new GetItemType { ItemShape = CalendarItemFields.CalendarItemShape, ItemIds = list.ToArray() }; GetItemResponseType item2 = this.binding.GetItem(getItem); ItemType[] array3 = this.HandleGetItemResponse(item2); if (array3 == null) { Globals.ConsistencyChecksTracer.TraceDebug((long)this.GetHashCode(), "GetItem returned NULL ItemType[]."); } return(array3); }