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 }); }