Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        public async Task <int> GetInmatesCount(InmateFilter filter)
        {
            var spec = new InmateSpecification(filter, true);

            return(await _unitOfWork.Repository <Inmate>().GetCountForSpecAsync(spec));
        }
Esempio n. 4
0
        public async Task <IReadOnlyList <InmateToReturnDto> > GetInmates(InmateFilter filter)
        {
            var spec = new InmateSpecification(filter);

            return(await _unitOfWork.Repository <Inmate>().FindAllBySpecAsync <InmateToReturnDto>(spec));
        }