public async Task <IReadOnlyList <PartidaModel> > ObterPartidasAsync(PaginacaoQuery pagination = null, PartidaFilterQuery filter = null) { var obterPartidasQuery = new ObterPartidasQuery { }; var partidas = await _mediator .Send(obterPartidasQuery); var skip = (pagination.NumeroPagina - 1) * pagination.QuantidadePagina; if (!(filter is null)) { return(partidas .Where(m => m.QuadraFutebolId == filter.QuadraId) .Where(m => m.PrimeiroTimeId == filter.TimeId || m.SegundoTimeId == filter.TimeId) .Skip(skip) .Take(pagination.QuantidadePagina) .ToList()); } return(partidas .Skip(skip) .Take(pagination.QuantidadePagina) .ToList()); }
public async Task <IActionResult> GetAll([FromQuery] PaginacaoQuery pagination, [FromQuery] PartidaFilterQuery filter) { var partidasResponse = CacheServico .GetCachedResponse <IReadOnlyList <PartidaResponse> >(ApiRotas.Partida.GetAll); if (partidasResponse is null) { var partidas = await _partidaService .ObterPartidasAsync(pagination, filter); partidasResponse = Mapper .Map <IReadOnlyList <PartidaResponse> >(partidas); CacheServico.SetCacheResponse( ApiRotas.Partida.GetAll, partidasResponse, TimeSpan.FromMinutes(2)); } if (pagination == null || pagination.NumeroPagina < 1 || pagination.QuantidadePagina < 1) { return(Ok(new PagedResponse <PartidaResponse>(partidasResponse))); } var paginationResponse = PaginationHelpers .CriarRespostaPaginada(UriServico, pagination, partidasResponse.ToList()); return(Ok(paginationResponse)); }