예제 #1
0
        public async Task <IEnumerable <Building> > GetBuildings(
            BuildingUserParams userParams = null,
            Expression <Func <Building, object> >[] includeProperties = null,
            Expression <Func <Building, bool> > filter = null,
            bool includeAllNestedProps = false,
            Func <IQueryable <Building>, IOrderedQueryable <Building> > orderBy = null
            )
        {
            var buildings = _context.Buildings.AsQueryable();

            if (includeAllNestedProps)
            {
                buildings = IncludeAllProperties(buildings);
            }
            else if (includeProperties != null)
            {
                buildings = ProcessProperties(buildings, includeProperties);
            }

            buildings = ProcessFilter(buildings, userParams, filter);

            if (orderBy != null)
            {
                return(await orderBy(buildings).ToListAsync());
            }
            else
            {
                return(await buildings.ToListAsync());
            }
        }
예제 #2
0
        public async Task <IActionResult> GetBuildingsDisplay([FromQuery] BuildingUserParams userParams)
        {
            var buildingToDisplay = _mapper.Map <IEnumerable <BuildingForDisplay> >(
                await _buildingService.GetBuildings(userParams)
                );

            return(Ok(buildingToDisplay));
        }
예제 #3
0
        public async Task <PagedList <Building> > GetBuildingsPagination(BuildingUserParams pageParams)
        {
            var bldgs = await _buildingsRepo.GetBuildingsPagination(
                pageParams,
                new Expression <Func <Building, object> >[] {
                b => b.BuildingCategory
            });

            return(bldgs);
        }
예제 #4
0
        public async Task <IEnumerable <Building> > GetBuildings(BuildingUserParams userParams = null)
        {
            var buildings = await _buildingsRepo.GetBuildings(
                userParams,
                new Expression <Func <Building, object> >[] {
                b => b.BuildingCategory
            });

            return(buildings);
        }
예제 #5
0
        public async Task <IActionResult> GetBuildingsPagination([FromQuery] BuildingUserParams userParams)
        {
            var bldgs = await _buildingService.GetBuildingsPagination(userParams);

            var bldgsToReturn = _mapper.Map <IEnumerable <Building> >(bldgs);

            Response.AddPagination(bldgs.CurrentPage,
                                   bldgs.PageSize,
                                   bldgs.TotalCount,
                                   bldgs.TotalPages);

            return(Ok(bldgsToReturn));
        }
예제 #6
0
        private IQueryable <Building> ProcessFilter(IQueryable <Building> buildings, BuildingUserParams userParams, Expression <Func <Building, bool> > filter)
        {
            if (filter != null)
            {
                buildings = buildings.Where(filter);
            }

            if (userParams?.BuildingCategoryId != null)
            {
                buildings = buildings.Where(b => b.BuildingCategoryId == userParams.BuildingCategoryId);
            }
            return(buildings);
        }
예제 #7
0
        public async Task <PagedList <Building> > GetBuildingsPagination(
            BuildingUserParams userParams,
            Expression <Func <Building, object> >[] includeProperties = null,
            Expression <Func <Building, bool> > filter = null
            )
        {
            var buildings = _context.Buildings.AsQueryable();

            if (includeProperties != null)
            {
                buildings = ProcessProperties(buildings, includeProperties);
            }

            buildings = ProcessFilter(buildings, userParams, filter);

            return(await PagedList <Building> .CreateAsync(buildings, userParams.PageNumber, userParams.PageSize));
        }
예제 #8
0
        public async Task <IActionResult> GetBuildings([FromQuery] BuildingUserParams buildingParams)
        {
            var buildings = await _buildingService.GetBuildings(buildingParams);

            return(Ok(buildings));
        }