예제 #1
0
        internal static void DeleteRelatedMessage(this IEventInternal entity, string messageId, DeleteItemFlags flags, IXSOFactory xsoFactory, IdConverter idConverter, IStoreSession session, bool markAsReadBeforeDelete)
        {
            StoreObjectId storeObjectId = idConverter.ToStoreObjectId(messageId);

            using (IMeetingMessage meetingMessage = xsoFactory.BindToMeetingMessage(session, storeObjectId))
            {
                if (meetingMessage == null || meetingMessage.GlobalObjectId == null || meetingMessage.GlobalObjectId.ToString() != entity.GlobalObjectId)
                {
                    throw new InvalidRequestException(CalendaringStrings.ErrorMeetingMessageNotFoundOrCantBeUsed);
                }
                if (markAsReadBeforeDelete)
                {
                    meetingMessage.OpenAsReadWrite();
                    meetingMessage.IsRead = true;
                    meetingMessage.Save(SaveMode.NoConflictResolutionForceSave);
                }
            }
            session.Delete(flags, new StoreId[]
            {
                storeObjectId
            });
        }