diff --git a/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs b/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs index d12baa77..178c6529 100644 --- a/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs +++ b/server/AyaNova/biz/FilterSqlCriteriaBuilder.cs @@ -279,16 +279,16 @@ namespace AyaNova.Biz //HOWEVER, if it's a relative date filter TOKEN like "nextMonth" then the users time zone offset will be taken into consideration //So this is the core date time to work off of - DateTime RelativeNow=DateTime.Now; + DateTime RelativeToday = DateTime.Today; if (sValue.StartsWith("{[") && sValue.EndsWith("]}")) { - //Need to adjust RelativeNow to users time frame + //Need to adjust RelativeToday to users time frame //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 { roles = m.Roles, name = m.Name, id = m.Id, localeId = m.LocaleId }).First(); - + 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.AddHours((double)u.tz); #region Build criteria for date RANGE TOKEN specified //Used as the basis point @@ -299,30 +299,30 @@ namespace AyaNova.Biz //Case 402 case FilterSpecialToken.Yesterday: //Between Day before yesterday at midnight and yesterday at midnight - dtAfter = System.DateTime.Today.AddDays(-1); + dtAfter = RelativeToday.AddDays(-1); dtAfter = dtAfter.AddSeconds(-1); - dtBefore = System.DateTime.Today;//.AddDays(-1); + dtBefore = RelativeToday;//.AddDays(-1); BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); break; case FilterSpecialToken.Today: //Between yesterday at midnight and tommorow at midnight - dtAfter = System.DateTime.Today.AddSeconds(-1); - dtBefore = System.DateTime.Today.AddDays(1); + dtAfter = RelativeToday.AddSeconds(-1); + dtBefore = RelativeToday.AddDays(1); BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); break; case FilterSpecialToken.Tomorrow: //Between Tonight at midnight and day after tommorow at midnight - dtAfter = System.DateTime.Today.AddDays(1); + dtAfter = RelativeToday.AddDays(1); dtAfter = dtAfter.AddSeconds(-1); - dtBefore = System.DateTime.Today.AddDays(2); + dtBefore = RelativeToday.AddDays(2); BuildBetweenTwoDatesFragment(sColumn, sb, dtAfter, dtBefore); break; //Case 402 case FilterSpecialToken.LastWeek: //Between two Sundays ago at midnight and last sunday at midnight - dtAfter = System.DateTime.Today; + dtAfter = RelativeToday; //go back a week dtAfter = dtAfter.AddDays(-7); @@ -342,7 +342,7 @@ namespace AyaNova.Biz case FilterSpecialToken.ThisWeek: //Between Sunday at midnight and Next sunday at midnight - dtAfter = System.DateTime.Today; + dtAfter = RelativeToday; //go backwards to monday while (dtAfter.DayOfWeek != DayOfWeek.Monday) dtAfter = dtAfter.AddDays(-1); @@ -352,9 +352,9 @@ namespace AyaNova.Biz - dtBefore = System.DateTime.Today; + dtBefore = RelativeToday; //go forwards to monday - if (System.DateTime.Today.DayOfWeek == DayOfWeek.Monday) + if (RelativeToday.DayOfWeek == DayOfWeek.Monday) { //Monday today? then go to next monday dtBefore = dtBefore.AddDays(7); @@ -369,7 +369,7 @@ namespace AyaNova.Biz break; case FilterSpecialToken.NextWeek: //Between Next Sunday at midnight and Next Next sunday at midnight - dtAfter = System.DateTime.Today; + dtAfter = RelativeToday; //If today is monday skip over it first if (dtAfter.DayOfWeek == DayOfWeek.Monday) @@ -392,7 +392,7 @@ namespace AyaNova.Biz break; case FilterSpecialToken.LastMonth: //start with the first day of this month - dtAfter = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1, 00, 00, 00); + dtAfter = new DateTime(RelativeToday.Year, RelativeToday.Month, 1, 00, 00, 00); //subtract a Month dtAfter = dtAfter.AddMonths(-1); @@ -408,7 +408,7 @@ namespace AyaNova.Biz break; case FilterSpecialToken.ThisMonth: //start with the first day of this month - dtAfter = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1, 00, 00, 00); + dtAfter = new DateTime(RelativeToday.Year, RelativeToday.Month, 1, 00, 00, 00); //Add one month to dtAfter to get end date dtBefore = dtAfter.AddMonths(1); @@ -421,7 +421,7 @@ namespace AyaNova.Biz case FilterSpecialToken.NextMonth: //start with the first day of this month - dtAfter = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1, 00, 00, 00); + dtAfter = new DateTime(RelativeToday.Year, RelativeToday.Month, 1, 00, 00, 00); //Add a Month dtAfter = dtAfter.AddMonths(1); @@ -435,7 +435,7 @@ namespace AyaNova.Biz break; case FilterSpecialToken.FourteenDayWindow: //start with today zero hour - dtAfter = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 00, 00, 00); + dtAfter = new DateTime(RelativeToday.Year, RelativeToday.Month, RelativeToday.Day, 00, 00, 00); dtAfter = dtAfter.AddDays(-7); //Add 15 days to get end date (zero hour so not really 15 full days)