예제 #1
0
        public async Task <IActionResult> GetAll([FromQuery] PaginacaoQuery pagination)
        {
            var quadrasResponse = CacheServico
                                  .GetCachedResponse <IReadOnlyList <QuadraResponse> >(
                ApiRotas.Quadra.GetAll);

            if (quadrasResponse is null)
            {
                var quadra = await _quadraServico
                             .ObterQuadrasAsync(pagination);

                quadrasResponse = Mapper
                                  .Map <IReadOnlyList <QuadraResponse> >(quadra);

                CacheServico.SetCacheResponse(
                    ApiRotas.Quadra.GetAll,
                    quadrasResponse,
                    TimeSpan.FromMinutes(2));
            }

            if (pagination == null || pagination.NumeroPagina < 1 || pagination.QuantidadePagina < 1)
            {
                return(Ok(new PagedResponse <QuadraResponse>(quadrasResponse)));
            }

            var paginationResponse = PaginationHelpers
                                     .CriarRespostaPaginada(UriServico, pagination, quadrasResponse.ToList());

            return(Ok(paginationResponse));
        }
예제 #2
0
        public async Task <IActionResult> GetAll([FromQuery] PaginacaoQuery pagination, [FromServices] IUriServico uriServico)
        {
            var usuariosResponse = CacheServico
                                   .GetCachedResponse <IReadOnlyList <UsuarioResponse> >(
                ApiRotas.Usuario.GetAll);

            if (usuariosResponse is null)
            {
                var usuarios = await _usuarioServico
                               .ObterUsuariosAsync(pagination);

                usuariosResponse = Mapper
                                   .Map <IReadOnlyList <UsuarioResponse> >(usuarios);

                CacheServico.SetCacheResponse(
                    ApiRotas.Usuario.GetAll,
                    usuariosResponse,
                    TimeSpan.FromMinutes(2));
            }

            if (pagination == null || pagination.NumeroPagina < 1 || pagination.QuantidadePagina < 1)
            {
                return(Ok(new PagedResponse <UsuarioResponse>(usuariosResponse)));
            }

            var paginationResponse = PaginationHelpers
                                     .CriarRespostaPaginada(uriServico, pagination, usuariosResponse.ToList());

            return(Ok(paginationResponse));
        }
예제 #3
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());
        }
예제 #4
0
 public ObterUsuariosTeste(CustomWebApplicationFactory factory,
                           ITestOutputHelper output) : base(factory, output)
 {
     _pagination = new PaginacaoQuery
     {
         NumeroPagina     = 1,
         QuantidadePagina = 10
     };
 }
예제 #5
0
        public async Task <IReadOnlyList <QuadraModel> > ObterQuadrasAsync(PaginacaoQuery pagination = null)
        {
            var obterQuadrasQuery = new ObterQuadrasQuery {
            };

            var quadras = await _mediator
                          .Send(obterQuadrasQuery);

            var skip = (pagination.NumeroPagina - 1) * pagination.QuantidadePagina;

            return(quadras
                   .Skip(skip)
                   .Take(pagination.QuantidadePagina)
                   .ToList());
        }
예제 #6
0
        public static PagedResponse <T> CriarRespostaPaginada <T>(IUriServico uriServico, PaginacaoQuery pagination, List <T> response)
        {
            var nextPage = pagination.NumeroPagina >= 1
                ? uriServico.GetAllUri(pagination.NumeroPagina + 1, pagination.QuantidadePagina).ToString()
                : null;

            var previousPage = pagination.NumeroPagina - 1 >= 1
                ? uriServico.GetAllUri(pagination.NumeroPagina - 1, pagination.QuantidadePagina).ToString()
                : null;

            return(new PagedResponse <T>
            {
                Dados = response,
                NumeroPagina = pagination.NumeroPagina >= 1 ? pagination.NumeroPagina : (int?)null,
                QuantidadePagina = pagination.QuantidadePagina >= 1 ? pagination.QuantidadePagina : (int?)null,
                ProximaPagina = response.Any() ? nextPage : null,
                PaginaAnterior = previousPage
            });
        }