Example #1
0
        public override MessageItem CreateForward(MailboxSession session, StoreId parentFolderId, ReplyForwardConfiguration configuration)
        {
            this.CheckDisposed("CreateForward");
            ExTraceGlobals.MeetingMessageTracer.Information <GlobalObjectId>((long)this.GetHashCode(), "Storage.MeetingMessage.CreateForward: GOID={0}", this.GlobalObjectId);
            Util.ThrowOnNullArgument(session, "session");
            Util.ThrowOnNullArgument(parentFolderId, "parentFolderId");
            Util.ThrowOnNullArgument(configuration, "configuration");
            MeetingRequest meetingRequest = null;
            bool           flag           = false;
            MessageItem    result;

            try
            {
                meetingRequest = (base.IsSeriesMessage ? MeetingRequest.CreateMeetingRequestSeries(session) : MeetingRequest.CreateMeetingRequest(session));
                ForwardCreation forwardCreation = new ForwardCreation(this, meetingRequest, configuration);
                forwardCreation.PopulateProperties();
                meetingRequest.AdjustAppointmentStateFlagsForForward();
                List <BlobRecipient> mergedRecipientList = this.GetMergedRecipientList();
                meetingRequest.SetUnsendableRecipients(mergedRecipientList);
                base.LocationIdentifierHelperInstance.SetLocationIdentifier(42485U, LastChangeAction.CreateForward);
                flag   = true;
                result = meetingRequest;
            }
            finally
            {
                if (!flag && meetingRequest != null)
                {
                    meetingRequest.Dispose();
                    meetingRequest = null;
                }
            }
            return(result);
        }