示例#1
0
        public async Task <PagedList <T> > GetPaginatedDetails <T>(EmployeesPaginationQuery paginationQuery, bool isAdministrator)
        {
            IQueryable <Employee> query;

            if (!isAdministrator)
            {
                query = _dbContext.Employees.Where(e => e.Profession == Profession.DOCTOR || e.Profession == Profession.NURSE);
            }
            else
            {
                query = _dbContext.Employees;
            }

            if (query.Count() < 1)
            {
                throw new NotFoundException("Employees not found");
            }


            if (!string.IsNullOrEmpty(paginationQuery.SearchPhrase) && !string.IsNullOrEmpty(paginationQuery.FilterColumn))
            {
                query = query.Where(CreateCompareExpression <Employee>(paginationQuery.FilterColumn, paginationQuery.SearchPhrase));
            }

            if (!string.IsNullOrEmpty(paginationQuery.SortBy))
            {
                var columnSelector = Employee.GetDictionaryOfProperties();
                var columnToOrder  = columnSelector[paginationQuery.SortBy];
                query = query.OrderBy(columnToOrder);
            }

            var queryDTO = _mapper.ProjectTo <T>(query);

            if (queryDTO.Count() < 1)
            {
                throw new NotFoundException("Results of pagination query not found");
            }

            var pagedList = await PagedList <T> .CreateAsync(queryDTO, paginationQuery.PageNumber, paginationQuery.PageSize);


            return(pagedList);
        }
示例#2
0
        public async Task <ActionResult <PagedList <EmployeeDetailsDTO> > > GetAllDetails([FromQuery] EmployeesPaginationQuery query)
        {
            var pagedList = await _employeeService.GetPaginatedDetails <EmployeeDetailsDTO>(query, true);

            return(Ok(pagedList));
        }