public async Task <long> GetCountAsync(string filterText = null, ReservationQueryFilter reservationQueryFilter = null, CancellationToken cancellationToken = default) { var query = ApplyFilter(DbSet, filterText, reservationQueryFilter); return(await query.LongCountAsync(GetCancellationToken(cancellationToken))); }
public async Task <List <Reservation> > GetListAsync(string filterText = null, ReservationQueryFilter reservationQueryFilter = null, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, CancellationToken cancellationToken = default) { var query = ApplyFilter(DbSet, filterText, reservationQueryFilter); if (string.IsNullOrWhiteSpace(sorting)) { query = query.OrderBy(Reservation.DefaultSorting); } return(await query.PageBy(skipCount, maxResultCount).ToListAsync(cancellationToken)); }
protected virtual IQueryable <Reservation> ApplyFilter(IQueryable <Reservation> query, string filter, ReservationQueryFilter queryFilter) { query = query.WhereIf(!filter.IsNullOrWhiteSpace(), e => e.NameSurname.Contains(filter, StringComparison.OrdinalIgnoreCase)); if (queryFilter != null) { query = query .WhereIf(queryFilter.CheckinDateMin.HasValue, e => e.CheckinDate >= queryFilter.CheckinDateMin.Value) .WhereIf(queryFilter.CheckinDateMax.HasValue, e => e.CheckinDate <= queryFilter.CheckinDateMax.Value) .WhereIf(queryFilter.PersonCountMin.HasValue, e => e.PersonCount >= queryFilter.PersonCountMin.Value) .WhereIf(queryFilter.PersonCountMax.HasValue, e => e.PersonCount <= queryFilter.PersonCountMax.Value) .WhereIf(queryFilter.IsPaid.HasValue, e => e.IsPaid == queryFilter.IsPaid) .WhereIf(!string.IsNullOrWhiteSpace(queryFilter.NameSurname), e => e.NameSurname.Contains(queryFilter.NameSurname, StringComparison.OrdinalIgnoreCase)) .WhereIf(queryFilter.PriceMin.HasValue, e => e.Price >= queryFilter.PriceMin.Value) .WhereIf(queryFilter.PriceMax.HasValue, e => e.Price <= queryFilter.PriceMax.Value); } return(query); }
public GetReservationsInput() { ReservationFilter = new ReservationQueryFilter(); }