public async Task <IActionResult> GetBirdsAsync(int pageIndex, int pageSize, BirderStatus speciesFilter) { try { var birds = await _birdRepository.GetBirdsAsync(pageIndex, pageSize, speciesFilter); if (birds is null) { _logger.LogWarning(LoggingEvents.GetListNotFound, "Birds list is null"); return(StatusCode(500, $"bird repository returned null")); } var viewModel = _mapper.Map <QueryResult <Bird>, BirdsListDto>(birds); return(Ok(viewModel)); } catch (Exception ex) { _logger.LogError(LoggingEvents.GetListNotFound, ex, "An error occurred getting the birds list"); return(StatusCode(500, "an unexpected error occurred")); } }
public async Task <QueryResult <Bird> > GetBirdsAsync(int pageIndex, int pageSize, BirderStatus speciesFilter) { var result = new QueryResult <Bird>(); var query = _dbContext.Birds .Include(u => u.BirdConservationStatus) .AsNoTracking() .AsQueryable(); if (speciesFilter == BirderStatus.Common) { query = query.Where(bs => bs.BirderStatus == BirderStatus.Common); } query = query.OrderBy(s => s.BirderStatus) .ThenBy(n => n.EnglishName); result.TotalItems = await query.CountAsync(); query = query.ApplyPaging(pageIndex, pageSize); result.Items = await query.ToListAsync(); return(result); }