public IActionResult GetSchools([FromQuery] SchoolQueryFilter filters) { // Console.Write("al api"); //var schools = await _schoolService.GetSchools(); //var schoolDtos = _mapper.Map<IEnumerable<SchoolDto>>(schools); //var response = new ApiResponse<IEnumerable<SchoolDto>>(schoolDto/s); //var schoolDto = _mapper.Map<IEquatable<SchoolDto>>(school); //var schoolDto = school.AsQueryable<School>().Select( x => new SchoolDto //{ // Id = x.Id, // Name = x.Name, // Description = x.Description, // Logo = x.Logo, // Status = x.Status //}); //await Task.Delay(1); var schools = _schoolService.GetSchools(filters); var schoolDtos = _mapper.Map <IEnumerable <SchoolDto> >(schools); var metadata = new Metadata { TotalCount = schools.TotalCount, PageSize = schools.PageSize, CurrentPage = schools.CurrentPage, TotalPages = schools.TotalPages, HasNextPage = schools.HasNextPage, HasPreviousPage = schools.HasPreviousPage, NextPageUrl = _uriService.GetPostPaginationUri(filters, Url.RouteUrl(nameof(GetSchools))).ToString(), PreviousPageUrl = _uriService.GetPostPaginationUri(filters, Url.RouteUrl(nameof(GetSchools))).ToString() }; var response = new ApiResponse <IEnumerable <SchoolDto> >(schoolDtos) { Meta = metadata }; Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata)); //var response = new ApiResponse<IEnumerable<SchoolDto>>(schoolDtos); return(Ok(response)); }
public PagedList <School> GetSchools(SchoolQueryFilter filters) { filters.PageNumber = filters.PageNumber == 0 ? _paginationOptions.DefaultPageNumber : filters.PageNumber; filters.PageSize = filters.PageSize == 0 ? _paginationOptions.DefaultPageSize : filters.PageSize; //return _schoolRepository.GetAll(); //.GetSchools(); var schools = _schoolRepository.SchoolRepository.GetAll().ToList(); //filtros if (!String.IsNullOrEmpty(filters.Id)) { schools = schools.Where(x => x.Id.ToLower().Contains(filters.Id)).ToList(); } if (!String.IsNullOrEmpty(filters.Name)) { schools = schools.Where(x => x.Name.ToLower().Contains(filters.Name)).ToList(); } //paginacion var pageSchools = PagedList <School> .Create(schools, filters.PageNumber, filters.PageSize); return(pageSchools); }
public Uri GetPostPaginationUri(SchoolQueryFilter filter, string actionUrl) { string baseUrl = $"{_baseUri}{actionUrl}"; return(new Uri(baseUrl)); }