public void Save()
 {
     if (this.isDirty)
     {
         this.neverClutterRule = ClutterOverrideManager.PrepareRule(this.neverClutterRule, this.neverClutterSenders, this.markNeverClutterTag);
         this.neverClutterRule = ClutterOverrideManager.SaveNeverClutterRule(this, this.session, this.neverClutterRule);
         this.isDirty          = false;
     }
 }
 private void Load()
 {
     this.neverClutterRule    = ClutterOverrideManager.LoadNeverClutterRule(this, this.session);
     this.neverClutterSenders = ClutterOverrideManager.LoadNeverClutterList(this.neverClutterRule);
     this.markNeverClutterTag = ClutterOverrideManager.GetNeverClutterTag(this, this.session);
     if (this.neverClutterRule != null && (this.neverClutterRule.StateFlags.HasFlag(RuleStateFlags.Error) || !this.neverClutterRule.StateFlags.HasFlag(RuleStateFlags.Enabled)))
     {
         this.isDirty = true;
         return;
     }
     this.isDirty = false;
 }
 internal static Rule PrepareRule(Rule rule, IEnumerable <SmtpAddress> neverClutterSenders, PropTag neverClutterTag)
 {
     if (rule == null)
     {
         rule = new Rule();
         if (neverClutterSenders.Any <SmtpAddress>())
         {
             rule.Operation = RuleOperation.Create;
         }
         else
         {
             rule.Operation = RuleOperation.NoOp;
         }
     }
     else if (neverClutterSenders.Any <SmtpAddress>())
     {
         rule.Operation = RuleOperation.Update;
     }
     else
     {
         rule.Operation = RuleOperation.Delete;
     }
     rule.ExecutionSequence = 0;
     rule.Level             = 0;
     rule.StateFlags        = RuleStateFlags.Enabled;
     rule.UserFlags         = 0U;
     rule.ExtraProperties   = null;
     rule.IsExtended        = true;
     rule.Name     = "Never Clutter Rule";
     rule.Provider = "NeverClutterOverrideRule";
     Rule.ProviderData providerData;
     providerData.Version       = 1U;
     providerData.RuleSearchKey = 0U;
     providerData.TimeStamp     = ExDateTime.UtcNow.ToFileTimeUtc();
     rule.ProviderData          = providerData.ToByteArray();
     rule.Actions   = ClutterOverrideManager.BuildRuleActions(neverClutterTag);
     rule.Condition = ClutterOverrideManager.BuildRuleCondition(neverClutterSenders);
     return(rule);
 }
 internal static Restriction BuildRuleCondition(IEnumerable <SmtpAddress> neverClutterSenders)
 {
     return(Restriction.Or((from address in neverClutterSenders
                            select ClutterOverrideManager.BuildSenderCondition(address)).ToArray <Restriction>()));
 }