Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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));
        }