コード例 #1
0
        public ConcertsCount GetAllConcerts(int page, int size)
        {
            ConcertsCount result = new ConcertsCount();

            if (page > 0 && size > 0)
            {
                int offset = (page - 1) * size;
                result.concerts = new List <Concert>(_context.Concert.Skip(offset).Take(size));
            }
            else
            {
                result.concerts = new List <Concert>(_context.Concert);
            }
            result.count = _context.Concert.Count();
            return(result);
        }
コード例 #2
0
        public async Task <IActionResult> Get([FromQuery] int page, [FromQuery] int pageSize)
        {
            if (!Request.Headers.Keys.Any(p => p == "Authorization") ||
                !await _gateway.ValidateToken(Request.Headers["Authorization"].ToString()))
            {
                return(Unauthorized());
            }

            _logger.LogInformation("-> requested GET /concerts?page={page}&pageSize={pageSize}", page, pageSize);
            ConcertsCount concertsCount = await _gateway.GetConcerts(page, pageSize);

            List <Concert> concerts = concertsCount.concerts;
            int            count    = concertsCount.count;

            if (concerts != null)
            {
                List <ConcertRequest> fullconcerts = new List <ConcertRequest>();
                foreach (var concert in concerts)
                {
                    _logger.LogInformation($"-> request to GET /perfomers/{concert.PerfomerId}");
                    Perfomer perfomer = await _gateway.GetPerfomerById(concert.PerfomerId);

                    if (perfomer != null)
                    {
                        _logger.LogInformation("-> request to GET /venues/{0}", concert.VenueId);
                        Venue venue = await _gateway.GetVenueById(concert.VenueId);

                        //validate?
                        if (venue != null)
                        {
                            fullconcerts.Add(new ConcertRequest(concert.Id, perfomer.Name,
                                                                venue.Name, venue.Address, concert.Date));
                        }
                    }
                }
                _logger.LogInformation("-> GET /concerts?page={0}&pageSize={1} returned {2} concert(s)",
                                       page, pageSize, fullconcerts.Count);
                ConcertsPage concertsPage = new ConcertsPage(count, page, pageSize, fullconcerts);
                return(Ok(concertsPage));
            }
            _logger.LogInformation("-> GET /concerts : no concerts found");
            return(NoContent());
        }