This commit is contained in:
2018-12-11 00:37:17 +00:00
parent 2926981028
commit d1faf35a66
3 changed files with 57 additions and 53 deletions

View File

@@ -282,9 +282,11 @@ namespace AyaNova.Biz
//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());
ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger("FilterSqlCriteriaBuilder::DataFilterToColumnCriteria");
log.LogInformation("RelativeToday (before adjustment):");
log.LogInformation(RelativeToday.ToString());
log.LogInformation("RelativeNow (before adjustment):");
log.LogInformation(RelativeNow.ToString());
if (sValue.StartsWith("{[") && sValue.EndsWith("]}"))
@@ -295,19 +297,21 @@ namespace AyaNova.Biz
var u = ct.User.AsNoTracking().Where(a => a.Id == userId).Select(m => new { tz = m.UserOptions.TimeZoneOffset }).First();
//Add this value to any time's hours to convert to user local time
Double TimeZoneAdjustment=((double)u.tz)*-1;
Double TimeZoneAdjustment = ((double)u.tz) * -1;
//Stock times used for many of the tokens:
RelativeToday = RelativeToday.AddHours(TimeZoneAdjustment);//flip the sign to adjust towards UTC
RelativeNow = RelativeNow.AddHours(TimeZoneAdjustment);//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("RelativeNow (adjusted):");
log.LogInformation(RelativeNow.ToString());
log.LogInformation("Offset used:");
log.LogInformation(u.tz.ToString());
#region Build criteria for date RANGE TOKEN specified
//Used as the basis point
@@ -450,7 +454,7 @@ 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:
@@ -473,14 +477,14 @@ namespace AyaNova.Biz
case FilterSpecialToken.Past:
//Forever up to Now
dtAfter = new DateTime(1753, 1, 2, 00, 00, 00);
dtBefore = RelativeNow;
dtBefore = DateTime.UtcNow;
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case FilterSpecialToken.Future:
//From Now to forever (999 years from now)
dtAfter = RelativeNow;
dtBefore = RelativeNow.AddYears(999);
dtAfter = DateTime.UtcNow;
dtBefore = DateTime.UtcNow.AddYears(999);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
@@ -490,7 +494,7 @@ namespace AyaNova.Biz
//To zero hour January 1 this year
dtBefore = new DateTime(RelativeNow.Year, 1, 1, 0, 0, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
break;
case FilterSpecialToken.ThisYear:
//From zero hour january 1 this year
@@ -502,9 +506,9 @@ namespace AyaNova.Biz
case FilterSpecialToken.InTheLast3Months:
//From Now minus 3 months
dtAfter = RelativeNow.AddMonths(-3);//relative now is already adjusted for time zone so no need to adjust it again
dtAfter = DateTime.UtcNow.AddMonths(-3);
//To Now
dtBefore = RelativeNow;
dtBefore = DateTime.UtcNow;
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
@@ -537,7 +541,7 @@ 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(RelativeNow.AddYears(-1).Year, 10, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);;
dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 10, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ;
//To zero hour January 1 this year
dtBefore = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
break;
@@ -547,7 +551,7 @@ 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(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 April 1 this year
dtBefore = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
break;
@@ -557,7 +561,7 @@ 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(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); ;
//To zero hour July 1 this year
dtBefore = new DateTime(RelativeNow.Year, 7, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
break;
@@ -565,7 +569,7 @@ namespace AyaNova.Biz
//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(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); ;
//To zero hour Oct 1 this year
dtBefore = new DateTime(RelativeNow.Year, 10, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
break;
@@ -575,7 +579,7 @@ namespace AyaNova.Biz
break;
case FilterSpecialToken.YearToDate:
//From zero hour january 1 this year
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
dtBefore = RelativeNow;
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
@@ -588,7 +592,7 @@ namespace AyaNova.Biz
case 2:
case 3:
//Jan 1st to now
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); ;
dtBefore = RelativeNow;
break;
//Second Quarter to date
@@ -596,7 +600,7 @@ namespace AyaNova.Biz
case 5:
case 6:
//April 1st to now
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 = RelativeNow;
break;
//Third quarter to date
@@ -604,13 +608,13 @@ namespace AyaNova.Biz
case 8:
case 9:
//From July 1
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 = RelativeNow;
break;
default:
//Fourth quarter to date
//From Oct 1 this year
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 = RelativeNow;
break;
}
@@ -638,42 +642,42 @@ namespace AyaNova.Biz
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case FilterSpecialToken.Q1ThisYear:
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); ;
dtBefore = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case FilterSpecialToken.Q2ThisYear:
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, 7, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case FilterSpecialToken.Q3ThisYear:
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, 10, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case FilterSpecialToken.Q4ThisYear:
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.AddYears(1).Year, 1, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case FilterSpecialToken.Q1LastYear:
dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 1, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);;
dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 1, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ;
dtBefore = new DateTime(RelativeNow.AddYears(-1).Year, 4, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case FilterSpecialToken.Q2LastYear:
dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 4, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);;
dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 4, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ;
dtBefore = new DateTime(RelativeNow.AddYears(-1).Year, 7, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case FilterSpecialToken.Q3LastYear:
dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 7, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);;
dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 7, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ;
dtBefore = new DateTime(RelativeNow.AddYears(-1).Year, 10, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
case FilterSpecialToken.Q4LastYear:
dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 10, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);;
dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 10, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); ;
dtBefore = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddHours(TimeZoneAdjustment);
BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore);
break;
@@ -842,18 +846,18 @@ namespace AyaNova.Biz
}
//This is only used by the token date query code above and that code doesn't convert to UTC time to match the DB so this function will handle that
//This is only used by the token date query code above and that code does convert to UTC time to match the DB so this function will not need to handle that
//The other non tokenized date criteria builders are all working with dates that come from the client in UTC already and they don't use this method
//so nothing required there
private static void BuildBetweenTwoDatesFragment(string sColumn, StringBuilder sb, DateTime dtAfter, DateTime dtBefore)
{
sb.Append(">'");
sb.Append(PostgresDateFormat(dtAfter.ToUniversalTime()));
sb.Append(PostgresDateFormat(dtAfter));
sb.Append("' AND ");
sb.Append(sColumn);
sb.Append(" ");
sb.Append("<'");
sb.Append(PostgresDateFormat(dtBefore.ToUniversalTime()));
sb.Append(PostgresDateFormat(dtBefore));
sb.Append("'");
}

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

