Exemple #1
0
        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"));
            }
        }
Exemple #2
0
        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);
        }