This commit is contained in:
2018-12-10 22:47:34 +00:00
parent c675f97355
commit 2f2c65da96
2 changed files with 80 additions and 79 deletions

View File

@@ -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;

View File

@@ -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