public static void ClearPolicyTagForArchiveOnItem(StoreObject item)
        {
            if (item.GetValueOrDefault <object>(StoreObjectSchema.ArchiveTag) != null)
            {
                item.DeleteProperties(new PropertyDefinition[]
                {
                    StoreObjectSchema.ArchiveTag
                });
            }
            if (item.GetValueOrDefault <object>(StoreObjectSchema.ArchivePeriod) != null)
            {
                item.DeleteProperties(new PropertyDefinition[]
                {
                    StoreObjectSchema.ArchivePeriod
                });
            }
            if (item.GetValueOrDefault <object>(InternalSchema.ArchiveDate) != null)
            {
                item.DeleteProperties(new PropertyDefinition[]
                {
                    InternalSchema.ArchiveDate
                });
            }
            object valueOrDefault = item.GetValueOrDefault <object>(StoreObjectSchema.RetentionFlags);

            if (valueOrDefault != null && valueOrDefault is int)
            {
                RetentionAndArchiveFlags retentionAndArchiveFlags = (RetentionAndArchiveFlags)((int)valueOrDefault & -33);
                item[StoreObjectSchema.RetentionFlags] = (int)retentionAndArchiveFlags;
            }
        }
        public static void SetPolicyTagForDeleteOnItem(PolicyTag policyTag, StoreObject item)
        {
            item[StoreObjectSchema.PolicyTag] = policyTag.PolicyGuid.ToByteArray();
            CompositeRetentionProperty compositeRetentionProperty = null;

            byte[] valueOrDefault = item.GetValueOrDefault <byte[]>(ItemSchema.StartDateEtc);
            if (valueOrDefault != null)
            {
                try
                {
                    compositeRetentionProperty = CompositeRetentionProperty.Parse(valueOrDefault, true);
                }
                catch (ArgumentException)
                {
                    compositeRetentionProperty = null;
                }
            }
            if (compositeRetentionProperty == null)
            {
                compositeRetentionProperty         = new CompositeRetentionProperty();
                compositeRetentionProperty.Integer = (int)policyTag.TimeSpanForRetention.TotalDays;
                object valueOrDefault2 = item.GetValueOrDefault <object>(InternalSchema.ReceivedTime);
                if (valueOrDefault2 == null)
                {
                    valueOrDefault2 = item.GetValueOrDefault <object>(StoreObjectSchema.CreationTime);
                }
                if (valueOrDefault2 == null)
                {
                    compositeRetentionProperty.Date = new DateTime?((DateTime)ExDateTime.Now);
                }
                else
                {
                    compositeRetentionProperty.Date = new DateTime?((DateTime)((ExDateTime)valueOrDefault2));
                }
                item[InternalSchema.StartDateEtc] = compositeRetentionProperty.GetBytes(true);
            }
            long fileTime = 0L;

            try
            {
                fileTime = compositeRetentionProperty.Date.Value.AddDays(policyTag.TimeSpanForRetention.TotalDays).ToFileTimeUtc();
            }
            catch (ArgumentOutOfRangeException)
            {
                fileTime = 0L;
            }
            item[InternalSchema.RetentionPeriod] = (int)policyTag.TimeSpanForRetention.TotalDays;
            DateTime dateTime = DateTime.FromFileTimeUtc(fileTime);

            item[InternalSchema.RetentionDate] = dateTime;
            if (item.GetValueOrDefault <object>(StoreObjectSchema.ExplicitPolicyTag) != null)
            {
                item.DeleteProperties(new PropertyDefinition[]
                {
                    StoreObjectSchema.ExplicitPolicyTag
                });
            }
        }
 public static void ClearPolicyTagForDeleteOnItem(StoreObject item)
 {
     if (item.GetValueOrDefault <object>(StoreObjectSchema.PolicyTag) != null)
     {
         item.DeleteProperties(new PropertyDefinition[]
         {
             StoreObjectSchema.PolicyTag
         });
     }
     if (item.GetValueOrDefault <object>(StoreObjectSchema.RetentionPeriod) != null)
     {
         item.DeleteProperties(new PropertyDefinition[]
         {
             StoreObjectSchema.RetentionPeriod
         });
     }
     if (item.GetValueOrDefault <object>(InternalSchema.RetentionDate) != null)
     {
         item.DeleteProperties(new PropertyDefinition[]
         {
             InternalSchema.RetentionDate
         });
     }
 }