public async Task <ActionResult <IReadOnlyList <InmateDto> > > GetInmates([FromQuery] InmateFilter inmateFilter) { var count = await _inmateService.GetInmatesCount(inmateFilter); var inmates = await _inmateService.GetInmates(inmateFilter); Response.AddPaginationHeader(count, inmateFilter.PageIndex, inmateFilter.PageSize); return(Ok(inmates)); }
public InmateSpecification(InmateFilter filter, bool forCount = false) : base(i => (string.IsNullOrEmpty(filter.Search) || i.FullName.ToLower().Contains(filter.Search))) { AddOrderBy(i => i.FullName); if (string.IsNullOrEmpty(filter.Sort)) { switch (filter.Sort) { case "byName": AddOrderBy(i => i.FullName); break; case "byNameDesc": AddOrderByDesc(i => i.FullName); break; } } if (!forCount) { AddPagination((filter.PageIndex - 1) * filter.PageSize, filter.PageSize); } }
public async Task <int> GetInmatesCount(InmateFilter filter) { var spec = new InmateSpecification(filter, true); return(await _unitOfWork.Repository <Inmate>().GetCountForSpecAsync(spec)); }
public async Task <IReadOnlyList <InmateToReturnDto> > GetInmates(InmateFilter filter) { var spec = new InmateSpecification(filter); return(await _unitOfWork.Repository <Inmate>().FindAllBySpecAsync <InmateToReturnDto>(spec)); }