This commit is contained in:
2020-01-15 23:26:04 +00:00
parent ea98af4e82
commit 76791a5f1a
4 changed files with 69 additions and 69 deletions

View File

@@ -302,7 +302,7 @@ namespace AyaNova.Biz
else else
{ {
var opType = filterItem["op"].Value<string>(); var opType = filterItem["op"].Value<string>();
if (!FilterComparisonOperator.Operators.Contains(opType)) if (!DataFilterComparisonOperator.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 FilterComparisonOperator public static class DataFilterComparisonOperator
{ {
//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 FilterSpecialToken public static class DataFilterSpecialToken
{ {
public const string Null = "{[null]}"; public const string Null = "{[null]}";
public const string Yesterday = "{[yesterday]}"; public const string Yesterday = "{[yesterday]}";

View File

@@ -63,13 +63,13 @@ namespace AyaNova.Biz
sb.Append(" "); sb.Append(" ");
//handle null values separately //handle null values separately
if (!TagFilter && sValue == FilterSpecialToken.Null) if (!TagFilter && sValue == DataFilterSpecialToken.Null)
{ {
switch (DataType) switch (DataType)
{ {
case AyaDataType.Text: case AyaDataType.Text:
{ {
if (sOperator == FilterComparisonOperator.Equality) if (sOperator == DataFilterComparisonOperator.Equality)
{ {
sb.Append("Is Null"); sb.Append("Is Null");
@@ -83,7 +83,7 @@ namespace AyaNova.Biz
break; break;
default: default:
{ {
if (sOperator == FilterComparisonOperator.Equality) if (sOperator == DataFilterComparisonOperator.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.Biz
{ {
switch (sOperator) switch (sOperator)
{ {
case FilterComparisonOperator.Equality: case DataFilterComparisonOperator.Equality:
//no change on equals for nulls //no change on equals for nulls
break; break;
case FilterComparisonOperator.GreaterThan: case DataFilterComparisonOperator.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 FilterComparisonOperator.GreaterThanOrEqualTo: case DataFilterComparisonOperator.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 FilterComparisonOperator.LessThan: case DataFilterComparisonOperator.LessThan:
sb.Append("Is Null OR "); sb.Append("Is Null OR ");
sb.Append(sColumn); sb.Append(sColumn);
sb.Append(" "); sb.Append(" ");
break; break;
case FilterComparisonOperator.LessThanOrEqualTo: case DataFilterComparisonOperator.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.Biz
// case "Like": // case "Like":
// //No change on like // //No change on like
// break; // break;
case FilterComparisonOperator.NotEqual: case DataFilterComparisonOperator.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.Biz
#region Build TEXT OPS criteria #region Build TEXT OPS criteria
switch (sOperator) switch (sOperator)
{ {
case FilterComparisonOperator.Equality: case DataFilterComparisonOperator.Equality:
sb.Append("='"); sb.Append("='");
sb.Append(sValue); sb.Append(sValue);
sb.Append("'"); sb.Append("'");
break; break;
case FilterComparisonOperator.GreaterThan: case DataFilterComparisonOperator.GreaterThan:
sb.Append(">'"); sb.Append(">'");
sb.Append(sValue); sb.Append(sValue);
sb.Append("'"); sb.Append("'");
break; break;
case FilterComparisonOperator.GreaterThanOrEqualTo: case DataFilterComparisonOperator.GreaterThanOrEqualTo:
sb.Append(">='"); sb.Append(">='");
sb.Append(sValue); sb.Append(sValue);
sb.Append("'"); sb.Append("'");
break; break;
case FilterComparisonOperator.LessThan: case DataFilterComparisonOperator.LessThan:
sb.Append("<'"); sb.Append("<'");
sb.Append(sValue); sb.Append(sValue);
sb.Append("'"); sb.Append("'");
break; break;
case FilterComparisonOperator.LessThanOrEqualTo: case DataFilterComparisonOperator.LessThanOrEqualTo:
sb.Append("<='"); sb.Append("<='");
sb.Append(sValue); sb.Append(sValue);
sb.Append("'"); sb.Append("'");
break; break;
case FilterComparisonOperator.NotEqual: case DataFilterComparisonOperator.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 FilterComparisonOperator.NotContains: case DataFilterComparisonOperator.NotContains:
sb.Append("Not Like '%"); sb.Append("Not Like '%");
sb.Append(sValue); sb.Append(sValue);
sb.Append("%'"); sb.Append("%'");
break; break;
case FilterComparisonOperator.Contains: case DataFilterComparisonOperator.Contains:
sb.Append("Like '%"); sb.Append("Like '%");
sb.Append(sValue); sb.Append(sValue);
sb.Append("%'"); sb.Append("%'");
break; break;
case FilterComparisonOperator.StartsWith: case DataFilterComparisonOperator.StartsWith:
sb.Append("Like '"); sb.Append("Like '");
sb.Append(sValue); sb.Append(sValue);
sb.Append("%'"); sb.Append("%'");
break; break;
case FilterComparisonOperator.EndsWith: case DataFilterComparisonOperator.EndsWith:
sb.Append("Like '%"); sb.Append("Like '%");
sb.Append(sValue); sb.Append(sValue);
sb.Append("'"); sb.Append("'");
@@ -247,7 +247,7 @@ namespace AyaNova.Biz
{ {
switch (sOperator) switch (sOperator)
{ {
case FilterComparisonOperator.Equality: case DataFilterComparisonOperator.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.Biz
sb.Append("false"); sb.Append("false");
break; break;
case FilterComparisonOperator.NotEqual: case DataFilterComparisonOperator.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.Biz
switch (sValue) switch (sValue)
{ {
//Case 402 //Case 402
case FilterSpecialToken.Yesterday: case DataFilterSpecialToken.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.Biz
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break; break;
case FilterSpecialToken.Today: case DataFilterSpecialToken.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 FilterSpecialToken.Tomorrow: case DataFilterSpecialToken.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.Biz
break; break;
//Case 402 //Case 402
case FilterSpecialToken.LastWeek: case DataFilterSpecialToken.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.Biz
break; break;
case FilterSpecialToken.ThisWeek: case DataFilterSpecialToken.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.Biz
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break; break;
case FilterSpecialToken.NextWeek: case DataFilterSpecialToken.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.Biz
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break; break;
case FilterSpecialToken.LastMonth: case DataFilterSpecialToken.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.Biz
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break; break;
case FilterSpecialToken.ThisMonth: case DataFilterSpecialToken.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.Biz
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break; break;
case FilterSpecialToken.NextMonth: case DataFilterSpecialToken.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.Biz
// 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 FilterSpecialToken.FourteenDayWindow: case DataFilterSpecialToken.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.Biz
//case 2067 ADDITIONAL DATE RANGES ************ //case 2067 ADDITIONAL DATE RANGES ************
case FilterSpecialToken.Past: case DataFilterSpecialToken.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 FilterSpecialToken.Future: case DataFilterSpecialToken.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 FilterSpecialToken.LastYear: case DataFilterSpecialToken.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.Biz
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break; break;
case FilterSpecialToken.ThisYear: case DataFilterSpecialToken.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.Biz
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break; break;
case FilterSpecialToken.InTheLast3Months: case DataFilterSpecialToken.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.Biz
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break; break;
case FilterSpecialToken.InTheLast6Months: case DataFilterSpecialToken.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.Biz
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break; break;
case FilterSpecialToken.InTheLastYear: case DataFilterSpecialToken.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.Biz
//NEW ONES FOR RAVEN //NEW ONES FOR RAVEN
case FilterSpecialToken.YearToDate: case DataFilterSpecialToken.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.Biz
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break; break;
case FilterSpecialToken.Past90Days: case DataFilterSpecialToken.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 FilterSpecialToken.Past30Days: case DataFilterSpecialToken.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 FilterSpecialToken.Past24Hours: case DataFilterSpecialToken.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.Biz
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break; break;
case FilterSpecialToken.January: case DataFilterSpecialToken.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.Biz
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break; break;
case FilterSpecialToken.February: case DataFilterSpecialToken.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 FilterSpecialToken.March: case DataFilterSpecialToken.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 FilterSpecialToken.April: case DataFilterSpecialToken.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 FilterSpecialToken.May: case DataFilterSpecialToken.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 FilterSpecialToken.June: case DataFilterSpecialToken.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 FilterSpecialToken.July: case DataFilterSpecialToken.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 FilterSpecialToken.August: case DataFilterSpecialToken.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 FilterSpecialToken.September: case DataFilterSpecialToken.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 FilterSpecialToken.October: case DataFilterSpecialToken.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 FilterSpecialToken.November: case DataFilterSpecialToken.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 FilterSpecialToken.December: case DataFilterSpecialToken.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.Biz
switch (sOperator) switch (sOperator)
{ {
case FilterComparisonOperator.Equality: case DataFilterComparisonOperator.Equality:
sb.Append(">='"); sb.Append(">='");
sb.Append(sLowEnd); sb.Append(sLowEnd);
sb.Append("' AND "); sb.Append("' AND ");
@@ -675,29 +675,29 @@ namespace AyaNova.Biz
sb.Append("'"); sb.Append("'");
break; break;
case FilterComparisonOperator.GreaterThan: case DataFilterComparisonOperator.GreaterThan:
sb.Append(">'"); sb.Append(">'");
sb.Append(sLowEnd); sb.Append(sLowEnd);
sb.Append("'"); sb.Append("'");
break; break;
case FilterComparisonOperator.GreaterThanOrEqualTo: case DataFilterComparisonOperator.GreaterThanOrEqualTo:
sb.Append(">='"); sb.Append(">='");
sb.Append(sLowEnd); sb.Append(sLowEnd);
sb.Append("'"); sb.Append("'");
break; break;
case FilterComparisonOperator.LessThan: case DataFilterComparisonOperator.LessThan:
sb.Append("<'"); sb.Append("<'");
sb.Append(sHighEnd); sb.Append(sHighEnd);
sb.Append("'"); sb.Append("'");
break; break;
case FilterComparisonOperator.LessThanOrEqualTo: case DataFilterComparisonOperator.LessThanOrEqualTo:
sb.Append("<='"); sb.Append("<='");
sb.Append(sHighEnd); sb.Append(sHighEnd);
sb.Append("'"); sb.Append("'");
break; break;
case FilterComparisonOperator.NotEqual: case DataFilterComparisonOperator.NotEqual:
sb.Append("<'"); sb.Append("<'");
sb.Append(sLowEnd); sb.Append(sLowEnd);
sb.Append("' OR "); sb.Append("' OR ");
@@ -750,27 +750,27 @@ namespace AyaNova.Biz
switch (sOperator) switch (sOperator)
{ {
case FilterComparisonOperator.Equality: case DataFilterComparisonOperator.Equality:
sb.Append("="); sb.Append("=");
sb.Append(sValue); sb.Append(sValue);
break; break;
case FilterComparisonOperator.GreaterThan: case DataFilterComparisonOperator.GreaterThan:
sb.Append(">"); sb.Append(">");
sb.Append(sValue); sb.Append(sValue);
break; break;
case FilterComparisonOperator.GreaterThanOrEqualTo: case DataFilterComparisonOperator.GreaterThanOrEqualTo:
sb.Append(">="); sb.Append(">=");
sb.Append(sValue); sb.Append(sValue);
break; break;
case FilterComparisonOperator.LessThan: case DataFilterComparisonOperator.LessThan:
sb.Append("<"); sb.Append("<");
sb.Append(sValue); sb.Append(sValue);
break; break;
case FilterComparisonOperator.LessThanOrEqualTo: case DataFilterComparisonOperator.LessThanOrEqualTo:
sb.Append("<="); sb.Append("<=");
sb.Append(sValue); sb.Append(sValue);
break; break;
case FilterComparisonOperator.NotEqual: case DataFilterComparisonOperator.NotEqual:
sb.Append("<>"); sb.Append("<>");
sb.Append(sValue); sb.Append(sValue);
break; break;