From 2f2c65da961cd9684baea5f5acf5214a58d19d23 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Mon, 10 Dec 2018 22:47:34 +0000 Subject: [PATCH] --- .../AyaNova/biz/FilterSqlCriteriaBuilder.cs | 143 +++++++++--------- server/AyaNova/biz/WidgetBiz.cs | 16 +- 2 files changed, 80 insertions(+), 79 deletions(-) diff --git a/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs b/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs index 806a152b..b9218a06 100644 --- a/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs +++ b/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs @@ -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; diff --git a/server/AyaNova/biz/WidgetBiz.cs b/server/AyaNova/biz/WidgetBiz.cs index 4e5476d5..c7f0e860 100644 --- a/server/AyaNova/biz/WidgetBiz.cs +++ b/server/AyaNova/biz/WidgetBiz.cs @@ -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