internal static WorkingSetFlags GetWorkingSetFlags(WorkingSetSource workingSetSource) { WorkingSetFlags result; switch (workingSetSource) { case WorkingSetSource.None: result = WorkingSetFlags.Exchange; break; case WorkingSetSource.SPO: result = (WorkingSetFlags.WorkingSet | WorkingSetFlags.SPO); break; case WorkingSetSource.Yammer: result = (WorkingSetFlags.WorkingSet | WorkingSetFlags.Yammer); break; case WorkingSetSource.O365: result = WorkingSetFlags.WorkingSet; break; case WorkingSetSource.SubscribedGroups: result = (WorkingSetFlags.Exchange | WorkingSetFlags.WorkingSet | WorkingSetFlags.Subscribed | WorkingSetFlags.Groups); break; case WorkingSetSource.PinnedGroups: result = (WorkingSetFlags.WorkingSet | WorkingSetFlags.Pinned | WorkingSetFlags.Groups); break; default: throw new FormatException(string.Format("Invalid Working Set source : {0}", workingSetSource)); } return(result); }
public override void Process(StoreDriverDeliveryEventArgsImpl argsImpl, Action action, int traceId) { AbstractActionProcessor.Tracer.TraceDebug((long)traceId, "WorkingSetAgent.AddExchangeItemProcessor.Process: entering"); MailboxSession mailboxSession = argsImpl.MailboxSession; string workingSetSourcePartition = WorkingSetUtils.GetWorkingSetSourcePartition(action.Item); string workingSetSourcePartitionInternal = WorkingSetUtils.GetWorkingSetSourcePartitionInternal(action.Item); StoreObjectId workingSetPartitionFolderId = WorkingSetUtils.GetWorkingSetPartitionFolderId(mailboxSession, workingSetSourcePartition, workingSetSourcePartitionInternal); using (Item item = ((ExchangeItem)action.Item).Item) { using (MessageItem messageItem = MessageItem.Create(mailboxSession, workingSetPartitionFolderId)) { messageItem.ClassName = item.ClassName; Body.CopyBody(item.Body, messageItem.Body, CultureInfo.InvariantCulture, false, false); Item.CopyItemContent(item, messageItem); if (workingSetSourcePartition != null) { messageItem.WorkingSetSourcePartition = workingSetSourcePartition; } WorkingSetSource sourceSystemCode = (WorkingSetSource)action.Item.SourceSystemCode; WorkingSetFlags workingSetFlags = WorkingSetUtils.GetWorkingSetFlags(sourceSystemCode); messageItem.WorkingSetId = action.Item.Identifier; messageItem.WorkingSetSource = sourceSystemCode; messageItem.WorkingSetFlags = workingSetFlags; PolicyTagHelper.SetRetentionProperties(messageItem, ExDateTime.UtcNow.AddDays(30.0), 30); messageItem.AutoResponseSuppress = AutoResponseSuppress.All; messageItem.Save(SaveMode.NoConflictResolutionForceSave); AbstractActionProcessor.Tracer.TraceDebug((long)traceId, "WorkingSetAgent.AddExchangeItemProcessor.Process: workingSetSource - {0}, workingSetFlags - {1}, workingSetSoucePartition - {2}, folder - {3}", new object[] { sourceSystemCode, workingSetFlags, workingSetSourcePartition, workingSetPartitionFolderId }); } } WorkingSet.AddExchangeItem.Increment(); WorkingSet.AddItem.Increment(); argsImpl.MailRecipient.DsnRequested = DsnRequestedFlags.Never; throw new SmtpResponseException(AddExchangeItemProcessor.processedAddExchangeItemSignalMailResponse, this.actionProcessorFactory.WorkingSetAgent.Name); }