diff --git a/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs b/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs index 0c630f54..e015dcd5 100644 --- a/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs +++ b/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs @@ -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; diff --git a/server/AyaNova/biz/DataListFilterBiz.cs b/server/AyaNova/biz/DataListFilterBiz.cs index e64986fe..83023416 100644 --- a/server/AyaNova/biz/DataListFilterBiz.cs +++ b/server/AyaNova/biz/DataListFilterBiz.cs @@ -305,7 +305,7 @@ namespace AyaNova.Biz else { var opType = filterItem["op"].Value(); - 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"); } diff --git a/server/AyaNova/biz/DataFilterComparisonOperator.cs b/server/AyaNova/biz/DataListFilterComparisonOperator.cs similarity index 96% rename from server/AyaNova/biz/DataFilterComparisonOperator.cs rename to server/AyaNova/biz/DataListFilterComparisonOperator.cs index 08ed575b..4389ea2d 100644 --- a/server/AyaNova/biz/DataFilterComparisonOperator.cs +++ b/server/AyaNova/biz/DataListFilterComparisonOperator.cs @@ -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 diff --git a/server/AyaNova/biz/DataFilterSpecialTokens.cs b/server/AyaNova/biz/DataListFilterSpecialTokens.cs similarity index 98% rename from server/AyaNova/biz/DataFilterSpecialTokens.cs rename to server/AyaNova/biz/DataListFilterSpecialTokens.cs index 6273d54d..765bff2d 100644 --- a/server/AyaNova/biz/DataFilterSpecialTokens.cs +++ b/server/AyaNova/biz/DataListFilterSpecialTokens.cs @@ -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]}";