public async Task <IActionResult> GetAllUnassigned([FromQuery] BaseQueryFilter filters) { var unassignedUnits = await _unitService.GetUnassignedUnits(filters); var unassignedUnitsDto = _mapper.Map <IEnumerable <UnassignedUnitsDto> >(unassignedUnits); var metadata = new Metadata { TotalCount = unassignedUnits.TotalCount, PageSize = unassignedUnits.PageSize, CurrentPage = unassignedUnits.CurrentPage, TotalPages = unassignedUnits.TotalPages, HasNextPage = unassignedUnits.HasNextPage, HasPreviousPage = unassignedUnits.HasPreviousPage, NextPageUrl = _uriService.GetPaginationUri(Url.RouteUrl(nameof(GetAllUnassigned))).ToString(), PreviousPageUrl = _uriService.GetPaginationUri(Url.RouteUrl(nameof(GetAllUnassigned))).ToString() }; var response = new ApiResponse <IEnumerable <UnassignedUnitsDto> >(unassignedUnitsDto) { Meta = metadata }; return(Ok(response)); }
/// <summary>Disables the filter on the associated query.</summary> /// <param name="filter">The filter to disable on the associated query.</param> public void DisableFilter(BaseQueryFilter filter) { if (Filters.Remove(filter)) { UpdateInternalQuery(); } }
/// <summary>Enables the filter on the associated query.</summary> /// <param name="filter">The filter to enable on the associated query.</param> public void EnableFilter(BaseQueryFilter filter) { if (!Filters.Contains(filter)) { Filters.Add(filter); UpdateInternalQuery(); } }
public string GetPaginationPreviousUrl(BaseQueryFilter filter, HttpRequest request, bool hasPreviousPage) { if (hasPreviousPage) { modifiedUri = GetCustomUrl(filter, request, false); return(modifiedUri); } return(null); }
public string GetPaginationNextUrl(BaseQueryFilter filter, HttpRequest request, bool hasNextPage) { if (hasNextPage) { modifiedUri = GetCustomUrl(filter, request, true); return(modifiedUri); } return(null); }
public async Task <PagedList <Unit> > GetUnassignedUnits(BaseQueryFilter filters) { filters.PageNumber = filters.PageNumber == 0 ? _paginationOptions.DefaultPageNumber : filters.PageNumber; filters.PageSize = filters.PageSize == 0 ? _paginationOptions.DefaultPageSize : filters.PageSize; var unassignedUnits = await _unitOfWork.UnitRepository.GetUnassignedUnits(); var pagedUnassignedUnits = PagedList <Unit> .Create(unassignedUnits, filters.PageNumber, filters.PageSize); return(pagedUnassignedUnits); }
//retorna la lista paginada. //skip=omitir, take=tomar public IList <T> GetPagedList(IList <T> list, BaseQueryFilter filter = null) { if (filter.ItemByPage == null) { filter.ItemByPage = appsetting.ItemByPage; } if (filter.CurrentPage == null) { filter.CurrentPage = appsetting.CurrentPage; } return(list.Skip(((filter.CurrentPage - 1) * filter.ItemByPage).Value).Take(filter.ItemByPage.Value).ToList()); }
//this is a dynamic function to create a custom url private string GetCustomUrl(BaseQueryFilter filter, HttpRequest request, bool addOnePageItem) { var baseRouteUrl = $"{ _baseUrl}{ request.Path.Value}"; var modifiedUri = baseRouteUrl; if (addOnePageItem) { modifiedUri = QueryHelpers.AddQueryString(modifiedUri, nameof(filter.PageNumber), (filter.PageNumber + 1).ToString()); } modifiedUri = QueryHelpers.AddQueryString(modifiedUri, nameof(filter.PageNumber), (filter.PageNumber - 1).ToString()); modifiedUri = QueryHelpers.AddQueryString(modifiedUri, nameof(filter.PageSize), (filter.PageSize).ToString()); foreach (var item in request.Query) { //Jump if it has page number or page size from query if (item.Key == nameof(filter.PageNumber) || item.Key == nameof(filter.PageSize)) { continue; } modifiedUri = QueryHelpers.AddQueryString(modifiedUri, item.Key, item.Value); } return(modifiedUri); }
internal ResponseApi <List <TDTO> > GetPagedList(IEnumerable <TEntity> lista, BaseQueryFilter filter = null) { var list = lista.ToList(); //aplicamos logica de negocio if (list.Count() == 0) { throw new CustomException($"No se encontro resultado", HttpStatusCode.NotFound); } //aplicamos navegacion de la lista // var navegation = _pagination.GetNavegation(list, filter); //aplicamos paginado var pagedList = _pagination.GetPagedList(list, filter); //mapeamos la lista paginada a un DTOs var dTOs = _mapper.Map <List <TDTO> >(pagedList); //retornamos nuestra repuesta personalizada. return(new ResponseApi <List <TDTO> >(dTOs)); }
private void Push(BaseQueryFilter queryFilter) { _stack.Push(queryFilter); }