public static DatesInterval ConvertBack(GroupHeaderTypes groupHeaderType) { var endOfToday = DateTime.MaxValue; var today = DateTime.Today; var endOfYesterday = today.AddMilliseconds(-1); var yesterday = today.AddDays(-1); var endOfThisWeek = yesterday.AddMilliseconds(-1); var thisWeek = today.AddDays(-1 * (int)today.DayOfWeek); var endOfThisMonth = thisWeek.AddMilliseconds(-1); var thisMonth = new DateTime(today.Year, today.Month, 1); var endOfLastMonth = thisMonth.AddMilliseconds(-1); var lastMonth = thisMonth.AddMonths(-1); var endOfThisYear = lastMonth.AddMilliseconds(-1); var thisYear = new DateTime(today.Year, 1, 1); var endOfLastYear = thisYear.AddMilliseconds(-1); var lastYear = new DateTime(today.Year - 1, 1, 1); var endOfLongAgo = lastYear.AddMilliseconds(-1); var longAgo = DateTime.MinValue; switch (groupHeaderType) { case GroupHeaderTypes.All: { return(new DatesInterval(DateTime.MinValue, DateTime.MaxValue)); } case GroupHeaderTypes.Today: { return(new DatesInterval(today, endOfToday)); } case GroupHeaderTypes.Yesterday: { return(new DatesInterval(yesterday, endOfYesterday)); } case GroupHeaderTypes.ThisWeek: { return(new DatesInterval(thisWeek, endOfThisWeek)); } case GroupHeaderTypes.ThisMonth: { return(new DatesInterval(thisMonth, endOfThisMonth)); } case GroupHeaderTypes.LastMonth: { return(new DatesInterval(lastMonth, endOfLastMonth)); } case GroupHeaderTypes.ThisYear: { return(new DatesInterval(thisYear, endOfThisYear)); } case GroupHeaderTypes.LastYear: { return(new DatesInterval(lastYear, endOfLastYear)); } case GroupHeaderTypes.LongAgo: { return(new DatesInterval(longAgo, endOfLongAgo)); } default: { throw new NotSupportedException("Not supported group header."); } } }
public ElementWithGroupHeader(GroupHeaderTypes groupHeaderType, IElementWithDate element) { this.GroupHeaderType = groupHeaderType; this.Element = element; }