This commit is contained in:
2020-01-22 14:51:13 +00:00
parent ad7baf7b66
commit d0f0e3f015
4 changed files with 69 additions and 69 deletions

View File

@@ -63,13 +63,13 @@ namespace AyaNova.DataList
sb.Append(" ");
//handle null values separately
if (!TagFilter && sValue == DataFilterSpecialToken.Null)
if (!TagFilter && sValue == DataListFilterSpecialToken.Null)
{
switch (DataType)
{
case AyaUiFieldDataType.Text:
{
if (sOperator == DataFilterComparisonOperator.Equality)
if (sOperator == DataListFilterComparisonOperator.Equality)
{
sb.Append("Is Null");
@@ -83,7 +83,7 @@ namespace AyaNova.DataList
break;
default:
{
if (sOperator == DataFilterComparisonOperator.Equality)
if (sOperator == DataListFilterComparisonOperator.Equality)
sb.Append("Is Null");
else
sb.Append("Is Not Null");
@@ -106,25 +106,25 @@ namespace AyaNova.DataList
{
switch (sOperator)
{
case DataFilterComparisonOperator.Equality:
case DataListFilterComparisonOperator.Equality:
//no change on equals for nulls
break;
case DataFilterComparisonOperator.GreaterThan:
case DataListFilterComparisonOperator.GreaterThan:
//no change on greater than for nulls
//(nulls are going to be assumed to be always at the
//less than end of the scale)
break;
case DataFilterComparisonOperator.GreaterThanOrEqualTo:
case DataListFilterComparisonOperator.GreaterThanOrEqualTo:
//no change on greater than for nulls
//(nulls are going to be assumed to be always at the
//less than end of the scale)
break;
case DataFilterComparisonOperator.LessThan:
case DataListFilterComparisonOperator.LessThan:
sb.Append("Is Null OR ");
sb.Append(sColumn);
sb.Append(" ");
break;
case DataFilterComparisonOperator.LessThanOrEqualTo:
case DataListFilterComparisonOperator.LessThanOrEqualTo:
sb.Append("Is Null OR ");
sb.Append(sColumn);
sb.Append(" ");
@@ -132,7 +132,7 @@ namespace AyaNova.DataList
// case "Like":
// //No change on like
// break;
case DataFilterComparisonOperator.NotEqual:
case DataListFilterComparisonOperator.NotEqual:
//This is the big one:
sb.Append("Is Null OR ");
sb.Append(sColumn);
@@ -158,62 +158,62 @@ namespace AyaNova.DataList
#region Build TEXT OPS criteria
switch (sOperator)
{
case DataFilterComparisonOperator.Equality:
case DataListFilterComparisonOperator.Equality:
sb.Append("='");
sb.Append(sValue);
sb.Append("'");
break;
case DataFilterComparisonOperator.GreaterThan:
case DataListFilterComparisonOperator.GreaterThan:
sb.Append(">'");
sb.Append(sValue);
sb.Append("'");
break;
case DataFilterComparisonOperator.GreaterThanOrEqualTo:
case DataListFilterComparisonOperator.GreaterThanOrEqualTo:
sb.Append(">='");
sb.Append(sValue);
sb.Append("'");
break;
case DataFilterComparisonOperator.LessThan:
case DataListFilterComparisonOperator.LessThan:
sb.Append("<'");
sb.Append(sValue);
sb.Append("'");
break;
case DataFilterComparisonOperator.LessThanOrEqualTo:
case DataListFilterComparisonOperator.LessThanOrEqualTo:
sb.Append("<='");
sb.Append(sValue);
sb.Append("'");
break;
case DataFilterComparisonOperator.NotEqual:
case DataListFilterComparisonOperator.NotEqual:
sb.Append("<>'");
sb.Append(sValue);
sb.Append("'");
break;
//Following 7 operators added 14-June-2006
case DataFilterComparisonOperator.NotContains:
case DataListFilterComparisonOperator.NotContains:
sb.Append("Not Like '%");
sb.Append(sValue);
sb.Append("%'");
break;
case DataFilterComparisonOperator.Contains:
case DataListFilterComparisonOperator.Contains:
sb.Append("Like '%");
sb.Append(sValue);
sb.Append("%'");
break;
case DataFilterComparisonOperator.StartsWith:
case DataListFilterComparisonOperator.StartsWith:
sb.Append("Like '");
sb.Append(sValue);
sb.Append("%'");
break;
case DataFilterComparisonOperator.EndsWith:
case DataListFilterComparisonOperator.EndsWith:
sb.Append("Like '%");
sb.Append(sValue);
sb.Append("'");
@@ -247,7 +247,7 @@ namespace AyaNova.DataList
{
switch (sOperator)
{
case DataFilterComparisonOperator.Equality:
case DataListFilterComparisonOperator.Equality:
sb.Append("= ");
if (sValue.ToLowerInvariant() == "true")
sb.Append("true");
@@ -255,7 +255,7 @@ namespace AyaNova.DataList
sb.Append("false");
break;
case DataFilterComparisonOperator.NotEqual:
case DataListFilterComparisonOperator.NotEqual:
sb.Append("<> ");
if (sValue.ToLowerInvariant() == "true")
sb.Append("true");
@@ -322,7 +322,7 @@ namespace AyaNova.DataList
switch (sValue)
{
//Case 402
case DataFilterSpecialToken.Yesterday:
case DataListFilterSpecialToken.Yesterday:
//Between Day before yesterday at midnight and yesterday at midnight
dtAfter = RelativeToday.AddDays(-1);
dtAfter = dtAfter.AddSeconds(-1);
@@ -330,13 +330,13 @@ namespace AyaNova.DataList
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.Today:
case DataListFilterSpecialToken.Today:
//Between yesterday at midnight and tommorow at midnight
dtAfter = RelativeToday.AddSeconds(-1);
dtBefore = RelativeToday.AddDays(1);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.Tomorrow:
case DataListFilterSpecialToken.Tomorrow:
//Between Tonight at midnight and day after tommorow at midnight
dtAfter = RelativeToday.AddDays(1);
dtAfter = dtAfter.AddSeconds(-1);
@@ -345,7 +345,7 @@ namespace AyaNova.DataList
break;
//Case 402
case DataFilterSpecialToken.LastWeek:
case DataListFilterSpecialToken.LastWeek:
//Between two Sundays ago at midnight and last sunday at midnight
dtAfter = RelativeToday;
@@ -365,7 +365,7 @@ namespace AyaNova.DataList
break;
case DataFilterSpecialToken.ThisWeek:
case DataListFilterSpecialToken.ThisWeek:
//Between Sunday at midnight and Next sunday at midnight
dtAfter = RelativeToday;
//go backwards to monday
@@ -392,7 +392,7 @@ namespace AyaNova.DataList
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.NextWeek:
case DataListFilterSpecialToken.NextWeek:
//Between Next Sunday at midnight and Next Next sunday at midnight
dtAfter = RelativeToday;
@@ -415,7 +415,7 @@ namespace AyaNova.DataList
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.LastMonth:
case DataListFilterSpecialToken.LastMonth:
//start with the first day of this month
dtAfter = new DateTime(RelativeToday.Year, RelativeToday.Month, 1, RelativeToday.Hour, RelativeToday.Minute, 00);
//subtract a Month
@@ -431,7 +431,7 @@ namespace AyaNova.DataList
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.ThisMonth:
case DataListFilterSpecialToken.ThisMonth:
//start with the first day of this month
dtAfter = new DateTime(RelativeToday.Year, RelativeToday.Month, 1, RelativeToday.Hour, RelativeToday.Minute, 00);
@@ -444,7 +444,7 @@ namespace AyaNova.DataList
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.NextMonth:
case DataListFilterSpecialToken.NextMonth:
//BUGBUG?
//SERVER thinks midnight UTC is 7am our time on January 1st 2020
//TEST thinks midnight UTC is 8am our time on January 1st 2020
@@ -462,7 +462,7 @@ namespace AyaNova.DataList
// log.LogInformation($"NEXT MONTH TOKEN BUILDER IMMEDIATELY BEFORE BUILDING FRAGMENT: BEFORE={dtBefore.ToString()} AND AFTER={dtAfter.ToString()}");
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.FourteenDayWindow:
case DataListFilterSpecialToken.FourteenDayWindow:
//start with today zero hour
dtAfter = new DateTime(RelativeToday.Year, RelativeToday.Month, RelativeToday.Day, RelativeToday.Hour, RelativeToday.Minute, 00);
dtAfter = dtAfter.AddDays(-7);
@@ -479,21 +479,21 @@ namespace AyaNova.DataList
//case 2067 ADDITIONAL DATE RANGES ************
case DataFilterSpecialToken.Past:
case DataListFilterSpecialToken.Past:
//Forever up to Now
dtAfter = new DateTime(1753, 1, 2, 00, 00, 00);
dtBefore = DateTime.UtcNow;
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.Future:
case DataListFilterSpecialToken.Future:
//From Now to forever (999 years from now)
dtAfter = DateTime.UtcNow;
dtBefore = DateTime.UtcNow.AddYears(999);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.LastYear:
case DataListFilterSpecialToken.LastYear:
//From zero hour january 1 a year ago
dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 1, 1, 0, 0, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
//To zero hour January 1 this year
@@ -501,7 +501,7 @@ namespace AyaNova.DataList
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.ThisYear:
case DataListFilterSpecialToken.ThisYear:
//From zero hour january 1 this year
dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
//To zero hour Jan 1 next year
@@ -509,7 +509,7 @@ namespace AyaNova.DataList
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.InTheLast3Months:
case DataListFilterSpecialToken.InTheLast3Months:
//From Now minus 3 months
dtAfter = DateTime.UtcNow.AddMonths(-3);
//To Now
@@ -517,7 +517,7 @@ namespace AyaNova.DataList
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.InTheLast6Months:
case DataListFilterSpecialToken.InTheLast6Months:
//From Now minus 6 months
dtAfter = DateTime.UtcNow.AddMonths(-6);
//To Now
@@ -525,7 +525,7 @@ namespace AyaNova.DataList
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.InTheLastYear:
case DataListFilterSpecialToken.InTheLastYear:
//From Now minus 365 days
dtAfter = DateTime.UtcNow.AddDays(-365);
//To Now
@@ -537,7 +537,7 @@ namespace AyaNova.DataList
//NEW ONES FOR RAVEN
case DataFilterSpecialToken.YearToDate:
case DataListFilterSpecialToken.YearToDate:
//From zero hour january 1 this year
dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ;
//To now
@@ -545,21 +545,21 @@ namespace AyaNova.DataList
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.Past90Days:
case DataListFilterSpecialToken.Past90Days:
//From Now minus 90 days
dtAfter = DateTime.UtcNow.AddDays(-90);
//To Now
dtBefore = DateTime.UtcNow;
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.Past30Days:
case DataListFilterSpecialToken.Past30Days:
//From Now minus 30 days
dtAfter = DateTime.UtcNow.AddDays(-30);
//To Now
dtBefore = DateTime.UtcNow;
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.Past24Hours:
case DataListFilterSpecialToken.Past24Hours:
//From Now minus 24 hours
dtAfter = DateTime.UtcNow.AddHours(-24);
//To Now
@@ -567,7 +567,7 @@ namespace AyaNova.DataList
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.January:
case DataListFilterSpecialToken.January:
//From zero hour january 1 this year
dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
//To zero hour feb 1 this year
@@ -575,67 +575,67 @@ namespace AyaNova.DataList
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.February:
case DataListFilterSpecialToken.February:
dtAfter = new DateTime(RelativeNow.Year, 2, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
dtBefore = new DateTime(RelativeNow.Year, 3, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.March:
case DataListFilterSpecialToken.March:
dtAfter = new DateTime(RelativeNow.Year, 3, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
dtBefore = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.April:
case DataListFilterSpecialToken.April:
dtAfter = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
dtBefore = new DateTime(RelativeNow.Year, 5, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.May:
case DataListFilterSpecialToken.May:
dtAfter = new DateTime(RelativeNow.Year, 5, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
dtBefore = new DateTime(RelativeNow.Year, 6, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.June:
case DataListFilterSpecialToken.June:
dtAfter = new DateTime(RelativeNow.Year, 6, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
dtBefore = new DateTime(RelativeNow.Year, 7, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.July:
case DataListFilterSpecialToken.July:
dtAfter = new DateTime(RelativeNow.Year, 7, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
dtBefore = new DateTime(RelativeNow.Year, 8, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.August:
case DataListFilterSpecialToken.August:
dtAfter = new DateTime(RelativeNow.Year, 8, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
dtBefore = new DateTime(RelativeNow.Year, 9, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.September:
case DataListFilterSpecialToken.September:
dtAfter = new DateTime(RelativeNow.Year, 9, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
dtBefore = new DateTime(RelativeNow.Year, 10, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.October:
case DataListFilterSpecialToken.October:
dtAfter = new DateTime(RelativeNow.Year, 10, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
dtBefore = new DateTime(RelativeNow.Year, 11, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.November:
case DataListFilterSpecialToken.November:
dtAfter = new DateTime(RelativeNow.Year, 11, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
dtBefore = new DateTime(RelativeNow.Year, 12, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case DataFilterSpecialToken.December:
case DataListFilterSpecialToken.December:
//From zero hour dec 1 this year
dtAfter = new DateTime(RelativeNow.Year, 12, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
//To zero hour Jan 1 next year
@@ -664,7 +664,7 @@ namespace AyaNova.DataList
switch (sOperator)
{
case DataFilterComparisonOperator.Equality:
case DataListFilterComparisonOperator.Equality:
sb.Append(">='");
sb.Append(sLowEnd);
sb.Append("' AND ");
@@ -675,29 +675,29 @@ namespace AyaNova.DataList
sb.Append("'");
break;
case DataFilterComparisonOperator.GreaterThan:
case DataListFilterComparisonOperator.GreaterThan:
sb.Append(">'");
sb.Append(sLowEnd);
sb.Append("'");
break;
case DataFilterComparisonOperator.GreaterThanOrEqualTo:
case DataListFilterComparisonOperator.GreaterThanOrEqualTo:
sb.Append(">='");
sb.Append(sLowEnd);
sb.Append("'");
break;
case DataFilterComparisonOperator.LessThan:
case DataListFilterComparisonOperator.LessThan:
sb.Append("<'");
sb.Append(sHighEnd);
sb.Append("'");
break;
case DataFilterComparisonOperator.LessThanOrEqualTo:
case DataListFilterComparisonOperator.LessThanOrEqualTo:
sb.Append("<='");
sb.Append(sHighEnd);
sb.Append("'");
break;
case DataFilterComparisonOperator.NotEqual:
case DataListFilterComparisonOperator.NotEqual:
sb.Append("<'");
sb.Append(sLowEnd);
sb.Append("' OR ");
@@ -750,27 +750,27 @@ namespace AyaNova.DataList
switch (sOperator)
{
case DataFilterComparisonOperator.Equality:
case DataListFilterComparisonOperator.Equality:
sb.Append("=");
sb.Append(sValue);
break;
case DataFilterComparisonOperator.GreaterThan:
case DataListFilterComparisonOperator.GreaterThan:
sb.Append(">");
sb.Append(sValue);
break;
case DataFilterComparisonOperator.GreaterThanOrEqualTo:
case DataListFilterComparisonOperator.GreaterThanOrEqualTo:
sb.Append(">=");
sb.Append(sValue);
break;
case DataFilterComparisonOperator.LessThan:
case DataListFilterComparisonOperator.LessThan:
sb.Append("<");
sb.Append(sValue);
break;
case DataFilterComparisonOperator.LessThanOrEqualTo:
case DataListFilterComparisonOperator.LessThanOrEqualTo:
sb.Append("<=");
sb.Append(sValue);
break;
case DataFilterComparisonOperator.NotEqual:
case DataListFilterComparisonOperator.NotEqual:
sb.Append("<>");
sb.Append(sValue);
break;

View File

@@ -305,7 +305,7 @@ namespace AyaNova.Biz
else
{
var opType = filterItem["op"].Value<string>();
if (!DataFilterComparisonOperator.Operators.Contains(opType))
if (!DataListFilterComparisonOperator.Operators.Contains(opType))
AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "Filter", $"Filter array item {i}, \"op\" property value of \"{opType}\" is not a valid FilterComparisonOperator type");
}

View File

@@ -1,7 +1,7 @@
using System.Collections.Generic;
namespace AyaNova.Biz
{
public static class DataFilterComparisonOperator
public static class DataListFilterComparisonOperator
{
//NOTE: no LIKE or NOT LIKE deliberately
//StartsWith and EndsWith and Contains and NotContains cover all the most common cases and avoid needing a special set of LIKE characters people have to type and we have to document

View File

@@ -3,7 +3,7 @@ using System;
namespace AyaNova.Biz
{
public static class DataFilterSpecialToken
public static class DataListFilterSpecialToken
{
public const string Null = "{[null]}";
public const string Yesterday = "{[yesterday]}";