public async Task <PagedList <Facility> > GetFacilities(FacilityQueryFilter filters) { filters.PageNumber = filters.PageNumber == 0 ? _paginationOptions.DefaultPageNumber : filters.PageNumber; filters.PageSize = filters.PageSize == 0 ? _paginationOptions.DefaultPageSize : filters.PageSize; var facilities = filters.OrganizationId.HasValue ? await _unitOfWork.FacilityRepository.GetFacilitiesByOrganization(filters.OrganizationId.Value) : _unitOfWork.FacilityRepository.GetAll().ToList(); if (!String.IsNullOrEmpty(filters.Name)) { facilities = facilities.Where(x => x.Name.ToLower().Contains(filters.Name.ToLower())).ToList(); } if (!String.IsNullOrEmpty(filters.City)) { facilities = facilities.Where(x => x.Address.City.ToLower().Contains(filters.City.ToLower())).ToList(); } if (filters.StateId.HasValue) { facilities = facilities.Where(x => x.Address.StateId == filters.StateId.Value).ToList(); } facilities = facilities.Where(x => x.IsActive == filters.Status).ToList(); var pagedFacilities = PagedList <Facility> .Create(facilities, filters.PageNumber, filters.PageSize); return(pagedFacilities); }
public async Task <IActionResult> GetAll([FromQuery] FacilityQueryFilter filters) { // GET FACILITIES DEPENDING ON USER LOGGED var facilities = await _facilityService.GetFacilities(filters); var facilitiesDto = _mapper.Map <IEnumerable <FacilitiesListDto> >(facilities); var metadata = new Metadata { TotalCount = facilities.TotalCount, PageSize = facilities.PageSize, CurrentPage = facilities.CurrentPage, TotalPages = facilities.TotalPages, HasNextPage = facilities.HasNextPage, HasPreviousPage = facilities.HasPreviousPage, NextPageUrl = _uriService.GetPaginationUri(Url.RouteUrl(nameof(GetAll))).ToString(), PreviousPageUrl = _uriService.GetPaginationUri(Url.RouteUrl(nameof(GetAll))).ToString() }; var response = new ApiResponse <IEnumerable <FacilitiesListDto> >(facilitiesDto) { Meta = metadata }; return(Ok(response)); }