private GroupOperationResult SetRetentionPolicyInternal(StoreObjectId itemId, PolicyTag policyTag, bool isArchiveAction) { PropertyDefinition[] propsToReturn = isArchiveAction ? PolicyTagHelper.ArchiveProperties : PolicyTagHelper.RetentionProperties; using (Item item = Item.Bind(this.session, itemId, propsToReturn)) { item.OpenAsReadWrite(); if (isArchiveAction) { if (policyTag == null) { PolicyTagHelper.ClearPolicyTagForArchiveOnItem(item); } else { PolicyTagHelper.SetPolicyTagForArchiveOnItem(policyTag, item); } } else if (policyTag == null) { PolicyTagHelper.ClearPolicyTagForDeleteOnItem(item); } else { PolicyTagHelper.SetPolicyTagForDeleteOnItem(policyTag, item); } item.Save(SaveMode.ResolveConflicts); } return(new GroupOperationResult(OperationResult.Succeeded, new StoreObjectId[] { itemId }, null)); }
public static void SetPolicyTagForDeleteOnNewItem(PolicyTag policyTag, StoreObject item) { item[StoreObjectSchema.PolicyTag] = policyTag.PolicyGuid.ToByteArray(); item[StoreObjectSchema.RetentionFlags] = 0; CompositeRetentionProperty setStartDateEtc = PolicyTagHelper.GetSetStartDateEtc(policyTag, item); if (policyTag.TimeSpanForRetention.TotalDays > 0.0) { item[InternalSchema.RetentionPeriod] = (int)policyTag.TimeSpanForRetention.TotalDays; item[InternalSchema.RetentionDate] = PolicyTagHelper.CalculateExecutionDate(setStartDateEtc, policyTag.TimeSpanForRetention.TotalDays); } }
public static void SetKeepInPlaceForArchiveOnItem(StoreObject item) { PolicyTagHelper.ClearPolicyTagForArchiveOnItem(item); object valueOrDefault = item.GetValueOrDefault <object>(StoreObjectSchema.RetentionFlags); RetentionAndArchiveFlags retentionAndArchiveFlags; if (valueOrDefault != null && valueOrDefault is int) { retentionAndArchiveFlags = (RetentionAndArchiveFlags)((int)valueOrDefault | 32); } else { retentionAndArchiveFlags = RetentionAndArchiveFlags.KeepInPlace; } item[StoreObjectSchema.RetentionFlags] = (int)retentionAndArchiveFlags; }
private void SetExpiration() { PolicyTagHelper.SetRetentionProperties(this, ExDateTime.Now.AddDays(30.0), 30); }