@@ -12,7 +12,7 @@ public RuleMatcher(ILogger<RuleMatcher> logger)
1212 }
1313 private static bool PassesAgeFilter ( Rule rule , EmailReceivedEventArgs email )
1414 {
15- if ( email . IsRead )
15+ if ( email . IsRead && rule . ExpressionType != ExpressionType . AllEmails )
1616 {
1717 if ( DateTimeOffset . Now . Subtract ( email . ReceivedDate ) . TotalHours > 2 )
1818 return true ;
@@ -28,7 +28,7 @@ private static bool PassesAgeFilter(Rule rule, EmailReceivedEventArgs email)
2828 private static bool PassesStatusFilters ( Rule rule , EmailReceivedEventArgs email )
2929 {
3030 // Check RequireUnread filter - if set to true, email must be unread
31- if ( rule . RequireUnread == true && email . IsRead )
31+ if ( rule . RequireUnread == true && ! email . IsRead )
3232 return false ;
3333
3434 // Check RequireNotImportant filter - if set to true, email must NOT be important
@@ -37,11 +37,47 @@ private static bool PassesStatusFilters(Rule rule, EmailReceivedEventArgs email)
3737
3838 return true ;
3939 }
40+ private bool ProcessMatch ( Rule rule , EmailReceivedEventArgs email , string value , MatchResult matchResult )
41+ {
42+ _logger . LogDebug ( "Match found! Rule: {RuleId}, Value: '{Value}', Location: {Location}" ,
43+ rule . Name , value , matchResult . MatchLocation ) ;
44+
45+ var passesAge = PassesAgeFilter ( rule , email ) ;
46+ _logger . LogDebug ( "Age filter result: {PassesAge} for rule: {RuleId}" , passesAge , rule . Name ) ;
47+
48+ var passesStatus = PassesStatusFilters ( rule , email ) ;
49+ _logger . LogDebug ( "Status filter result: {PassesStatus} for rule: {RuleId} (IsRead: {IsRead}, IsImportant: {IsImportant})" ,
50+ passesStatus , rule . Name , email . IsRead , email . IsImportant ) ;
51+
52+ if ( passesAge && passesStatus )
53+ {
54+ _logger . LogInformation ( "RULE MATCHED! Rule: {RuleId}, Value: '{Value}', Location: {Location}, Subject: '{Subject}'" ,
55+ rule . Name , value , matchResult . MatchLocation , email . Subject ) ;
56+ return true ;
57+ }
58+ else
59+ {
60+ _logger . LogDebug ( "Match found but failed filters (age: {PassesAge}, status: {PassesStatus}). Rule: {RuleId}" ,
61+ passesAge , passesStatus , rule . Name ) ;
62+ return false ;
63+ }
64+ }
4065 // Enhanced version with detailed debug information
4166 public bool CheckRuleMatch ( Rule rule , EmailReceivedEventArgs email )
4267 {
4368 _logger . LogDebug ( "Checking rule: {RuleId} with {ValueCount} values" , rule . Name , rule . Values ? . Count ?? 0 ) ;
44-
69+ if ( rule . ExpressionType == ExpressionType . AllEmails )
70+ {
71+ _logger . LogDebug ( "ExpressionType is AllEmails, automatically passing match for rule: {RuleId}" , rule . Name ) ;
72+ if ( ProcessMatch ( rule , email , "AllEmails" , new MatchResult { IsMatch = true , MatchLocation = "AllEmails" } ) )
73+ {
74+ return true ;
75+ }
76+ else
77+ {
78+ return false ;
79+ }
80+ }
4581 foreach ( var value in rule . Values ! )
4682 {
4783 _logger . LogDebug ( "Testing value: '{Value}' with expression type: {ExpressionType}" , value , rule . ExpressionType ) ;
@@ -55,27 +91,10 @@ public bool CheckRuleMatch(Rule rule, EmailReceivedEventArgs email)
5591
5692 if ( matchResult . IsMatch )
5793 {
58- _logger . LogDebug ( "Match found! Rule: {RuleId}, Value: '{Value}', Location: {Location}" ,
59- rule . Name , value , matchResult . MatchLocation ) ;
60-
61- var passesAge = PassesAgeFilter ( rule , email ) ;
62- _logger . LogDebug ( "Age filter result: {PassesAge} for rule: {RuleId}" , passesAge , rule . Name ) ;
63-
64- var passesStatus = PassesStatusFilters ( rule , email ) ;
65- _logger . LogDebug ( "Status filter result: {PassesStatus} for rule: {RuleId} (IsRead: {IsRead}, IsImportant: {IsImportant})" ,
66- passesStatus , rule . Name , email . IsRead , email . IsImportant ) ;
67-
68- if ( passesAge && passesStatus )
94+ if ( ProcessMatch ( rule , email , value , matchResult ) )
6995 {
70- _logger . LogInformation ( "RULE MATCHED! Rule: {RuleId}, Value: '{Value}', Location: {Location}, Subject: '{Subject}'" ,
71- rule . Name , value , matchResult . MatchLocation , email . Subject ) ;
7296 return true ;
7397 }
74- else
75- {
76- _logger . LogDebug ( "Match found but failed filters (age: {PassesAge}, status: {PassesStatus}). Rule: {RuleId}" ,
77- passesAge , passesStatus , rule . Name ) ;
78- }
7998 }
8099 else
81100 {
0 commit comments