diff --git a/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs b/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs index b9218a06..5d73ad9e 100644 --- a/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs +++ b/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs @@ -293,8 +293,13 @@ namespace AyaNova.Biz //Fetch useroptions object and relative time offset 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 + + //Add this value to any time's hours to convert to user local time + 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 @@ -479,25 +484,25 @@ namespace AyaNova.Biz BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); break; - case FilterSpecialToken.LastYear://NOTRIGHT + case FilterSpecialToken.LastYear: //From zero hour january 1 a year ago - dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 1, 1, RelativeToday.Hour, RelativeToday.Minute, 00); + dtAfter = new DateTime(RelativeNow.AddYears(-1).Year, 1, 1, 0, 0, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment); //To zero hour January 1 this year - dtBefore = new DateTime(RelativeNow.Year, 1, 1, RelativeToday.Hour, RelativeToday.Minute, 00); + 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 - dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00); + dtAfter = new DateTime(RelativeNow.Year, 1, 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); + dtBefore = new DateTime(RelativeNow.AddYears(1).Year, 1, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); break; case FilterSpecialToken.InTheLast3Months: //From Now minus 3 months - dtAfter = RelativeNow.AddMonths(-3); + dtAfter = RelativeNow.AddMonths(-3);//relative now is already adjusted for time zone so no need to adjust it again //To Now dtBefore = RelativeNow; BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); @@ -532,9 +537,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(RelativeNow.AddYears(-1).Year, 10, 1, 00, 00, 00); + 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); + dtBefore = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); break; //are we in the second quarter? case 4: @@ -542,9 +547,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(RelativeNow.Year, 1, 1, 00, 00, 00); + 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); + dtBefore = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); break; //Are we in the third quarter? case 7: @@ -552,17 +557,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(RelativeNow.Year, 4, 1, 00, 00, 00); + 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); + dtBefore = new DateTime(RelativeNow.Year, 7, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); 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(RelativeNow.Year, 7, 1, 00, 00, 00); + 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); + dtBefore = new DateTime(RelativeNow.Year, 10, 1, 00, 00, 00).AddHours(TimeZoneAdjustment); break; } @@ -570,7 +575,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); + dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);; //To now dtBefore = RelativeNow; BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); @@ -583,7 +588,7 @@ namespace AyaNova.Biz case 2: case 3: //Jan 1st to now - dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00); + dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);; dtBefore = RelativeNow; break; //Second Quarter to date @@ -591,7 +596,7 @@ namespace AyaNova.Biz case 5: case 6: //April 1st to now - dtAfter = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00); + dtAfter = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);; dtBefore = RelativeNow; break; //Third quarter to date @@ -599,13 +604,13 @@ namespace AyaNova.Biz case 8: case 9: //From July 1 - dtAfter = new DateTime(RelativeNow.Year, 7, 1, 00, 00, 00); + 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); + dtAfter = new DateTime(RelativeNow.Year, 10, 1, 00, 00, 00).AddSeconds(-1).AddHours(TimeZoneAdjustment);; dtBefore = RelativeNow; break; } @@ -633,43 +638,43 @@ namespace AyaNova.Biz BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); break; case FilterSpecialToken.Q1ThisYear: - dtAfter = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00); - dtBefore = new DateTime(RelativeNow.Year, 4, 1, 00, 00, 00); + 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); - dtBefore = new DateTime(RelativeNow.Year, 7, 1, 00, 00, 00); + 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); - dtBefore = new DateTime(RelativeNow.Year, 10, 1, 00, 00, 00); + 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); - dtBefore = new DateTime(RelativeNow.AddYears(1).Year, 1, 1, 00, 00, 00); + 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); - dtBefore = new DateTime(RelativeNow.AddYears(-1).Year, 4, 1, 00, 00, 00); + 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); - dtBefore = new DateTime(RelativeNow.AddYears(-1).Year, 7, 1, 00, 00, 00); + 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); - dtBefore = new DateTime(RelativeNow.AddYears(-1).Year, 10, 1, 00, 00, 00); + 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); - dtBefore = new DateTime(RelativeNow.Year, 1, 1, 00, 00, 00); + 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;