public PagedList <Perfil> GetPerfils(PerfilQueryFilter filtros) { filtros.PageNumber = filtros.PageNumber == 0 ? _paginationOptions.DefaultPageNumber : filtros.PageNumber; filtros.PageSize = filtros.PageSize == 0 ? _paginationOptions.DefaultPageSize : filtros.PageSize; var perfiles = _unitOfWork.PerfilRepository.GetAll(); if (filtros.IdPerfil != null) { perfiles = perfiles.Where(x => x.Id == filtros.IdPerfil); } if (filtros.Nombre != null) { perfiles = perfiles.Where(x => x.Nombre.ToLower().Contains(filtros.Nombre.ToLower())); } if (filtros.EsActivo != null) { perfiles = perfiles.Where(x => x.EsActivo == filtros.EsActivo); } var pagedPerfiles = PagedList <Perfil> .Create(perfiles, filtros.PageNumber, filtros.PageSize); return(pagedPerfiles); }
public IActionResult GetPerfils([FromQuery] PerfilQueryFilter filtros) { var perfiles = _perfilService.GetPerfils(filtros); var perfilesDtos = _mapper.Map <IEnumerable <PerfilDto> >(perfiles); var metaData = new MetaData { TotalCount = perfiles.TotalCount, PageSize = perfiles.PageSize, CurrentPage = perfiles.CurrentPage, TotalPages = perfiles.TotalPages, HasNextPage = perfiles.HasNextPage, HasPreviousPage = perfiles.HasPreviousPage, NextPageUrl = _uriService.GetPerfilPaginationUri(filtros, Url.RouteUrl(nameof(GetPerfils))).ToString(), PreviousPageUrl = _uriService.GetPerfilPaginationUri(filtros, Url.RouteUrl(nameof(GetPerfils))).ToString() }; var response = new ApiResponse <IEnumerable <PerfilDto> >(perfilesDtos) { Meta = metaData }; Response.Headers.Add("x-Pagination", JsonConvert.SerializeObject(metaData)); return(Ok(response)); }
public Uri GetPerfilPaginationUri(PerfilQueryFilter filter, string actionUrl) { string url = $"{_baseUri}{actionUrl}"; return(new Uri(url)); }