OltSearcherDateRange and OltDateRange model class to build a date range searchers/expressions (IQueryable)
Utilizes FluentDateTime to build out OltDateRange defaults (i.e., OltDateRange.Today)
public class MyEntitySearcher : OltSearcherDateRange<MyEntity>
{
public MyEntitySearcher() : base() { }
public MyEntitySearcher(OltDateRange value) : base(value) { }
public MyEntitySearcher(DateTimeOffset start, DateTimeOffset end) : base(start, end) { }
public override IQueryable<MyEntity> BuildQueryable(IQueryable<MyEntity> queryable)
{
return queryable.Where(p => p.SomeDate >= Value.Start && p.SomeDate < QueryEnd);
}
}
// Example Searchers
MyEntitySearcher searcher;
searcher = new MyEntitySearcher(new OltDateRange(DateTimeOffset.Now.AddMonths(-3), DateTimeOffset.Now));
searcher = new MyEntitySearcher(OltDateRange.Today);
searcher = new MyEntitySearcher(OltDateRange.Yesterday);
searcher = new MyEntitySearcher(OltDateRange.Last7Days);
searcher = new MyEntitySearcher(OltDateRange.Next7Days);
searcher = new MyEntitySearcher(OltDateRange.ThisMonth);
searcher = new MyEntitySearcher(OltDateRange.LastMonth);
searcher = new MyEntitySearcher(OltDateRange.NextMonth);
searcher = new MyEntitySearcher(OltDateRange.MonthToDate);
searcher = new MyEntitySearcher(OltDateRange.ThisWeek);
searcher = new MyEntitySearcher(OltDateRange.NextWeek);
searcher = new MyEntitySearcher(OltDateRange.QuarterToDate);
searcher = new MyEntitySearcher(OltDateRange.PreviousQuarter);
searcher = new MyEntitySearcher(OltDateRange.ThisYear);
searcher = new MyEntitySearcher(OltDateRange.LastYear);
searcher = new MyEntitySearcher(OltDateRange.YearToDate);
//Midnight() is an extension provided by FluentDateTime. See The package for all the extensions
searcher = new MyEntitySearcher(DateTimeOffset.Now.Midnight(), DateTimeOffset.Now.AddDays(3).Midnight());
//TODO: QuarterToDate, PreviousQuarter, YTD, LastYear, NextMonth, ThisYear, Tomorrow