This commit is contained in:
2020-02-08 00:16:14 +00:00
parent b6176cbd27
commit f3d2571464
2 changed files with 436 additions and 453 deletions

View File

@@ -54,7 +54,9 @@ TODO: LOCALIZATION
- Then they need to be re-implemented at the client where the client will send the between date/times to the server based on the user's chosen relative token - Then they need to be re-implemented at the client where the client will send the between date/times to the server based on the user's chosen relative token
- This fixes a bad design decision to involve the server in time zone shit when in fact the server should never operate in anything but UTC - This fixes a bad design decision to involve the server in time zone shit when in fact the server should never operate in anything but UTC
- Time zones are a client issue and should never be a server issue - Time zones are a client issue and should never be a server issue
- When the filter code and processor is written it should calc the dates based on token and user's local time , then conver to between filter on the fly
- system is written with static filters saved to server so maybe need to turn it around and instead of providing a filterid, provide the filter json instead?
- Make functional user settings form with all overrides so can test shit out - Make functional user settings form with all overrides so can test shit out

View File

@@ -1,452 +1,433 @@
// //TODO: Replace all this server code with equivalent client code
//TODO: Replace all this server code with equivalent client code
// namespace AyaNova.DataList
// {
// public static class DataListFilterSpecialToken
namespace AyaNova.DataList // {
{ // public const string Null = "{[null]}";
public static class DataListFilterSpecialToken // public const string Yesterday = "{[yesterday]}";
{ // public const string Today = "{[today]}";
public const string Null = "{[null]}"; // public const string Tomorrow = "{[tomorrow]}";
public const string Yesterday = "{[yesterday]}"; // public const string LastWeek = "{[lastweek]}";
public const string Today = "{[today]}"; // public const string ThisWeek = "{[thisweek]}";
public const string Tomorrow = "{[tomorrow]}"; // public const string NextWeek = "{[nextweek]}";
public const string LastWeek = "{[lastweek]}"; // public const string LastMonth = "{[lastmonth]}";
public const string ThisWeek = "{[thisweek]}"; // public const string ThisMonth = "{[thismonth]}";
public const string NextWeek = "{[nextweek]}"; // public const string NextMonth = "{[nextmonth]}";
public const string LastMonth = "{[lastmonth]}"; // public const string FourteenDayWindow = "{[14daywindow]}";
public const string ThisMonth = "{[thismonth]}"; // public const string Past = "{[past]}";
public const string NextMonth = "{[nextmonth]}"; // public const string Future = "{[future]}";
public const string FourteenDayWindow = "{[14daywindow]}"; // public const string LastYear = "{[lastyear]}";
public const string Past = "{[past]}"; // public const string ThisYear = "{[thisyear]}";
public const string Future = "{[future]}"; // public const string InTheLast3Months = "{[last3months]}";
public const string LastYear = "{[lastyear]}"; // public const string InTheLast6Months = "{[last6months]}";
public const string ThisYear = "{[thisyear]}"; // public const string InTheLastYear = "{[lastcalendaryear]}";
public const string InTheLast3Months = "{[last3months]}";
public const string InTheLast6Months = "{[last6months]}"; // //Months THIS year
public const string InTheLastYear = "{[lastcalendaryear]}"; // public const string January = "{[january]}";
// public const string February = "{[february]}";
//Months THIS year // public const string March = "{[march]}";
public const string January = "{[january]}"; // public const string April = "{[april]}";
public const string February = "{[february]}"; // public const string May = "{[may]}";
public const string March = "{[march]}"; // public const string June = "{[june]}";
public const string April = "{[april]}"; // public const string July = "{[july]}";
public const string May = "{[may]}"; // public const string August = "{[august]}";
public const string June = "{[june]}"; // public const string September = "{[september]}";
public const string July = "{[july]}"; // public const string October = "{[october]}";
public const string August = "{[august]}"; // public const string November = "{[november]}";
public const string September = "{[september]}"; // public const string December = "{[december]}";
public const string October = "{[october]}";
public const string November = "{[november]}"; // //These TEXT filter tokens were more for paging purposes than anything else
public const string December = "{[december]}"; // //however paging is done by numeric range now so will not implement for now
// // public const string AH = "{[ah]}";
//These TEXT filter tokens were more for paging purposes than anything else // // public const string IP = "{[ip]}";
//however paging is done by numeric range now so will not implement for now // // public const string QZ = "{[qz]}";
// public const string AH = "{[ah]}"; // // public const string ZeroToThree = "{[03]}";
// public const string IP = "{[ip]}"; // // public const string FourToSix = "{[46]}";
// public const string QZ = "{[qz]}"; // // public const string SevenToNine = "{[79]}";
// public const string ZeroToThree = "{[03]}";
// public const string FourToSix = "{[46]}"; // //Don't think I need these
// public const string SevenToNine = "{[79]}"; // //public const string LessThanZero = "{[<0]}";
// // public const string Zero = "{[0]}";
// //public const string GreaterThanZero = "{[>0]}";
//Don't think I need these
//public const string LessThanZero = "{[<0]}"; // //https://www.klipfolio.com/resources/articles/kpi-timeframe-comparison-metrics
// public const string Zero = "{[0]}";
//public const string GreaterThanZero = "{[>0]}"; // //More business time frames
//https://www.klipfolio.com/resources/articles/kpi-timeframe-comparison-metrics // public const string YearToDate = "{[yeartodate]}";
//More business time frames // public const string Past90Days = "{[past90days]}";
// public const string Past30Days = "{[past30days]}";
public const string YearToDate = "{[yeartodate]}"; // public const string Past24Hours = "{[past24hours]}";
public const string Past90Days = "{[past90days]}"; // }
public const string Past30Days = "{[past30days]}"; // }
public const string Past24Hours = "{[past24hours]}";
// //############################################################### OLD SERVER FILTERING CODE ##########################
// //HOWEVER, if it's a relative date filter TOKEN like "nextMonth" then the users time zone offset will be taken into consideration
// //So this is the core date time to work off of
// DateTime RelativeToday = DateTime.Today;
} // DateTime RelativeNow = DateTime.Now;
} // // ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger("FilterSqlCriteriaBuilder::DataFilterToColumnCriteria");
// // log.LogInformation("RelativeToday (before adjustment):");
// // log.LogInformation(RelativeToday.ToString());
//############################################################### OLD SERVER FILTERING CODE ########################## // // log.LogInformation("RelativeNow (before adjustment):");
// // log.LogInformation(RelativeNow.ToString());
// if (sValue.StartsWith("{[") && sValue.EndsWith("]}"))
//HOWEVER, if it's a relative date filter TOKEN like "nextMonth" then the users time zone offset will be taken into consideration // {
//So this is the core date time to work off of // //Need to adjust RelativeToday to users time frame
DateTime RelativeToday = DateTime.Today; // //Fetch useroptions object and relative time offset
DateTime RelativeNow = DateTime.Now; // //See servers spec doc core-locale-currency-numbers-time-and-dates.txt for details about why this is necessary to be done this way
// ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger("FilterSqlCriteriaBuilder::DataFilterToColumnCriteria"); // AyaNova.Models.AyContext ct = AyaNova.Util.ServiceProviderProvider.DBContext;
// log.LogInformation("RelativeToday (before adjustment):"); // var u = ct.User.AsNoTracking().Where(a => a.Id == userId).Select(m => new { tz = m.UserOptions.TimeZoneOffset }).First();
// log.LogInformation(RelativeToday.ToString());
// log.LogInformation("RelativeNow (before adjustment):"); // //Add this value to any time's hours to convert to user local time
// log.LogInformation(RelativeNow.ToString()); // Double TimeZoneAdjustment = ((double)u.tz) * -1;
// //Stock times used for many of the tokens:
if (sValue.StartsWith("{[") && sValue.EndsWith("]}")) // RelativeToday = RelativeToday.AddHours(TimeZoneAdjustment);//flip the sign to adjust towards UTC
{ // RelativeNow = RelativeNow.AddHours(TimeZoneAdjustment);//flip the sign to adjust towards UTC
// //TESTING:
//Need to adjust RelativeToday to users time frame // //LOG THE CRIT AND QUERY
//Fetch useroptions object and relative time offset // // ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger("FilterSqlCriteriaBuilder::DataFilterToColumnCriteria");
//See servers spec doc core-locale-currency-numbers-time-and-dates.txt for details about why this is necessary to be done this way // // log.LogInformation("RelativeToday (adjusted):");
AyaNova.Models.AyContext ct = AyaNova.Util.ServiceProviderProvider.DBContext; // // log.LogInformation(RelativeToday.ToString());
var u = ct.User.AsNoTracking().Where(a => a.Id == userId).Select(m => new { tz = m.UserOptions.TimeZoneOffset }).First(); // // log.LogInformation("RelativeNow (adjusted):");
// // log.LogInformation(RelativeNow.ToString());
//Add this value to any time's hours to convert to user local time // // log.LogInformation("Offset used:");
Double TimeZoneAdjustment = ((double)u.tz) * -1; // // log.LogInformation(u.tz.ToString());
//Stock times used for many of the tokens: // #region Build criteria for date RANGE TOKEN specified
RelativeToday = RelativeToday.AddHours(TimeZoneAdjustment);//flip the sign to adjust towards UTC // //Used as the basis point
RelativeNow = RelativeNow.AddHours(TimeZoneAdjustment);//flip the sign to adjust towards UTC // System.DateTime dtAfter;
// System.DateTime dtBefore;
//TESTING: // switch (sValue)
//LOG THE CRIT AND QUERY // {
// ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger("FilterSqlCriteriaBuilder::DataFilterToColumnCriteria"); // //Case 402
// log.LogInformation("RelativeToday (adjusted):"); // case DataListFilterSpecialToken.Yesterday:
// log.LogInformation(RelativeToday.ToString()); // //Between Day before yesterday at midnight and yesterday at midnight
// log.LogInformation("RelativeNow (adjusted):"); // dtAfter = RelativeToday.AddDays(-1);
// log.LogInformation(RelativeNow.ToString()); // dtAfter = dtAfter.AddSeconds(-1);
// log.LogInformation("Offset used:"); // dtBefore = RelativeToday;//.AddDays(-1);
// log.LogInformation(u.tz.ToString()); // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
// break;
#region Build criteria for date RANGE TOKEN specified
//Used as the basis point // case DataListFilterSpecialToken.Today:
System.DateTime dtAfter; // //Between yesterday at midnight and tommorow at midnight
System.DateTime dtBefore; // dtAfter = RelativeToday.AddSeconds(-1);
switch (sValue) // dtBefore = RelativeToday.AddDays(1);
{ // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
//Case 402 // break;
case DataListFilterSpecialToken.Yesterday: // case DataListFilterSpecialToken.Tomorrow:
//Between Day before yesterday at midnight and yesterday 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(-1); // dtBefore = RelativeToday.AddDays(2);
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
break; // break;
case DataListFilterSpecialToken.Today: // //Case 402
//Between yesterday at midnight and tommorow at midnight // case DataListFilterSpecialToken.LastWeek:
dtAfter = RelativeToday.AddSeconds(-1); // //Between two Sundays ago at midnight and last sunday at midnight
dtBefore = RelativeToday.AddDays(1); // dtAfter = RelativeToday;
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
break; // //go back a week
case DataListFilterSpecialToken.Tomorrow: // dtAfter = dtAfter.AddDays(-7);
//Between Tonight at midnight and day after tommorow at midnight
dtAfter = RelativeToday.AddDays(1); // //go backwards to Sunday
dtAfter = dtAfter.AddSeconds(-1); // while (dtAfter.DayOfWeek != DayOfWeek.Sunday)
dtBefore = RelativeToday.AddDays(2); // dtAfter = dtAfter.AddDays(-1);
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
break; // //go to very start of eighth dayahead
// dtBefore = dtAfter.AddDays(8);
//Case 402
case DataListFilterSpecialToken.LastWeek: // dtAfter = dtAfter.AddSeconds(-1);
//Between two Sundays ago at midnight and last sunday at midnight
dtAfter = RelativeToday; // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
// break;
//go back a week
dtAfter = dtAfter.AddDays(-7); // case DataListFilterSpecialToken.ThisWeek:
// //Between Sunday at midnight and Next sunday at midnight
//go backwards to Sunday // dtAfter = RelativeToday;
while (dtAfter.DayOfWeek != DayOfWeek.Sunday) // //go backwards to monday
dtAfter = dtAfter.AddDays(-1); // while (dtAfter.DayOfWeek != DayOfWeek.Monday)
// dtAfter = dtAfter.AddDays(-1);
//go to very start of eighth dayahead
dtBefore = dtAfter.AddDays(8); // //Now go back to sunday last second
// dtAfter = dtAfter.AddSeconds(-1);
dtAfter = dtAfter.AddSeconds(-1);
// dtBefore = RelativeToday;
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // //go forwards to monday
break; // if (RelativeToday.DayOfWeek == DayOfWeek.Monday)
// {
// //Monday today? then go to next monday
case DataListFilterSpecialToken.ThisWeek: // dtBefore = dtBefore.AddDays(7);
//Between Sunday at midnight and Next sunday at midnight // }
dtAfter = RelativeToday; // else
//go backwards to monday // {
while (dtAfter.DayOfWeek != DayOfWeek.Monday) // while (dtBefore.DayOfWeek != DayOfWeek.Monday)
dtAfter = dtAfter.AddDays(-1); // dtBefore = dtBefore.AddDays(1);
// }
//Now go back to sunday last second
dtAfter = dtAfter.AddSeconds(-1); // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
// break;
// case DataListFilterSpecialToken.NextWeek:
// //Between Next Sunday at midnight and Next Next sunday at midnight
dtBefore = RelativeToday; // dtAfter = RelativeToday;
//go forwards to monday
if (RelativeToday.DayOfWeek == DayOfWeek.Monday) // //If today is monday skip over it first
{ // if (dtAfter.DayOfWeek == DayOfWeek.Monday)
//Monday today? then go to next monday // dtAfter = dtAfter.AddDays(1);
dtBefore = dtBefore.AddDays(7);
} // //go forwards to next monday
else // while (dtAfter.DayOfWeek != DayOfWeek.Monday)
{ // dtAfter = dtAfter.AddDays(1);
while (dtBefore.DayOfWeek != DayOfWeek.Monday)
dtBefore = dtBefore.AddDays(1); // //Now go back to sunday last second
} // dtAfter = dtAfter.AddDays(-1);
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // //go seven days ahead
break; // dtBefore = dtAfter.AddDays(7);
case DataListFilterSpecialToken.NextWeek:
//Between Next Sunday at midnight and Next Next sunday at midnight // //case 1155
dtAfter = RelativeToday; // dtAfter = dtAfter.AddSeconds(-1);
//If today is monday skip over it first // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
if (dtAfter.DayOfWeek == DayOfWeek.Monday) // break;
dtAfter = dtAfter.AddDays(1); // case DataListFilterSpecialToken.LastMonth:
// //start with the first day of this month
//go forwards to next monday // dtAfter = new DateTime(RelativeToday.Year, RelativeToday.Month, 1, RelativeToday.Hour, RelativeToday.Minute, 00);
while (dtAfter.DayOfWeek != DayOfWeek.Monday) // //subtract a Month
dtAfter = dtAfter.AddDays(1); // dtAfter = dtAfter.AddMonths(-1);
//Now go back to sunday last second // //Add one month to dtAfter to get end date
dtAfter = dtAfter.AddDays(-1); // dtBefore = dtAfter.AddMonths(1);
//go seven days ahead // //case 1155
dtBefore = dtAfter.AddDays(7); // dtAfter = dtAfter.AddSeconds(-1);
//case 1155 // // 'yyyy-mm-ddTHH:MM:SS'
dtAfter = dtAfter.AddSeconds(-1);
// BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // break;
break; // case DataListFilterSpecialToken.ThisMonth:
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 // //Add one month to dtAfter to get end date
dtAfter = dtAfter.AddMonths(-1); // dtBefore = dtAfter.AddMonths(1);
//Add one month to dtAfter to get end date // //case 1155
dtBefore = dtAfter.AddMonths(1); // dtAfter = dtAfter.AddSeconds(-1);
//case 1155 // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
dtAfter = dtAfter.AddSeconds(-1); // break;
// 'yyyy-mm-ddTHH:MM:SS' // case DataListFilterSpecialToken.NextMonth:
// //start with the first day of this month
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // dtAfter = new DateTime(RelativeToday.Year, RelativeToday.Month, 1, RelativeToday.Hour, RelativeToday.Minute, 00);
break; // //Add a Month
case DataListFilterSpecialToken.ThisMonth: // dtAfter = dtAfter.AddMonths(1);
//start with the first day of this month
dtAfter = new DateTime(RelativeToday.Year, RelativeToday.Month, 1, RelativeToday.Hour, RelativeToday.Minute, 00); // //Add one month to dtAfter to get end date
// dtBefore = dtAfter.AddMonths(1);
//Add one month to dtAfter to get end date
dtBefore = dtAfter.AddMonths(1); // //case 1155
// dtAfter = dtAfter.AddSeconds(-1);
//case 1155 // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
dtAfter = dtAfter.AddSeconds(-1); // break;
// case DataListFilterSpecialToken.FourteenDayWindow:
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // //start with today zero hour
break; // dtAfter = new DateTime(RelativeToday.Year, RelativeToday.Month, RelativeToday.Day, RelativeToday.Hour, RelativeToday.Minute, 00);
// dtAfter = dtAfter.AddDays(-7);
case DataListFilterSpecialToken.NextMonth:
//start with the first day of this month // //Add 15 days to get end date (zero hour so not really 15 full days)
dtAfter = new DateTime(RelativeToday.Year, RelativeToday.Month, 1, RelativeToday.Hour, RelativeToday.Minute, 00); // dtBefore = dtAfter.AddDays(15);
//Add a Month
dtAfter = dtAfter.AddMonths(1); // //case 1155
// dtAfter = dtAfter.AddSeconds(-1);
//Add one month to dtAfter to get end date
dtBefore = dtAfter.AddMonths(1); // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
// break;
//case 1155
dtAfter = dtAfter.AddSeconds(-1); // //case 2067 ADDITIONAL DATE RANGES ************
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
break; // case DataListFilterSpecialToken.Past:
case DataListFilterSpecialToken.FourteenDayWindow: // //Forever up to Now
//start with today zero hour // dtAfter = new DateTime(1753, 1, 2, 00, 00, 00);
dtAfter = new DateTime(RelativeToday.Year, RelativeToday.Month, RelativeToday.Day, RelativeToday.Hour, RelativeToday.Minute, 00); // dtBefore = DateTime.UtcNow;
dtAfter = dtAfter.AddDays(-7); // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
// break;
//Add 15 days to get end date (zero hour so not really 15 full days)
dtBefore = dtAfter.AddDays(15); // case DataListFilterSpecialToken.Future:
// //From Now to forever (999 years from now)
//case 1155 // dtAfter = DateTime.UtcNow;
dtAfter = dtAfter.AddSeconds(-1); // dtBefore = DateTime.UtcNow.AddYears(999);
// BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // break;
break;
// case DataListFilterSpecialToken.LastYear:
// //From zero hour january 1 a year ago
//case 2067 ADDITIONAL DATE RANGES ************ // dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 1, 1, 0, 0, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
// //To zero hour January 1 this year
case DataListFilterSpecialToken.Past: // dtBefore = new DateTime(RelativeNow.Year, 1, 1, 0, 0, 00).AddHours(TimeZoneAdjustment);
//Forever up to Now // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
dtAfter = new DateTime(1753, 1, 2, 00, 00, 00); // break;
dtBefore = DateTime.UtcNow;
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // case DataListFilterSpecialToken.ThisYear:
break; // //From zero hour january 1 this year
// dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
case DataListFilterSpecialToken.Future: // //To zero hour Jan 1 next year
//From Now to forever (999 years from now) // dtBefore = new DateTime(RelativeNow.AddYears(1).Year, 1, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
dtAfter = DateTime.UtcNow; // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
dtBefore = DateTime.UtcNow.AddYears(999); // break;
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
break; // case DataListFilterSpecialToken.InTheLast3Months:
// //From Now minus 3 months
case DataListFilterSpecialToken.LastYear: // dtAfter = DateTime.UtcNow.AddMonths(-3);
//From zero hour january 1 a year ago // //To Now
dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 1, 1, 0, 0, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); // dtBefore = DateTime.UtcNow;
//To zero hour January 1 this year // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
dtBefore = new DateTime(RelativeNow.Year, 1, 1, 0, 0, 00).AddHours(TimeZoneAdjustment); // break;
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
break; // case DataListFilterSpecialToken.InTheLast6Months:
// //From Now minus 6 months
case DataListFilterSpecialToken.ThisYear: // dtAfter = DateTime.UtcNow.AddMonths(-6);
//From zero hour january 1 this year // //To Now
dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); // dtBefore = DateTime.UtcNow;
//To zero hour Jan 1 next year // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
dtBefore = new DateTime(RelativeNow.AddYears(1).Year, 1, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); // break;
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
break; // case DataListFilterSpecialToken.InTheLastYear:
// //From Now minus 365 days
case DataListFilterSpecialToken.InTheLast3Months: // dtAfter = DateTime.UtcNow.AddDays(-365);
//From Now minus 3 months // //To Now
dtAfter = DateTime.UtcNow.AddMonths(-3); // dtBefore = DateTime.UtcNow;
//To Now // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
dtBefore = DateTime.UtcNow; // break;
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
break; // //=======================
// //NEW ONES FOR RAVEN
case DataListFilterSpecialToken.InTheLast6Months:
//From Now minus 6 months // case DataListFilterSpecialToken.YearToDate:
dtAfter = DateTime.UtcNow.AddMonths(-6); // //From zero hour january 1 this year
//To Now // dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ;
dtBefore = DateTime.UtcNow; // //To now
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // dtBefore = RelativeNow;
break; // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
// break;
case DataListFilterSpecialToken.InTheLastYear:
//From Now minus 365 days // case DataListFilterSpecialToken.Past90Days:
dtAfter = DateTime.UtcNow.AddDays(-365); // //From Now minus 90 days
//To Now // dtAfter = DateTime.UtcNow.AddDays(-90);
dtBefore = DateTime.UtcNow; // //To Now
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // dtBefore = DateTime.UtcNow;
break; // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
// break;
//======================= // case DataListFilterSpecialToken.Past30Days:
//NEW ONES FOR RAVEN // //From Now minus 30 days
// dtAfter = DateTime.UtcNow.AddDays(-30);
// //To Now
case DataListFilterSpecialToken.YearToDate: // dtBefore = DateTime.UtcNow;
//From zero hour january 1 this year // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ; // break;
//To now // case DataListFilterSpecialToken.Past24Hours:
dtBefore = RelativeNow; // //From Now minus 24 hours
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // dtAfter = DateTime.UtcNow.AddHours(-24);
break; // //To Now
// dtBefore = DateTime.UtcNow;
case DataListFilterSpecialToken.Past90Days: // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
//From Now minus 90 days // break;
dtAfter = DateTime.UtcNow.AddDays(-90);
//To Now // case DataListFilterSpecialToken.January:
dtBefore = DateTime.UtcNow; // //From zero hour january 1 this year
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
break; // //To zero hour feb 1 this year
case DataListFilterSpecialToken.Past30Days: // dtBefore = new DateTime(RelativeNow.Year, 2, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
//From Now minus 30 days // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
dtAfter = DateTime.UtcNow.AddDays(-30); // break;
//To Now
dtBefore = DateTime.UtcNow; // case DataListFilterSpecialToken.February:
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // dtAfter = new DateTime(RelativeNow.Year, 2, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
break; // dtBefore = new DateTime(RelativeNow.Year, 3, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
case DataListFilterSpecialToken.Past24Hours: // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
//From Now minus 24 hours // break;
dtAfter = DateTime.UtcNow.AddHours(-24);
//To Now // case DataListFilterSpecialToken.March:
dtBefore = DateTime.UtcNow; // dtAfter = new DateTime(RelativeNow.Year, 3, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // dtBefore = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
break; // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
// break;
case DataListFilterSpecialToken.January:
//From zero hour january 1 this year // case DataListFilterSpecialToken.April:
dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); // dtAfter = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
//To zero hour feb 1 this year // dtBefore = new DateTime(RelativeNow.Year, 5, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
dtBefore = new DateTime(RelativeNow.Year, 2, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // break;
break;
// case DataListFilterSpecialToken.May:
case DataListFilterSpecialToken.February: // dtAfter = new DateTime(RelativeNow.Year, 5, 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, 6, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
dtBefore = new DateTime(RelativeNow.Year, 3, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // break;
break;
// case DataListFilterSpecialToken.June:
case DataListFilterSpecialToken.March: // dtAfter = new DateTime(RelativeNow.Year, 6, 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, 7, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
dtBefore = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // break;
break;
// case DataListFilterSpecialToken.July:
case DataListFilterSpecialToken.April: // dtAfter = new DateTime(RelativeNow.Year, 7, 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, 8, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
dtBefore = new DateTime(RelativeNow.Year, 5, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // break;
break;
// case DataListFilterSpecialToken.August:
case DataListFilterSpecialToken.May: // dtAfter = new DateTime(RelativeNow.Year, 8, 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, 9, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
dtBefore = new DateTime(RelativeNow.Year, 6, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // break;
break;
// case DataListFilterSpecialToken.September:
case DataListFilterSpecialToken.June: // dtAfter = new DateTime(RelativeNow.Year, 9, 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, 10, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
dtBefore = new DateTime(RelativeNow.Year, 7, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // break;
break;
// case DataListFilterSpecialToken.October:
case DataListFilterSpecialToken.July: // dtAfter = new DateTime(RelativeNow.Year, 10, 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, 11, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
dtBefore = new DateTime(RelativeNow.Year, 8, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // break;
break;
// case DataListFilterSpecialToken.November:
case DataListFilterSpecialToken.August: // dtAfter = new DateTime(RelativeNow.Year, 11, 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, 12, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
dtBefore = new DateTime(RelativeNow.Year, 9, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // break;
break;
// case DataListFilterSpecialToken.December:
case DataListFilterSpecialToken.September: // //From zero hour dec 1 this year
dtAfter = new DateTime(RelativeNow.Year, 9, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); // dtAfter = new DateTime(RelativeNow.Year, 12, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);
dtBefore = new DateTime(RelativeNow.Year, 10, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); // //To zero hour Jan 1 next year
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // dtBefore = new DateTime(RelativeNow.AddYears(1).Year, 1, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
break; // BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
// break;
case DataListFilterSpecialToken.October:
dtAfter = new DateTime(RelativeNow.Year, 10, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); // default:
dtBefore = new DateTime(RelativeNow.Year, 11, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); // throw new System.ArgumentOutOfRangeException("TOKEN", sOperator, "DataListSqlFilterCriteriaBuilder invalid filter TOKEN type [" + sValue + "] IN DATE_TIME");
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
break; // //-----
// }
case DataListFilterSpecialToken.November:
dtAfter = new DateTime(RelativeNow.Year, 11, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); // #endregion
dtBefore = new DateTime(RelativeNow.Year, 12, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); // }
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); // else
break; // {
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
dtBefore = new DateTime(RelativeNow.AddYears(1).Year, 1, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore);
break;
default:
throw new System.ArgumentOutOfRangeException("TOKEN", sOperator, "DataListSqlFilterCriteriaBuilder invalid filter TOKEN type [" + sValue + "] IN DATE_TIME");
//-----
}
#endregion
}
else
{