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); }
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()); }