diff --git a/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs b/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs index 333f4e26..64ccd95d 100644 --- a/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs +++ b/server/AyaNova/DataList/DataListSqlFilterCriteriaBuilder.cs @@ -435,7 +435,7 @@ namespace AyaNova.DataList #region Build criteria for date RANGE TOKEN specified - + //Used as the basis point System.DateTime dtAfter; System.DateTime dtBefore; @@ -458,10 +458,10 @@ namespace AyaNova.DataList break; case "*tomorrow*": //Between Tonight at midnight and day after tommorow at midnight - dtAfter = ClientToday.AddDays(1).AddSeconds(-1); + dtAfter = ClientToday.AddDays(1).AddSeconds(-1); dtBefore = ClientToday.AddDays(2); BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); - break; + break; case "*lastweek*": //Between two Sundays ago at midnight and last sunday at midnight dtAfter = ClientToday; @@ -514,7 +514,7 @@ namespace AyaNova.DataList //Now go back to sunday last second dtAfter = dtAfter.AddDays(-1); //go seven days ahead - dtBefore = dtAfter.AddDays(7); + dtBefore = dtAfter.AddDays(7); dtAfter = dtAfter.AddSeconds(-1); BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); @@ -529,7 +529,7 @@ namespace AyaNova.DataList dtBefore = dtAfter.AddMonths(1); //case 1155 - dtAfter = dtAfter.AddSeconds(-1); + dtAfter = dtAfter.AddSeconds(-1); BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; @@ -559,7 +559,7 @@ namespace AyaNova.DataList dtAfter = dtAfter.AddSeconds(-1); BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; - + case "*14daywindow*": //start with today zero hour dtAfter = new DateTime(ClientToday.Year, ClientToday.Month, ClientToday.Day); @@ -576,7 +576,7 @@ namespace AyaNova.DataList case "*past*": //Forever up to Now - dtAfter = new DateTime(1753, 1, 2, 00, 00, 00);//this was for sql server but even then was probably outdated good enough though for our purposes + dtAfter = new DateTime(1753, 1, 2);//this was for sql server but even then was probably outdated good enough though for our purposes dtBefore = ClientNow; BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; @@ -598,15 +598,15 @@ namespace AyaNova.DataList case "*thisyear*": //From zero hour january 1 this year - dtAfter = new DateTime(ClientNow.Year, 1, 1, 00, 00, 00).AddSeconds(-1); + dtAfter = new DateTime(ClientNow.Year, 1, 1).AddSeconds(-1); //To zero hour Jan 1 next year - dtBefore = new DateTime(ClientNow.AddYears(1).Year, 1, 1, 00, 00, 00); + dtBefore = new DateTime(ClientNow.AddYears(1).Year, 1, 1); BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; case "*last3months*": //From Now minus 3 months - dtAfter = ClientNow.AddMonths(-3); + dtAfter = ClientNow.AddMonths(-3).AddSeconds(-1); //To Now dtBefore = ClientNow; BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); @@ -614,7 +614,7 @@ namespace AyaNova.DataList case "*last6months*": //From Now minus 6 months - dtAfter = ClientNow.AddMonths(-6); + dtAfter = ClientNow.AddMonths(-6).AddSeconds(-1); //To Now dtBefore = ClientNow; BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); @@ -622,120 +622,134 @@ namespace AyaNova.DataList case "*pastyear*": //within the prior 365 days before today //From Now minus 365 days - dtAfter = ClientNow.AddDays(-365); + dtAfter = ClientNow.AddDays(-365).AddSeconds(-1); //To Now dtBefore = ClientNow; BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; - case "*past90days*": //From Now minus 90 days - dtAfter = ClientNow.AddDays(-90); + dtAfter = ClientNow.AddDays(-90).AddSeconds(-1); //To Now dtBefore = ClientNow; BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; case "*past30days*": //From Now minus 30 days - dtAfter = ClientNow.AddDays(-30); + dtAfter = ClientNow.AddDays(-30).AddSeconds(-1); //To Now dtBefore = ClientNow; BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; case "*past7days*": - throw new System.NotImplementedException("DATE TOKEN NOT IMPLEMENTED YET"); + //From Now minus 7 days + dtAfter = ClientNow.AddDays(-7).AddSeconds(-1); + //To Now + dtBefore = ClientNow; + BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; case "*past24hours*": //From Now minus 24 hours - dtAfter = ClientNow.AddHours(-24); + dtAfter = ClientNow.AddHours(-24).AddSeconds(-1); //To Now dtBefore = ClientNow; BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; case "*past6hours*": - throw new System.NotImplementedException("DATE TOKEN NOT IMPLEMENTED YET"); + //From Now minus 6 hours + dtAfter = ClientNow.AddHours(-6).AddSeconds(-1); + //To Now + dtBefore = ClientNow; + BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; case "*january*": //From zero hour january 1 this year - dtAfter = new DateTime(ClientNow.Year, 1, 1, 00, 00, 00).AddSeconds(-1); + dtAfter = new DateTime(ClientNow.Year, 1, 1).AddSeconds(-1); //To zero hour feb 1 this year - dtBefore = new DateTime(ClientNow.Year, 2, 1, 00, 00, 00); + dtBefore = new DateTime(ClientNow.Year, 2, 1); BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; case "*february*": - dtAfter = new DateTime(ClientNow.Year, 2, 1, 00, 00, 00).AddSeconds(-1); - dtBefore = new DateTime(ClientNow.Year, 3, 1, 00, 00, 00); + dtAfter = new DateTime(ClientNow.Year, 2, 1).AddSeconds(-1); + dtBefore = new DateTime(ClientNow.Year, 3, 1); BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; case "*march*": - dtAfter = new DateTime(ClientNow.Year, 3, 1, 00, 00, 00).AddSeconds(-1); - dtBefore = new DateTime(ClientNow.Year, 4, 1, 00, 00, 00); + dtAfter = new DateTime(ClientNow.Year, 3, 1).AddSeconds(-1); + dtBefore = new DateTime(ClientNow.Year, 4, 1); BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; case "*april*": - dtAfter = new DateTime(ClientNow.Year, 4, 1, 00, 00, 00).AddSeconds(-1); - dtBefore = new DateTime(ClientNow.Year, 5, 1, 00, 00, 00); + dtAfter = new DateTime(ClientNow.Year, 4, 1).AddSeconds(-1); + dtBefore = new DateTime(ClientNow.Year, 5, 1); BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; case "*may*": - dtAfter = new DateTime(ClientNow.Year, 5, 1, 00, 00, 00).AddSeconds(-1); - dtBefore = new DateTime(ClientNow.Year, 6, 1, 00, 00, 00); + dtAfter = new DateTime(ClientNow.Year, 5, 1).AddSeconds(-1); + dtBefore = new DateTime(ClientNow.Year, 6, 1); BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; case "*june*": - dtAfter = new DateTime(ClientNow.Year, 6, 1, 00, 00, 00).AddSeconds(-1); - dtBefore = new DateTime(ClientNow.Year, 7, 1, 00, 00, 00); + dtAfter = new DateTime(ClientNow.Year, 6, 1).AddSeconds(-1); + dtBefore = new DateTime(ClientNow.Year, 7, 1); BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; case "*july*": - dtAfter = new DateTime(ClientNow.Year, 7, 1, 00, 00, 00).AddSeconds(-1); - dtBefore = new DateTime(ClientNow.Year, 8, 1, 00, 00, 00); + dtAfter = new DateTime(ClientNow.Year, 7, 1).AddSeconds(-1); + dtBefore = new DateTime(ClientNow.Year, 8, 1); BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; case "*august*": - dtAfter = new DateTime(ClientNow.Year, 8, 1, 00, 00, 00).AddSeconds(-1); - dtBefore = new DateTime(ClientNow.Year, 9, 1, 00, 00, 00); + dtAfter = new DateTime(ClientNow.Year, 8, 1).AddSeconds(-1); + dtBefore = new DateTime(ClientNow.Year, 9, 1); BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; case "*september*": - dtAfter = new DateTime(ClientNow.Year, 9, 1, 00, 00, 00).AddSeconds(-1); - dtBefore = new DateTime(ClientNow.Year, 10, 1, 00, 00, 00); + dtAfter = new DateTime(ClientNow.Year, 9, 1).AddSeconds(-1); + dtBefore = new DateTime(ClientNow.Year, 10, 1); BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; case "*october*": - dtAfter = new DateTime(ClientNow.Year, 10, 1, 00, 00, 00).AddSeconds(-1); - dtBefore = new DateTime(ClientNow.Year, 11, 1, 00, 00, 00); + dtAfter = new DateTime(ClientNow.Year, 10, 1).AddSeconds(-1); + dtBefore = new DateTime(ClientNow.Year, 11, 1); BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; case "*november*": - dtAfter = new DateTime(ClientNow.Year, 11, 1, 00, 00, 00).AddSeconds(-1); - dtBefore = new DateTime(ClientNow.Year, 12, 1, 00, 00, 00); + dtAfter = new DateTime(ClientNow.Year, 11, 1).AddSeconds(-1); + dtBefore = new DateTime(ClientNow.Year, 12, 1); BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; case "*december*": //From zero hour dec 1 this year - dtAfter = new DateTime(ClientNow.Year, 12, 1, 00, 00, 00).AddSeconds(-1); + dtAfter = new DateTime(ClientNow.Year, 12, 1).AddSeconds(-1); //To zero hour Jan 1 next year - dtBefore = new DateTime(ClientNow.AddYears(1).Year, 1, 1, 00, 00, 00); + dtBefore = new DateTime(ClientNow.AddYears(1).Year, 1, 1); BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; case "*lastyearlastmonth*": - throw new System.NotImplementedException("DATE TOKEN NOT IMPLEMENTED YET"); + //start with the first day of this month + dtAfter = new DateTime(ClientToday.Year, ClientToday.Month, 1); + //subtract a year and a Month + dtAfter = dtAfter.AddYears(-1).AddMonths(-1); + //Add one month to dtAfter to get end date + dtBefore = dtAfter.AddMonths(1); + dtAfter = dtAfter.AddSeconds(-1); + BuildBetweenTwoDatesFragment(SqlColumnNameToFilter, sb, dtAfter, dtBefore); break; case "*lastyearthismonth*":