This commit is contained in:
@@ -281,9 +281,10 @@ namespace AyaNova.Biz
|
||||
|
||||
//So this is the core date time to work off of
|
||||
DateTime RelativeToday = DateTime.Today;
|
||||
ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger("FilterSqlCriteriaBuilder::DataFilterToColumnCriteria");
|
||||
log.LogInformation("RelativeToday (before adjustment):");
|
||||
log.LogInformation(RelativeToday.ToString());
|
||||
DateTime RelativeNow = DateTime.Now;
|
||||
// ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger("FilterSqlCriteriaBuilder::DataFilterToColumnCriteria");
|
||||
// log.LogInformation("RelativeToday (before adjustment):");
|
||||
// log.LogInformation(RelativeToday.ToString());
|
||||
|
||||
|
||||
if (sValue.StartsWith("{[") && sValue.EndsWith("]}"))
|
||||
@@ -293,14 +294,15 @@ namespace AyaNova.Biz
|
||||
AyaNova.Models.AyContext ct = AyaNova.Util.ServiceProviderProvider.DBContext;
|
||||
var u = ct.User.AsNoTracking().Where(a => a.Id == userId).Select(m => new { tz = m.UserOptions.TimeZoneOffset }).First();
|
||||
RelativeToday = RelativeToday.AddHours(((double)u.tz)*-1);//flip the sign to adjust towards UTC
|
||||
RelativeNow = RelativeNow.AddHours(((double)u.tz)*-1);//flip the sign to adjust towards UTC
|
||||
|
||||
//TESTING:
|
||||
//LOG THE CRIT AND QUERY
|
||||
// ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger("FilterSqlCriteriaBuilder::DataFilterToColumnCriteria");
|
||||
log.LogInformation("RelativeToday (adjusted):");
|
||||
log.LogInformation(RelativeToday.ToString());
|
||||
log.LogInformation("Offset used:");
|
||||
log.LogInformation(u.tz.ToString());
|
||||
// //TESTING:
|
||||
// //LOG THE CRIT AND QUERY
|
||||
// // ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger("FilterSqlCriteriaBuilder::DataFilterToColumnCriteria");
|
||||
// log.LogInformation("RelativeToday (adjusted):");
|
||||
// log.LogInformation(RelativeToday.ToString());
|
||||
// log.LogInformation("Offset used:");
|
||||
// log.LogInformation(u.tz.ToString());
|
||||
|
||||
#region Build criteria for date RANGE TOKEN specified
|
||||
//Used as the basis point
|
||||
@@ -404,7 +406,7 @@ namespace AyaNova.Biz
|
||||
break;
|
||||
case FilterSpecialToken.LastMonth:
|
||||
//start with the first day of this month
|
||||
dtAfter = new DateTime(RelativeToday.Year, RelativeToday.Month, 1, 00, 00, 00);
|
||||
dtAfter = new DateTime(RelativeToday.Year, RelativeToday.Month, 1, RelativeToday.Hour, RelativeToday.Minute, 00);
|
||||
//subtract a Month
|
||||
dtAfter = dtAfter.AddMonths(-1);
|
||||
|
||||
@@ -420,7 +422,7 @@ namespace AyaNova.Biz
|
||||
break;
|
||||
case FilterSpecialToken.ThisMonth:
|
||||
//start with the first day of this month
|
||||
dtAfter = new DateTime(RelativeToday.Year, RelativeToday.Month, 1, 00, 00, 00);
|
||||
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);
|
||||
@@ -443,13 +445,12 @@ namespace AyaNova.Biz
|
||||
//case 1155
|
||||
dtAfter = dtAfter.AddSeconds(-1);
|
||||
//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);
|
||||
break;
|
||||
case FilterSpecialToken.FourteenDayWindow:
|
||||
//start with today zero hour
|
||||
dtAfter = new DateTime(RelativeToday.Year, RelativeToday.Month, RelativeToday.Day, 00, 00, 00);
|
||||
dtAfter = new DateTime(RelativeToday.Year, RelativeToday.Month, RelativeToday.Day, RelativeToday.Hour, RelativeToday.Minute, 00);
|
||||
dtAfter = dtAfter.AddDays(-7);
|
||||
|
||||
//Add 15 days to get end date (zero hour so not really 15 full days)
|
||||
@@ -467,54 +468,54 @@ namespace AyaNova.Biz
|
||||
case FilterSpecialToken.Past:
|
||||
//Forever up to Now
|
||||
dtAfter = new DateTime(1753, 1, 2, 00, 00, 00);
|
||||
dtBefore = System.DateTime.Now;
|
||||
dtBefore = RelativeNow;
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
|
||||
case FilterSpecialToken.Future:
|
||||
//From Now to forever (999 years from now)
|
||||
dtAfter = System.DateTime.Now;
|
||||
dtBefore = System.DateTime.Now.AddYears(999);
|
||||
dtAfter = RelativeNow;
|
||||
dtBefore = RelativeNow.AddYears(999);
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
|
||||
case FilterSpecialToken.LastYear:
|
||||
case FilterSpecialToken.LastYear://NOTRIGHT
|
||||
//From zero hour january 1 a year ago
|
||||
dtAfter = new DateTime(DateTime.Now.AddYears(-1).Year, 1, 1, 00, 00, 00);
|
||||
dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 1, 1, RelativeToday.Hour, RelativeToday.Minute, 00);
|
||||
//To zero hour January 1 this year
|
||||
dtBefore = new DateTime(DateTime.Now.Year, 1, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(RelativeNow.Year, 1, 1, RelativeToday.Hour, RelativeToday.Minute, 00);
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
|
||||
case FilterSpecialToken.ThisYear:
|
||||
//From zero hour january 1 this year
|
||||
dtAfter = new DateTime(DateTime.Now.Year, 1, 1, 00, 00, 00);
|
||||
dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00);
|
||||
//To zero hour Jan 1 next year
|
||||
dtBefore = new DateTime(DateTime.Now.AddYears(1).Year, 1, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(RelativeNow.AddYears(1).Year, 1, 1, 00, 00, 00);
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
|
||||
case FilterSpecialToken.InTheLast3Months:
|
||||
//From Now minus 3 months
|
||||
dtAfter = DateTime.Now.AddMonths(-3);
|
||||
dtAfter = RelativeNow.AddMonths(-3);
|
||||
//To Now
|
||||
dtBefore = DateTime.Now;
|
||||
dtBefore = RelativeNow;
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
|
||||
case FilterSpecialToken.InTheLast6Months:
|
||||
//From Now minus 6 months
|
||||
dtAfter = DateTime.Now.AddMonths(-6);
|
||||
dtAfter = RelativeNow.AddMonths(-6);
|
||||
//To Now
|
||||
dtBefore = DateTime.Now;
|
||||
dtBefore = RelativeNow;
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
|
||||
case FilterSpecialToken.InTheLastYear:
|
||||
//From Now minus 365 days
|
||||
dtAfter = DateTime.Now.AddDays(-365);
|
||||
dtAfter = RelativeNow.AddDays(-365);
|
||||
//To Now
|
||||
dtBefore = DateTime.Now;
|
||||
dtBefore = RelativeNow;
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
|
||||
@@ -523,7 +524,7 @@ namespace AyaNova.Biz
|
||||
|
||||
case FilterSpecialToken.LastQuarter:
|
||||
//First determine what quarter we are in now, then get the date range for the quarter before that
|
||||
switch (DateTime.Now.Month)
|
||||
switch (RelativeNow.Month)
|
||||
{
|
||||
//are we in the first quarter?
|
||||
case 1:
|
||||
@@ -531,9 +532,9 @@ namespace AyaNova.Biz
|
||||
case 3:
|
||||
//Then we need the dates of the last quarter of last year
|
||||
//From zero hour October 1st last year
|
||||
dtAfter = new DateTime(DateTime.Now.AddYears(-1).Year, 10, 1, 00, 00, 00);
|
||||
dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 10, 1, 00, 00, 00);
|
||||
//To zero hour January 1 this year
|
||||
dtBefore = new DateTime(DateTime.Now.Year, 1, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00);
|
||||
break;
|
||||
//are we in the second quarter?
|
||||
case 4:
|
||||
@@ -541,9 +542,9 @@ namespace AyaNova.Biz
|
||||
case 6:
|
||||
//Then we need this year first quarter JAN-FEB-MAR
|
||||
//From zero hour january 1 this year
|
||||
dtAfter = new DateTime(DateTime.Now.Year, 1, 1, 00, 00, 00);
|
||||
dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00);
|
||||
//To zero hour April 1 this year
|
||||
dtBefore = new DateTime(DateTime.Now.Year, 4, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00);
|
||||
break;
|
||||
//Are we in the third quarter?
|
||||
case 7:
|
||||
@@ -551,17 +552,17 @@ namespace AyaNova.Biz
|
||||
case 9:
|
||||
//Then we need this year Second quarter APR-MAY-JUN
|
||||
//From zero hour April 1 this year
|
||||
dtAfter = new DateTime(DateTime.Now.Year, 4, 1, 00, 00, 00);
|
||||
dtAfter = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00);
|
||||
//To zero hour July 1 this year
|
||||
dtBefore = new DateTime(DateTime.Now.Year, 7, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(RelativeNow.Year, 7, 1, 00, 00, 00);
|
||||
break;
|
||||
default:
|
||||
//We're in the fourth quarter
|
||||
//Then we need this year Third quarter JUL-AUG-SEP
|
||||
//From zero hour July 1 this year
|
||||
dtAfter = new DateTime(DateTime.Now.Year, 7, 1, 00, 00, 00);
|
||||
dtAfter = new DateTime(RelativeNow.Year, 7, 1, 00, 00, 00);
|
||||
//To zero hour Oct 1 this year
|
||||
dtBefore = new DateTime(DateTime.Now.Year, 10, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(RelativeNow.Year, 10, 1, 00, 00, 00);
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -569,106 +570,106 @@ namespace AyaNova.Biz
|
||||
break;
|
||||
case FilterSpecialToken.YearToDate:
|
||||
//From zero hour january 1 this year
|
||||
dtAfter = new DateTime(DateTime.Now.Year, 1, 1, 00, 00, 00);
|
||||
dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00);
|
||||
//To now
|
||||
dtBefore = System.DateTime.Now;
|
||||
dtBefore = RelativeNow;
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
case FilterSpecialToken.QuarterToDate:
|
||||
switch (DateTime.Now.Month)
|
||||
switch (RelativeNow.Month)
|
||||
{
|
||||
//FirstQuarter to date
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
//Jan 1st to now
|
||||
dtAfter = new DateTime(DateTime.Now.Year, 1, 1, 00, 00, 00);
|
||||
dtBefore = DateTime.Now;
|
||||
dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00);
|
||||
dtBefore = RelativeNow;
|
||||
break;
|
||||
//Second Quarter to date
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
//April 1st to now
|
||||
dtAfter = new DateTime(DateTime.Now.Year, 4, 1, 00, 00, 00);
|
||||
dtBefore = DateTime.Now;
|
||||
dtAfter = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00);
|
||||
dtBefore = RelativeNow;
|
||||
break;
|
||||
//Third quarter to date
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
//From July 1
|
||||
dtAfter = new DateTime(DateTime.Now.Year, 7, 1, 00, 00, 00);
|
||||
dtBefore = DateTime.Now;
|
||||
dtAfter = new DateTime(RelativeNow.Year, 7, 1, 00, 00, 00);
|
||||
dtBefore = RelativeNow;
|
||||
break;
|
||||
default:
|
||||
//Fourth quarter to date
|
||||
//From Oct 1 this year
|
||||
dtAfter = new DateTime(DateTime.Now.Year, 10, 1, 00, 00, 00);
|
||||
dtBefore = DateTime.Now;
|
||||
dtAfter = new DateTime(RelativeNow.Year, 10, 1, 00, 00, 00);
|
||||
dtBefore = RelativeNow;
|
||||
break;
|
||||
}
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
case FilterSpecialToken.Past90Days:
|
||||
//From Now minus 90 days
|
||||
dtAfter = DateTime.Now.AddDays(-90);
|
||||
dtAfter = RelativeNow.AddDays(-90);
|
||||
//To Now
|
||||
dtBefore = DateTime.Now;
|
||||
dtBefore = RelativeNow;
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
case FilterSpecialToken.Past30Days:
|
||||
//From Now minus 30 days
|
||||
dtAfter = DateTime.Now.AddDays(-30);
|
||||
dtAfter = RelativeNow.AddDays(-30);
|
||||
//To Now
|
||||
dtBefore = DateTime.Now;
|
||||
dtBefore = RelativeNow;
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
case FilterSpecialToken.Past24Hours:
|
||||
//From Now minus 24 hours
|
||||
dtAfter = DateTime.Now.AddHours(-24);
|
||||
dtAfter = RelativeNow.AddHours(-24);
|
||||
//To Now
|
||||
dtBefore = DateTime.Now;
|
||||
dtBefore = RelativeNow;
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
case FilterSpecialToken.Q1ThisYear:
|
||||
dtAfter = new DateTime(DateTime.Now.Year, 1, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(DateTime.Now.Year, 4, 1, 00, 00, 00);
|
||||
dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00);
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
case FilterSpecialToken.Q2ThisYear:
|
||||
dtAfter = new DateTime(DateTime.Now.Year, 4, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(DateTime.Now.Year, 7, 1, 00, 00, 00);
|
||||
dtAfter = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(RelativeNow.Year, 7, 1, 00, 00, 00);
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
case FilterSpecialToken.Q3ThisYear:
|
||||
dtAfter = new DateTime(DateTime.Now.Year, 7, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(DateTime.Now.Year, 10, 1, 00, 00, 00);
|
||||
dtAfter = new DateTime(RelativeNow.Year, 7, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(RelativeNow.Year, 10, 1, 00, 00, 00);
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
case FilterSpecialToken.Q4ThisYear:
|
||||
dtAfter = new DateTime(DateTime.Now.Year, 10, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(DateTime.Now.AddYears(1).Year, 1, 1, 00, 00, 00);
|
||||
dtAfter = new DateTime(RelativeNow.Year, 10, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(RelativeNow.AddYears(1).Year, 1, 1, 00, 00, 00);
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
case FilterSpecialToken.Q1LastYear:
|
||||
dtAfter = new DateTime(DateTime.Now.AddYears(-1).Year, 1, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(DateTime.Now.AddYears(-1).Year, 4, 1, 00, 00, 00);
|
||||
dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 1, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(RelativeNow.AddYears(-1).Year, 4, 1, 00, 00, 00);
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
case FilterSpecialToken.Q2LastYear:
|
||||
dtAfter = new DateTime(DateTime.Now.AddYears(-1).Year, 4, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(DateTime.Now.AddYears(-1).Year, 7, 1, 00, 00, 00);
|
||||
dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 4, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(RelativeNow.AddYears(-1).Year, 7, 1, 00, 00, 00);
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
case FilterSpecialToken.Q3LastYear:
|
||||
dtAfter = new DateTime(DateTime.Now.AddYears(-1).Year, 7, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(DateTime.Now.AddYears(-1).Year, 10, 1, 00, 00, 00);
|
||||
dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 7, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(RelativeNow.AddYears(-1).Year, 10, 1, 00, 00, 00);
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
case FilterSpecialToken.Q4LastYear:
|
||||
dtAfter = new DateTime(DateTime.Now.AddYears(-1).Year, 10, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(DateTime.Now.Year, 1, 1, 00, 00, 00);
|
||||
dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 10, 1, 00, 00, 00);
|
||||
dtBefore = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00);
|
||||
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
|
||||
break;
|
||||
|
||||
|
||||
@@ -188,14 +188,14 @@ namespace AyaNova.Biz
|
||||
//BUILD WHERE AND APPEND IT
|
||||
q = q + FilterSqlCriteriaBuilder.DataFilterToSQLCriteria(TheFilter, WidgetBiz.FilterOptions(), UserId);
|
||||
|
||||
//TESTING:
|
||||
//TODO: remove this from production build
|
||||
//LOG THE CRIT AND QUERY
|
||||
ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger("WidgetBiz::GetManyAsync");
|
||||
log.LogInformation("Filter criteria:");
|
||||
log.LogInformation(TheFilter.Filter);
|
||||
log.LogInformation("Generated SQL:");
|
||||
log.LogInformation(q);
|
||||
// //TESTING:
|
||||
// //TODO: remove this from production build
|
||||
// //LOG THE CRIT AND QUERY
|
||||
// ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger("WidgetBiz::GetManyAsync");
|
||||
// log.LogInformation("Filter criteria:");
|
||||
// log.LogInformation(TheFilter.Filter);
|
||||
// log.LogInformation("Generated SQL:");
|
||||
// log.LogInformation(q);
|
||||
}
|
||||
|
||||
//BUILD ORDER BY AND APPEND IT
|
||||
|
||||
Reference in New Issue
Block a user