Skip to content

Commit

Permalink
+ Updated the testing of workflow action filters to correctly compare…
Browse files Browse the repository at this point in the history
… numerical values (Fixes #1205)
  • Loading branch information
azturner committed Aug 27, 2015
1 parent 540f3cb commit 1f876ef
Showing 1 changed file with 43 additions and 15 deletions.
58 changes: 43 additions & 15 deletions Rock/Utility/ExtensionMethods/ReportingExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,56 +43,84 @@ public static bool CompareTo( this string value, string compareValue, Comparison
return !value.Contains( compareValue );
}

if ( compareType == ComparisonType.StartsWith )
{
return value.StartsWith( compareValue, StringComparison.OrdinalIgnoreCase );
}

if ( compareType == ComparisonType.EndsWith )
{
return value.EndsWith( compareValue, StringComparison.OrdinalIgnoreCase );
}

if ( compareType == ComparisonType.EqualTo )
if ( compareType == ComparisonType.IsBlank )
{
return value.Equals( compareValue, StringComparison.OrdinalIgnoreCase );
return string.IsNullOrWhiteSpace( value );
}

if ( compareType == ComparisonType.GreaterThan )
if ( compareType == ComparisonType.IsNotBlank )
{
return value.CompareTo( compareValue ) > 0;
return !string.IsNullOrWhiteSpace( value );
}

if ( compareType == ComparisonType.GreaterThanOrEqualTo )
// Following compares could be numeric
decimal? decimalValue = value.AsDecimalOrNull();
decimal? decimalCompareValue = compareValue.AsDecimalOrNull();

if ( compareType == ComparisonType.EqualTo )
{
return value.CompareTo( compareValue ) >= 0;
if ( decimalValue.HasValue && decimalCompareValue.HasValue )
{
return decimalValue.Value == decimalCompareValue.Value;
}
return value.Equals( compareValue, StringComparison.OrdinalIgnoreCase );
}

if ( compareType == ComparisonType.IsBlank )
if ( compareType == ComparisonType.GreaterThan )
{
return string.IsNullOrWhiteSpace( value );
if ( decimalValue.HasValue && decimalCompareValue.HasValue )
{
return decimalValue.Value > decimalCompareValue.Value;
}
return value.CompareTo( compareValue ) > 0;
}

if ( compareType == ComparisonType.IsNotBlank )
if ( compareType == ComparisonType.GreaterThanOrEqualTo )
{
return !string.IsNullOrWhiteSpace( value );
if ( decimalValue.HasValue && decimalCompareValue.HasValue )
{
return decimalValue.Value >= decimalCompareValue.Value;
}
return value.CompareTo( compareValue ) >= 0;
}

if ( compareType == ComparisonType.LessThan )
{
if ( decimalValue.HasValue && decimalCompareValue.HasValue )
{
return decimalValue.Value < decimalCompareValue.Value;
}
return value.CompareTo( compareValue ) < 0;
}

if ( compareType == ComparisonType.LessThanOrEqualTo )
{
if ( decimalValue.HasValue && decimalCompareValue.HasValue )
{
return decimalValue.Value >= decimalCompareValue.Value;
}
return value.CompareTo( compareValue ) <= 0;
}

if ( compareType == ComparisonType.NotEqualTo )
{
if ( decimalValue.HasValue && decimalCompareValue.HasValue )
{
return decimalValue.Value != decimalCompareValue.Value;
}
return !value.Equals( compareValue, StringComparison.OrdinalIgnoreCase );
}

if ( compareType == ComparisonType.StartsWith )
{
return value.StartsWith( compareValue, StringComparison.OrdinalIgnoreCase );
}

return false;
}
}
Expand Down

0 comments on commit 1f876ef

Please sign in to comment.