View File

@@ -1647,9 +1647,9 @@ namespace raven_integration
//Excluded widget
w.name = Util.Uniquify(WidgetNameStart);
//8 days ago will be outside the 14 day window
w.startDate = DateTime.Now.AddDays(-8).ToUniversalTime();
w.endDate = DateTime.Now.AddDays(-8).AddHours(1).ToUniversalTime();
//9 days ago will be outside the 14 day window
w.startDate = DateTime.Now.AddDays(-9).ToUniversalTime();
w.endDate = DateTime.Now.AddDays(-9).AddHours(1).ToUniversalTime();
a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString());
@@ -2154,8 +2154,8 @@ namespace raven_integration
dynamic w = new JObject();
w.name = Util.Uniquify(WidgetNameStart);
//####
w.startDate = DateTime.Now.AddMonths(-3).AddMinutes(5).ToUniversalTime();
w.endDate = DateTime.Now.AddMonths(-3).AddMinutes(5).AddHours(1).ToUniversalTime();
w.startDate = DateTime.UtcNow.AddMonths(-3).AddMinutes(5);
w.endDate = DateTime.UtcNow.AddMonths(-3).AddMinutes(5).AddHours(1);
ApiResponse a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString());
Util.ValidateDataReturnResponseOk(a);
@@ -2164,8 +2164,8 @@ namespace raven_integration
//Excluded widget
w.name = Util.Uniquify(WidgetNameStart);
//####
w.startDate = DateTime.Now.AddMonths(-3).AddMinutes(-5).ToUniversalTime();
w.endDate = DateTime.Now.AddMonths(-3).AddMinutes(-5).AddHours(1).ToUniversalTime();
w.startDate = DateTime.UtcNow.AddMonths(-3).AddMinutes(-5);
w.endDate = DateTime.UtcNow.AddMonths(-3).AddMinutes(-5).AddHours(1);
a = await Util.PostAsync("Widget", await Util.GetTokenAsync("manager", "l3tm3in"), w.ToString());
Util.ValidateDataReturnResponseOk(a);