예제 #1
0
 public MeetingInviteWriter(MeetingRequest meetingRequest, UserContext userContext, bool isEmbeddedItem) : base(meetingRequest, userContext)
 {
     this.meetingRequest = meetingRequest;
     if (!isEmbeddedItem && !meetingRequest.IsDelegated())
     {
         this.isOrganizer = base.ProcessMeetingMessage(meetingRequest, Utilities.IsItemInDefaultFolder(meetingRequest, DefaultFolderType.Inbox));
         if (this.isOrganizer)
         {
             this.AttendeeResponseWell = new CalendarItemAttendeeResponseRecipientWell(userContext, base.CalendarItemBase);
         }
     }
     this.meetingMessageType = meetingRequest.MeetingRequestType;
     if (this.meetingMessageType != MeetingMessageType.Outdated)
     {
         if (this.isOrganizer)
         {
             this.meetingMessageType = MeetingMessageType.InformationalUpdate;
         }
         else if (this.meetingMessageType == MeetingMessageType.InformationalUpdate && base.CalendarItemBase != null && base.CalendarItemBase.ResponseType == ResponseType.NotResponded)
         {
             this.meetingMessageType = MeetingMessageType.FullUpdate;
         }
     }
     this.meetingRequestRecipientWell = new MeetingRequestRecipientWell(userContext, meetingRequest);
 }
예제 #2
0
 public MeetingInviteWriter(MeetingRequest meetingRequest, UserContext userContext, string toolbarId, bool isPreviewForm, bool isInDeletedItems, bool isEmbeddedItem, bool isInJunkEmailFolder, bool isSuspectedPhishingItem, bool isLinkEnabled) : base(meetingRequest, userContext, isPreviewForm, isInDeletedItems, isEmbeddedItem, isInJunkEmailFolder, isSuspectedPhishingItem, isLinkEnabled)
 {
     this.meetingRequest = meetingRequest;
     this.isDelegated    = meetingRequest.IsDelegated();
     if (toolbarId == null)
     {
         toolbarId = "mpToolbar";
     }
     if (!Utilities.IsPublic(meetingRequest) && !this.IsDraft && !isEmbeddedItem)
     {
         this.isOrganizer = base.ProcessMeetingMessage(meetingRequest, Utilities.IsItemInDefaultFolder(meetingRequest, DefaultFolderType.Inbox));
         if (this.isOrganizer)
         {
             this.AttendeeResponseWell = new CalendarItemAttendeeResponseRecipientWell(this.CalendarItemBase);
         }
     }
     this.meetingMessageType = meetingRequest.MeetingRequestType;
     if (!this.IsDraft)
     {
         if (this.meetingMessageType == MeetingMessageType.Outdated)
         {
             this.infobarResponseString = new Strings.IDs?(1771878760);
             this.meetingMessageType    = MeetingMessageType.Outdated;
         }
         else if (this.isOrganizer)
         {
             this.infobarResponseString = new Strings.IDs?(247559721);
             this.meetingMessageType    = MeetingMessageType.InformationalUpdate;
         }
         else if (this.meetingMessageType == MeetingMessageType.InformationalUpdate)
         {
             if (this.CalendarItemBase != null && this.CalendarItemBase.ResponseType != ResponseType.NotResponded)
             {
                 this.infobarResponseString = new Strings.IDs?(689325109);
             }
             else
             {
                 this.meetingMessageType = MeetingMessageType.FullUpdate;
             }
         }
     }
     InfobarMessageBuilder.AddFlag(this.FormInfobar, meetingRequest, userContext);
     this.meetingRequestRecipientWell = new MeetingRequestRecipientWell(meetingRequest);
     this.toolbar             = new EditMeetingInviteToolbar(toolbarId, meetingRequest.IsResponseRequested, Utilities.IsInArchiveMailbox(meetingRequest), this.meetingMessageType);
     this.toolbar.ToolbarType = ToolbarType.Preview;
 }
