protected override IAsyncResult BeginInvoke() { this.service.UserAgent = this.GetUserAgent(); MailboxData[] array = new MailboxData[this.queryList.Count]; for (int i = 0; i < this.queryList.Count; i++) { this.queryList[i].Target = this.Url; array[i] = new MailboxData(this.queryList[i].Email); } ProxyWebRequest.ProxyWebRequestTracer.TraceDebug <object, RequestType, string>((long)this.GetHashCode(), "{0}: Sending request {1} to {2}", TraceContext.Get(), this.requestType, this.url); this.serverRequestId = Microsoft.Exchange.Diagnostics.Trace.TraceCasStart(CasTraceEventType.Availability); if (this.service.SupportsProxyAuthentication) { this.proxyAuthenticator.Authenticate((CustomSoapHttpClientProtocol)this.service); } this.webServiceCallTimer = Stopwatch.StartNew(); Stopwatch stopwatch = Stopwatch.StartNew(); IAsyncResult result = base.Application.BeginProxyWebRequest(this.service, array, new AsyncCallback(base.Complete), null); stopwatch.Stop(); this.queryList.LogLatency("PWRBI", stopwatch.ElapsedMilliseconds); return(result); }
private void ExecuteMeetingSuggestionsQuery(AvailabilityQueryResult result) { AvailabilityQuery.MeetingSuggestionsTracer.TraceDebug((long)this.GetHashCode(), "{0}: Entering AvailabilityQuery.ExecuteMeetingSuggestionsQuery()", new object[] { TraceContext.Get() }); base.RequestLogger.AppendToLog <int>("suggest", 1); try { MeetingSuggester meetingSuggester = new MeetingSuggester(); meetingSuggester.SetOptionsFromSuggestionsViewOptions(this.desiredSuggestionsView, base.ClientContext.TimeZone); List <AttendeeData> list = new List <AttendeeData>(this.mailboxArray.Length); List <int>[] array = new List <int> [this.mailboxArray.Length]; int num = 0; for (int i = 0; i < this.freeBusyQueryArray.Length; i++) { MailboxData mailboxData = this.mailboxArray[i]; FreeBusyQuery freeBusyQuery = this.freeBusyQueryArray[i]; List <int> list2 = new List <int>(); switch (freeBusyQuery.AttendeeKind) { case AttendeeKind.Individual: case AttendeeKind.Unknown: this.AddAttendeeDataToList(mailboxData, freeBusyQuery, list); list2.Add(num); num++; break; case AttendeeKind.Group: if (freeBusyQuery.GroupMembersForSuggestions != null) { foreach (FreeBusyQuery freeBusyQuery2 in freeBusyQuery.GroupMembersForSuggestions) { this.AddAttendeeDataToList(mailboxData, freeBusyQuery2, list); list2.Add(num); num++; } } else { this.AddAttendeeDataToList(mailboxData, freeBusyQuery, list); list2.Add(num); num++; } break; } array[i] = list2; } AttendeeData[] attendees = list.ToArray(); Duration detailedSuggestionsWindow = this.desiredSuggestionsView.DetailedSuggestionsWindow; result.DailyMeetingSuggestions = meetingSuggester.GetSuggestionsByDateRange(new ExDateTime(base.ClientContext.TimeZone, detailedSuggestionsWindow.StartTime), new ExDateTime(base.ClientContext.TimeZone, detailedSuggestionsWindow.EndTime), base.ClientContext.TimeZone, this.desiredSuggestionsView.MeetingDurationInMinutes, attendees); foreach (SuggestionDayResult suggestionDayResult in result.DailyMeetingSuggestions) { foreach (Suggestion suggestion in suggestionDayResult.SuggestionArray) { AttendeeConflictData[] array2 = new AttendeeConflictData[this.mailboxArray.Length]; for (int m = 0; m < this.freeBusyQueryArray.Length; m++) { FreeBusyQuery freeBusyQuery3 = this.freeBusyQueryArray[m]; List <int> list3 = array[m]; switch (freeBusyQuery3.AttendeeKind) { case AttendeeKind.Individual: { int num2 = list3[0]; array2[m] = suggestion.AttendeeConflictDataArray[num2]; break; } case AttendeeKind.Group: if (freeBusyQuery3.GroupMembersForSuggestions != null) { int num3 = 0; int num4 = 0; int num5 = 0; foreach (int num6 in list3) { IndividualAttendeeConflictData individualAttendeeConflictData = (IndividualAttendeeConflictData)suggestion.AttendeeConflictDataArray[num6]; if (individualAttendeeConflictData.IsMissingFreeBusyData) { num4++; } else if (individualAttendeeConflictData.BusyType == BusyType.Free) { num5++; } else { num3++; } } array2[m] = GroupAttendeeConflictData.Create(list3.Count, num3, num5, num4); } else { array2[m] = TooBigGroupAttendeeConflictData.Create(); } break; case AttendeeKind.Unknown: array2[m] = UnknownAttendeeConflictData.Create(); break; } } suggestion.AttendeeConflictDataArray = array2; } } } catch (LocalizedException ex) { ErrorHandler.SetErrorCodeIfNecessary(ex, ErrorConstants.MeetingSuggestionGenerationFailed); result.MeetingSuggestionsException = ex; } AvailabilityQuery.MeetingSuggestionsTracer.TraceDebug((long)this.GetHashCode(), "{0}: Leaving AvailabilityQuery.ExecuteMeetingSuggestionsQuery()", new object[] { TraceContext.Get() }); }
private static EmailAddress ConvertMailboxDataToEmailAddress(MailboxData mailboxData) { return(mailboxData.Email); }