/// <summary> /// Reads response elements from XML. /// </summary> /// <param name="reader">The reader.</param> internal override void ReadElementsFromXml(EwsServiceXmlReader reader) { if (this.ErrorCode == ServiceError.NoError) { this.delegateUserResponses = new Collection <DelegateUserResponse>(); reader.Read(); if (reader.IsStartElement(XmlNamespace.Messages, XmlElementNames.ResponseMessages)) { int delegateUserIndex = 0; do { reader.Read(); if (reader.IsStartElement(XmlNamespace.Messages, XmlElementNames.DelegateUserResponseMessageType)) { DelegateUser delegateUser = null; if (this.readDelegateUsers && (this.delegateUsers != null)) { delegateUser = this.delegateUsers[delegateUserIndex]; } DelegateUserResponse delegateUserResponse = new DelegateUserResponse(readDelegateUsers, delegateUser); delegateUserResponse.LoadFromXml(reader, XmlElementNames.DelegateUserResponseMessageType); this.delegateUserResponses.Add(delegateUserResponse); delegateUserIndex++; } }while (!reader.IsEndElement(XmlNamespace.Messages, XmlElementNames.ResponseMessages)); } } }
/// <summary> /// Method is used for setting, updating and deleting delegate. /// </summary> /// <param name="xewsDelegate">Delegate object for manipulation.</param> /// <param name="delegateAction">Action on delegate (Add, Update, Delete).</param> internal void SetDelegate(XEwsDelegate xewsDelegate, DelegateAction delegateAction) { ExchangeService ewsSession = this.GetSessionVariable(); this.ValidateEmailAddress(xewsDelegate.DelegateUserId); string currentBindedMailbox = this.GetBindedMailbox(); DelegateUser delegateUser = new DelegateUser(xewsDelegate.DelegateUserId); Mailbox currentMailbox = new Mailbox(currentBindedMailbox); delegateUser.ReceiveCopiesOfMeetingMessages = xewsDelegate.ReceivesCopyOfMeeting; delegateUser.Permissions.CalendarFolderPermissionLevel = xewsDelegate.CalendarFolderPermission; delegateUser.Permissions.InboxFolderPermissionLevel = xewsDelegate.InboxFolderPermission; delegateUser.Permissions.ContactsFolderPermissionLevel = xewsDelegate.ContactFolderPermission; delegateUser.Permissions.TasksFolderPermissionLevel = xewsDelegate.TaskFolderPermission; switch (delegateAction) { case DelegateAction.Update: ewsSession.UpdateDelegates(currentMailbox, MeetingRequestsDeliveryScope.DelegatesAndMe, delegateUser); break; case DelegateAction.Add: ewsSession.AddDelegates(currentMailbox, MeetingRequestsDeliveryScope.DelegatesAndMe, delegateUser); break; case DelegateAction.Delete: ewsSession.RemoveDelegates(currentMailbox, delegateUser.UserId); break; } }