예제 #3
0
        // Token: 0x06000CEA RID: 3306 RVA: 0x00045C70 File Offset: 0x00043E70
        private bool LegacyRespond(StoreObjectId itemId, string requestId, string userResponse, bool usingLongId)
        {
            MeetingRequest   meetingRequest   = null;
            CalendarItemBase calendarItemBase = null;
            StoreObjectId    storeObjectId    = null;
            StoreObjectId    storeObjectId2   = null;
            Item             item             = null;

            try
            {
                base.ProtocolLogger.IncrementValue(ProtocolLoggerData.MRItems);
                try
                {
                    item = Item.Bind(base.MailboxSession, itemId, null);
                }
                catch (ObjectNotFoundException)
                {
                    this.AppendNonSuccessXmlNode(requestId, StatusCode.Sync_ProtocolVersionMismatch, userResponse, "Cannot find the meeting-request as specified in the reqest.", usingLongId);
                    base.ProtocolLogger.SetValue(ProtocolLoggerData.Error, "ItemNotFound");
                    return(false);
                }
                meetingRequest = (item as MeetingRequest);
                if (base.Version >= 141 && meetingRequest == null)
                {
                    calendarItemBase = (item as CalendarItemBase);
                    if (calendarItemBase != null)
                    {
                        calendarItemBase.OpenAsReadWrite();
                    }
                }
                if (meetingRequest == null && calendarItemBase == null)
                {
                    this.AppendNonSuccessXmlNode(requestId, StatusCode.Sync_ProtocolVersionMismatch, userResponse, "The item is not meeting-request or calendar item.", usingLongId);
                    base.ProtocolLogger.SetValue(ProtocolLoggerData.Error, "ItemNotValid");
                    return(false);
                }
                item = null;
                if (meetingRequest != null)
                {
                    if (meetingRequest.IsOrganizer())
                    {
                        this.AppendNonSuccessXmlNode(requestId, StatusCode.Sync_ProtocolError, userResponse, "The organizer of this meeting request is the mailbox owner. Checking meetingRequest.", usingLongId);
                        base.ProtocolLogger.SetValue(ProtocolLoggerData.Error, "MRIsOrganizer");
                        return(false);
                    }
                    if (meetingRequest.IsDelegated())
                    {
                        this.AppendNonSuccessXmlNode(requestId, StatusCode.Sync_ProtocolError, userResponse, "Cannot respond to a delegated meeting request.  Use Outlook", usingLongId);
                        base.ProtocolLogger.SetValue(ProtocolLoggerData.Error, "MRIsDelegated");
                        return(false);
                    }
                    if (meetingRequest.IsOutOfDate())
                    {
                        this.AppendNonSuccessXmlNode(requestId, StatusCode.Sync_ProtocolError, userResponse, "Cannot respond to a OutOfDated meeting request.", usingLongId);
                        base.ProtocolLogger.SetValue(ProtocolLoggerData.Error, "MRIsOutOfDate");
                        return(false);
                    }
                    meetingRequest.OpenAsReadWrite();
                    storeObjectId    = meetingRequest.Id.ObjectId;
                    calendarItemBase = meetingRequest.UpdateCalendarItem(false);
                }
                if (calendarItemBase == null)
                {
                    base.ProtocolLogger.SetValue(ProtocolLoggerData.Error, "NullCalItemInMRCmd");
                    throw new AirSyncPermanentException(HttpStatusCode.InternalServerError, StatusCode.ServerError, null, false);
                }
                if (calendarItemBase.IsOrganizer())
                {
                    this.AppendNonSuccessXmlNode(requestId, StatusCode.Sync_ProtocolError, userResponse, "The organizer of this meeting request is the mailbox owner. Checking calendarItem.", usingLongId);
                    base.ProtocolLogger.SetValue(ProtocolLoggerData.Error, "CalIsOrganizer");
                    return(false);
                }
                if (calendarItemBase.IsCancelled)
                {
                    this.AppendNonSuccessXmlNode(requestId, StatusCode.Sync_ProtocolError, userResponse, "Cannot respond to a canceled meeting.", usingLongId);
                    base.ProtocolLogger.SetValue(ProtocolLoggerData.Error, "CalIsCancelled");
                    return(false);
                }
                if (userResponse != null)
                {
                    ResponseType responseType;
                    if (!(userResponse == "1"))
                    {
                        if (!(userResponse == "2"))
                        {
                            if (!(userResponse == "3"))
                            {
                                goto IL_22F;
                            }
                            responseType = ResponseType.Decline;
                        }
                        else
                        {
                            responseType = ResponseType.Tentative;
                        }
                    }
                    else
                    {
                        responseType = ResponseType.Accept;
                    }
                    try
                    {
                        using (calendarItemBase.RespondToMeetingRequest(responseType))
                        {
                        }
                    }
                    catch (SaveConflictException ex)
                    {
                        this.AppendNonSuccessXmlNode(requestId, StatusCode.Sync_ProtocolError, userResponse, "A conflict calendar item has been detected: " + ex.Message, usingLongId);
                        base.ProtocolLogger.SetValue(ProtocolLoggerData.Error, "SavedWithConflicts");
                        return(false);
                    }
                    calendarItemBase.Load();
                    if (meetingRequest != null)
                    {
                        meetingRequest.Save(SaveMode.ResolveConflicts);
                    }
                    if (responseType != ResponseType.Decline)
                    {
                        if (calendarItemBase is CalendarItemOccurrence)
                        {
                            storeObjectId2 = ((CalendarItemOccurrence)calendarItemBase).MasterId.ObjectId;
                        }
                        else
                        {
                            storeObjectId2 = calendarItemBase.Id.ObjectId;
                        }
                    }
                    else
                    {
                        base.MailboxSession.Delete(DeleteItemFlags.MoveToDeletedItems, new StoreId[]
                        {
                            calendarItemBase.Id
                        });
                    }
                    calendarItemBase.Dispose();
                    calendarItemBase = null;
                    if (storeObjectId != null)
                    {
                        base.MailboxSession.Delete(DeleteItemFlags.MoveToDeletedItems, new StoreId[]
                        {
                            storeObjectId
                        });
                    }
                    goto IL_339;
                }
IL_22F:
                throw new ArgumentException(string.Format("Unexpected userResponse value \"{0}\"", userResponse));
            }
            finally
            {
                if (calendarItemBase != null)
                {
                    calendarItemBase.Dispose();
                }
                if (meetingRequest != null)
                {
                    meetingRequest.Dispose();
                }
                if (item != null)
                {
                    item.Dispose();
                }
            }
IL_339:
            string calendarId = null;

            if (storeObjectId2 != null)
            {
                MailboxSyncItemId mailboxSyncItemId = MailboxSyncItemId.CreateForNewItem(storeObjectId2);
                if (this.CalendarItemIdMapping.Contains(mailboxSyncItemId))
                {
                    calendarId = this.CalendarItemIdMapping[mailboxSyncItemId];
                }
                else
                {
                    calendarId = this.CalendarItemIdMapping.Add(mailboxSyncItemId);
                    this.calendarSyncStateChangedFlag = true;
                }
            }
            this.AppendXmlNode(requestId, StatusCode.Success, calendarId, userResponse, usingLongId);
            return(true);
        }
        // Token: 0x060013E0 RID: 5088 RVA: 0x00072734 File Offset: 0x00070934
        public IEnumerator <Attachment12Data> GetEnumerator()
        {
            Item             message        = base.XsoItem as Item;
            Attachment12Data attachmentData = null;

            if (message == null)
            {
                throw new UnexpectedTypeException("Item", base.XsoItem);
            }
            MeetingRequest meetingRequest = base.XsoItem as MeetingRequest;

            if (meetingRequest == null || !meetingRequest.IsDelegated())
            {
                string idbase = null;
                if (this.idmapping != null)
                {
                    idbase = this.idmapping[MailboxSyncItemId.CreateForNewItem(message.Id.ObjectId)];
                }
                if (idbase == null)
                {
                    idbase = message.Id.ObjectId.ToBase64String();
                }
                if (message is MessageItem && ((MessageItem)message).IsRestricted && !BodyConversionUtilities.IsMessageRestrictedAndDecoded(message) && !BodyConversionUtilities.IsIRMFailedToDecode(message))
                {
                    object prop = message.TryGetProperty(MessageItemSchema.DRMLicense);
                    if (prop is byte[][])
                    {
                        byte[][] license = (byte[][])prop;
                        if (license.Length > 0)
                        {
                            attachmentData                   = new Attachment14Data();
                            attachmentData.DisplayName       = "message.rpmsg.license";
                            attachmentData.Method            = 1;
                            attachmentData.EstimatedDataSize = (long)license[0].Length;
                            attachmentData.IsInline          = false;
                            attachmentData.FileReference     = HttpUtility.UrlEncode(idbase + ":DRMLicense");
                            AirSyncDiagnostics.TraceDebug(ExTraceGlobals.XsoTracer, this, "Add DRM license as attachment, message is MessageItem {0}, message.IsRestricted {1}, IsDecoded {2}, FailedToDecode {3}", new object[]
                            {
                                message is MessageItem,
                                ((MessageItem)message).IsRestricted,
                                BodyConversionUtilities.IsMessageRestrictedAndDecoded(message),
                                BodyConversionUtilities.IsIRMFailedToDecode(message)
                            });
                            yield return(attachmentData);
                        }
                        else
                        {
                            AirSyncDiagnostics.TraceDebug <int>(ExTraceGlobals.XsoTracer, this, "The license property on the DRM message is incorrect. Length = {0}", license.Length);
                        }
                    }
                    else
                    {
                        AirSyncDiagnostics.TraceDebug(ExTraceGlobals.XsoTracer, this, "The license property on the DRM message is incorrect. prop = {0}", new object[]
                        {
                            prop
                        });
                    }
                }
                AttachmentCollection attachmentCollection = null;
                if (BodyConversionUtilities.IsMessageRestrictedAndDecoded(message))
                {
                    attachmentCollection = ((RightsManagedMessageItem)message).ProtectedAttachmentCollection;
                }
                else
                {
                    if (BodyConversionUtilities.IsIRMFailedToDecode(message))
                    {
                        goto IL_3FC;
                    }
                    attachmentCollection = message.AttachmentCollection;
                }
                int index = -1;
                foreach (AttachmentHandle handle in attachmentCollection)
                {
                    using (Attachment attachment = attachmentCollection.Open(handle))
                    {
                        if (BodyUtility.IsClearSigned(message) && (string.Equals(attachment.FileName, "smime.p7m", StringComparison.OrdinalIgnoreCase) || string.Equals(attachment.ContentType, "multipart/signed", StringComparison.OrdinalIgnoreCase)))
                        {
                            continue;
                        }
                        attachmentData = this.GetAttachmentData(message, attachment, idbase, ref index);
                    }
                    if (attachmentData != null)
                    {
                        yield return(attachmentData);
                    }
                }
            }
IL_3FC:
            yield break;
        }