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

View File

@@ -305,7 +305,7 @@ namespace AyaNova.Biz
else else
{ {
var opType = filterItem["op"].Value<string>(); 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"); 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; using System.Collections.Generic;
namespace AyaNova.Biz namespace AyaNova.Biz
{ {
public static class DataFilterComparisonOperator public static class DataListFilterComparisonOperator
{ {
//NOTE: no LIKE or NOT LIKE deliberately //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 //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 namespace AyaNova.Biz
{ {
public static class DataFilterSpecialToken public static class DataListFilterSpecialToken
{ {
public const string Null = "{[null]}"; public const string Null = "{[null]}";
public const string Yesterday = "{[yesterday]}"; public const string Yesterday = "{[yesterday]}";