This commit is contained in:
@@ -5,6 +5,9 @@ eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOiIxNTcxODU5OTU0IiwiZXhwIjoiMTU3MjQ
|
|||||||
|
|
||||||
## IMMEDIATE ITEMS
|
## IMMEDIATE ITEMS
|
||||||
|
|
||||||
|
TODO: DataFilter how to distinguish between filtering on specific ID value or on value column
|
||||||
|
- Might need to add a filter on ID type of thing maybe?
|
||||||
|
- Wait and see...YAGNI scenario maybe
|
||||||
|
|
||||||
INTEGRATION TEST UPDATE Update tests when appropriate (when it's working fully and not mocked)
|
INTEGRATION TEST UPDATE Update tests when appropriate (when it's working fully and not mocked)
|
||||||
UPDATE SPEC DOCS with new format and names etc or at least remove nonsense as necessary
|
UPDATE SPEC DOCS with new format and names etc or at least remove nonsense as necessary
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ namespace AyaNova.DataList
|
|||||||
{
|
{
|
||||||
TheFilter = await ct.DataListFilter.FirstOrDefaultAsync(x => x.Id == listOptions.DataFilterId);
|
TheFilter = await ct.DataListFilter.FirstOrDefaultAsync(x => x.Id == listOptions.DataFilterId);
|
||||||
//WHERE CLAUSE - FILTER
|
//WHERE CLAUSE - FILTER
|
||||||
qWhere = DataListSqlFilterCriteriaBuilder.DataFilterToSQLCriteria(TheFilter, DataList.FieldDefinitions, UserId);
|
qWhere = DataListSqlFilterCriteriaBuilder.DataFilterToSQLCriteria(DataList.FieldDefinitions, TheFilter, DataList.FieldDefinitions, UserId);
|
||||||
//ORDER BY CLAUSE - SORT
|
//ORDER BY CLAUSE - SORT
|
||||||
//BUILD ORDER BY AND APPEND IT
|
//BUILD ORDER BY AND APPEND IT
|
||||||
qOrderBy = DataListSqlFilterOrderByBuilder.DataFilterToSQLOrderBy(TheFilter);
|
qOrderBy = DataListSqlFilterOrderByBuilder.DataFilterToSQLOrderBy(TheFilter);
|
||||||
@@ -129,7 +129,16 @@ namespace AyaNova.DataList
|
|||||||
|
|
||||||
//PROCESS THE DF DEFAULT FIRST COLUMN
|
//PROCESS THE DF DEFAULT FIRST COLUMN
|
||||||
//first column is always the underlying id value of the default record to open for this row in the client ui
|
//first column is always the underlying id value of the default record to open for this row in the client ui
|
||||||
row.Add(new AyaFieldData() { v = dr.GetInt64(0) });
|
if (!dr.IsDBNull(0))
|
||||||
|
{
|
||||||
|
row.Add(new AyaFieldData() { v = dr.GetInt64(0) });
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#if (DEBUG)
|
||||||
|
throw new System.ArgumentNullException($"DEV ERROR in DataListFetcher.cs: fetching df column for {DataListKey} df value is null, expecting long int record value");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
//GetOrdinal by name is flakey in npgsql so just going by field definition and ordinal numerically
|
//GetOrdinal by name is flakey in npgsql so just going by field definition and ordinal numerically
|
||||||
int nCurrentColumnPointer = 1;//start at 1
|
int nCurrentColumnPointer = 1;//start at 1
|
||||||
@@ -146,7 +155,9 @@ namespace AyaNova.DataList
|
|||||||
|
|
||||||
if (f.SqlIdColumnName != null)//skip over df column id, it's not there
|
if (f.SqlIdColumnName != null)//skip over df column id, it's not there
|
||||||
{
|
{
|
||||||
AyaField.i = dr.GetInt64(nCurrentColumnPointer);
|
if (!dr.IsDBNull(nCurrentColumnPointer))
|
||||||
|
AyaField.i = dr.GetInt64(nCurrentColumnPointer);
|
||||||
|
|
||||||
nCurrentColumnPointer++;
|
nCurrentColumnPointer++;
|
||||||
}
|
}
|
||||||
row.Add(AyaField);
|
row.Add(AyaField);
|
||||||
|
|||||||
@@ -11,8 +11,9 @@ namespace AyaNova.DataList
|
|||||||
{
|
{
|
||||||
public static class DataListSqlFilterCriteriaBuilder
|
public static class DataListSqlFilterCriteriaBuilder
|
||||||
{
|
{
|
||||||
public static string DataFilterToSQLCriteria(AyaNova.Models.DataListFilter dataFilter, List<AyaDataListFieldDefinition> objectFields, long userId)
|
public static string DataFilterToSQLCriteria(List<AyaDataListFieldDefinition> objectFieldsList, AyaNova.Models.DataListFilter dataFilter, List<AyaDataListFieldDefinition> objectFields, long userId)
|
||||||
{
|
{
|
||||||
|
//BUGBUG: is using field property name not sql value column or whatever it's supposed to be
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(dataFilter.Filter))
|
if (string.IsNullOrWhiteSpace(dataFilter.Filter))
|
||||||
{
|
{
|
||||||
@@ -40,7 +41,18 @@ namespace AyaNova.DataList
|
|||||||
|
|
||||||
var dataType = objectFields.Find(x => x.FieldKey.ToLowerInvariant() == fld).UiFieldDataType;
|
var dataType = objectFields.Find(x => x.FieldKey.ToLowerInvariant() == fld).UiFieldDataType;
|
||||||
sb.Append("(");
|
sb.Append("(");
|
||||||
sb.Append(DataFilterToColumnCriteria(fld, (AyaUiFieldDataType)dataType, opType, val, tagList, userId));
|
|
||||||
|
//Get the correct sql column name
|
||||||
|
AyaDataListFieldDefinition DataListField = objectFieldsList.FirstOrDefault(x => x.FieldKey == fld);
|
||||||
|
#if (DEBUG)
|
||||||
|
//Developers little helper
|
||||||
|
if (DataListField == null)
|
||||||
|
{
|
||||||
|
throw new System.ArgumentNullException($"DEV ERROR in DataListSqlFilterCriteriaBuilder.cs: field {fld} specified in template was NOT found in ObjectFields list");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
var SQLValueColumnName=DataListField.GetSqlValueColumnName();
|
||||||
|
sb.Append(DataFilterToColumnCriteria(SQLValueColumnName, (AyaUiFieldDataType)dataType, opType, val, tagList, userId));
|
||||||
if (i < FilterArray.Count - 1)
|
if (i < FilterArray.Count - 1)
|
||||||
{
|
{
|
||||||
sb.Append(") AND ");
|
sb.Append(") AND ");
|
||||||
@@ -53,13 +65,13 @@ namespace AyaNova.DataList
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Translate DataFilter to Postgres friendly SQL criteria
|
/// Translate DataFilter to Postgres friendly SQL criteria
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private static string DataFilterToColumnCriteria(string sColumn, AyaUiFieldDataType DataType, string sOperator, string sValue, List<string> sTags, long userId)//, bool IsCompound)
|
private static string DataFilterToColumnCriteria(string SqlColumnNameToFilter, AyaUiFieldDataType DataType, string sOperator, string sValue, List<string> sTags, long userId)//, bool IsCompound)
|
||||||
{
|
{
|
||||||
bool TagFilter = sTags.Count < 0;
|
bool TagFilter = sTags.Count < 0;
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
//Column name
|
//Column name
|
||||||
//sb.Append(" ");
|
//sb.Append(" ");
|
||||||
sb.Append(sColumn);
|
sb.Append(SqlColumnNameToFilter);
|
||||||
sb.Append(" ");
|
sb.Append(" ");
|
||||||
|
|
||||||
//handle null values separately
|
//handle null values separately
|
||||||
@@ -74,7 +86,7 @@ namespace AyaNova.DataList
|
|||||||
|
|
||||||
sb.Append("Is Null");
|
sb.Append("Is Null");
|
||||||
sb.Append(" OR ");
|
sb.Append(" OR ");
|
||||||
sb.Append(sColumn);
|
sb.Append(SqlColumnNameToFilter);
|
||||||
sb.Append(" = ''");
|
sb.Append(" = ''");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -121,12 +133,12 @@ namespace AyaNova.DataList
|
|||||||
break;
|
break;
|
||||||
case DataListFilterComparisonOperator.LessThan:
|
case DataListFilterComparisonOperator.LessThan:
|
||||||
sb.Append("Is Null OR ");
|
sb.Append("Is Null OR ");
|
||||||
sb.Append(sColumn);
|
sb.Append(SqlColumnNameToFilter);
|
||||||
sb.Append(" ");
|
sb.Append(" ");
|
||||||
break;
|
break;
|
||||||
case DataListFilterComparisonOperator.LessThanOrEqualTo:
|
case DataListFilterComparisonOperator.LessThanOrEqualTo:
|
||||||
sb.Append("Is Null OR ");
|
sb.Append("Is Null OR ");
|
||||||
sb.Append(sColumn);
|
sb.Append(SqlColumnNameToFilter);
|
||||||
sb.Append(" ");
|
sb.Append(" ");
|
||||||
break;
|
break;
|
||||||
// case "Like":
|
// case "Like":
|
||||||
@@ -135,7 +147,7 @@ namespace AyaNova.DataList
|
|||||||
case DataListFilterComparisonOperator.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(SqlColumnNameToFilter);
|
||||||
sb.Append(" ");
|
sb.Append(" ");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -327,21 +339,21 @@ namespace AyaNova.DataList
|
|||||||
dtAfter = RelativeToday.AddDays(-1);
|
dtAfter = RelativeToday.AddDays(-1);
|
||||||
dtAfter = dtAfter.AddSeconds(-1);
|
dtAfter = dtAfter.AddSeconds(-1);
|
||||||
dtBefore = RelativeToday;//.AddDays(-1);
|
dtBefore = RelativeToday;//.AddDays(-1);
|
||||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.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(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
case DataListFilterSpecialToken.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);
|
||||||
dtBefore = RelativeToday.AddDays(2);
|
dtBefore = RelativeToday.AddDays(2);
|
||||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//Case 402
|
//Case 402
|
||||||
@@ -361,7 +373,7 @@ namespace AyaNova.DataList
|
|||||||
|
|
||||||
dtAfter = dtAfter.AddSeconds(-1);
|
dtAfter = dtAfter.AddSeconds(-1);
|
||||||
|
|
||||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
@@ -390,7 +402,7 @@ namespace AyaNova.DataList
|
|||||||
dtBefore = dtBefore.AddDays(1);
|
dtBefore = dtBefore.AddDays(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
case DataListFilterSpecialToken.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
|
||||||
@@ -413,7 +425,7 @@ namespace AyaNova.DataList
|
|||||||
//case 1155
|
//case 1155
|
||||||
dtAfter = dtAfter.AddSeconds(-1);
|
dtAfter = dtAfter.AddSeconds(-1);
|
||||||
|
|
||||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
case DataListFilterSpecialToken.LastMonth:
|
case DataListFilterSpecialToken.LastMonth:
|
||||||
//start with the first day of this month
|
//start with the first day of this month
|
||||||
@@ -429,7 +441,7 @@ namespace AyaNova.DataList
|
|||||||
|
|
||||||
// 'yyyy-mm-ddTHH:MM:SS'
|
// 'yyyy-mm-ddTHH:MM:SS'
|
||||||
|
|
||||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
case DataListFilterSpecialToken.ThisMonth:
|
case DataListFilterSpecialToken.ThisMonth:
|
||||||
//start with the first day of this month
|
//start with the first day of this month
|
||||||
@@ -441,7 +453,7 @@ namespace AyaNova.DataList
|
|||||||
//case 1155
|
//case 1155
|
||||||
dtAfter = dtAfter.AddSeconds(-1);
|
dtAfter = dtAfter.AddSeconds(-1);
|
||||||
|
|
||||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.NextMonth:
|
case DataListFilterSpecialToken.NextMonth:
|
||||||
@@ -460,7 +472,7 @@ namespace AyaNova.DataList
|
|||||||
dtAfter = dtAfter.AddSeconds(-1);
|
dtAfter = dtAfter.AddSeconds(-1);
|
||||||
//TODO: REMOVE THIS TESTING
|
//TODO: REMOVE THIS TESTING
|
||||||
// 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(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
case DataListFilterSpecialToken.FourteenDayWindow:
|
case DataListFilterSpecialToken.FourteenDayWindow:
|
||||||
//start with today zero hour
|
//start with today zero hour
|
||||||
@@ -473,7 +485,7 @@ namespace AyaNova.DataList
|
|||||||
//case 1155
|
//case 1155
|
||||||
dtAfter = dtAfter.AddSeconds(-1);
|
dtAfter = dtAfter.AddSeconds(-1);
|
||||||
|
|
||||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
@@ -483,14 +495,14 @@ namespace AyaNova.DataList
|
|||||||
//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(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.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(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.LastYear:
|
case DataListFilterSpecialToken.LastYear:
|
||||||
@@ -498,7 +510,7 @@ namespace AyaNova.DataList
|
|||||||
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
|
||||||
dtBefore = new DateTime(RelativeNow.Year, 1, 1, 0, 0, 00).AddHours(TimeZoneAdjustment);
|
dtBefore = new DateTime(RelativeNow.Year, 1, 1, 0, 0, 00).AddHours(TimeZoneAdjustment);
|
||||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.ThisYear:
|
case DataListFilterSpecialToken.ThisYear:
|
||||||
@@ -506,7 +518,7 @@ namespace AyaNova.DataList
|
|||||||
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
|
||||||
dtBefore = new DateTime(RelativeNow.AddYears(1).Year, 1, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
|
dtBefore = new DateTime(RelativeNow.AddYears(1).Year, 1, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
|
||||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.InTheLast3Months:
|
case DataListFilterSpecialToken.InTheLast3Months:
|
||||||
@@ -514,7 +526,7 @@ namespace AyaNova.DataList
|
|||||||
dtAfter = DateTime.UtcNow.AddMonths(-3);
|
dtAfter = DateTime.UtcNow.AddMonths(-3);
|
||||||
//To Now
|
//To Now
|
||||||
dtBefore = DateTime.UtcNow;
|
dtBefore = DateTime.UtcNow;
|
||||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.InTheLast6Months:
|
case DataListFilterSpecialToken.InTheLast6Months:
|
||||||
@@ -522,7 +534,7 @@ namespace AyaNova.DataList
|
|||||||
dtAfter = DateTime.UtcNow.AddMonths(-6);
|
dtAfter = DateTime.UtcNow.AddMonths(-6);
|
||||||
//To Now
|
//To Now
|
||||||
dtBefore = DateTime.UtcNow;
|
dtBefore = DateTime.UtcNow;
|
||||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.InTheLastYear:
|
case DataListFilterSpecialToken.InTheLastYear:
|
||||||
@@ -530,7 +542,7 @@ namespace AyaNova.DataList
|
|||||||
dtAfter = DateTime.UtcNow.AddDays(-365);
|
dtAfter = DateTime.UtcNow.AddDays(-365);
|
||||||
//To Now
|
//To Now
|
||||||
dtBefore = DateTime.UtcNow;
|
dtBefore = DateTime.UtcNow;
|
||||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//=======================
|
//=======================
|
||||||
@@ -542,7 +554,7 @@ namespace AyaNova.DataList
|
|||||||
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
|
||||||
dtBefore = RelativeNow;
|
dtBefore = RelativeNow;
|
||||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.Past90Days:
|
case DataListFilterSpecialToken.Past90Days:
|
||||||
@@ -550,21 +562,21 @@ namespace AyaNova.DataList
|
|||||||
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(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
case DataListFilterSpecialToken.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(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
case DataListFilterSpecialToken.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
|
||||||
dtBefore = DateTime.UtcNow;
|
dtBefore = DateTime.UtcNow;
|
||||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.January:
|
case DataListFilterSpecialToken.January:
|
||||||
@@ -572,67 +584,67 @@ namespace AyaNova.DataList
|
|||||||
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
|
||||||
dtBefore = new DateTime(RelativeNow.Year, 2, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
|
dtBefore = new DateTime(RelativeNow.Year, 2, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
|
||||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.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(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.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(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.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(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.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(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.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(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.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(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.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(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.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(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.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(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.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(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DataListFilterSpecialToken.December:
|
case DataListFilterSpecialToken.December:
|
||||||
@@ -640,7 +652,7 @@ namespace AyaNova.DataList
|
|||||||
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
|
||||||
dtBefore = new DateTime(RelativeNow.AddYears(1).Year, 1, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
|
dtBefore = new DateTime(RelativeNow.AddYears(1).Year, 1, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
|
||||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -668,7 +680,7 @@ namespace AyaNova.DataList
|
|||||||
sb.Append(">='");
|
sb.Append(">='");
|
||||||
sb.Append(sLowEnd);
|
sb.Append(sLowEnd);
|
||||||
sb.Append("' AND ");
|
sb.Append("' AND ");
|
||||||
sb.Append(sColumn);
|
sb.Append(SqlColumnNameToFilter);
|
||||||
sb.Append(" ");
|
sb.Append(" ");
|
||||||
sb.Append("<='");
|
sb.Append("<='");
|
||||||
sb.Append(sHighEnd);
|
sb.Append(sHighEnd);
|
||||||
@@ -701,7 +713,7 @@ namespace AyaNova.DataList
|
|||||||
sb.Append("<'");
|
sb.Append("<'");
|
||||||
sb.Append(sLowEnd);
|
sb.Append(sLowEnd);
|
||||||
sb.Append("' OR ");
|
sb.Append("' OR ");
|
||||||
sb.Append(sColumn);
|
sb.Append(SqlColumnNameToFilter);
|
||||||
sb.Append(" ");
|
sb.Append(" ");
|
||||||
sb.Append(">'");
|
sb.Append(">'");
|
||||||
sb.Append(sHighEnd);
|
sb.Append(sHighEnd);
|
||||||
|
|||||||
Reference in New Issue
Block a user