示例#1
0
        public async Task <AlbumsSelectionResult> GetAllAlbums(AlbumsSelectionParameters parameters)
        {
            var query = _applicationDbContext.Albums.Include(x => x.Genre)
                        .Where(x => (string.IsNullOrEmpty(parameters.Name) || x.Name.ToUpper().Contains(parameters.Name.ToUpper())) &&
                               (parameters.MinPrice == null || x.Price >= parameters.MinPrice) &&
                               (parameters.MaxPrice == null || x.Price <= parameters.MaxPrice) &&
                               ((parameters.GenreId == null || parameters.GenreId == 0) || x.Genre.Id == parameters.GenreId));
            var itemsCount = await query.CountAsync();

            var sortType = SortingType.NotSelected;

            if (parameters.SortingType != null)
            {
                sortType = (SortingType)parameters.SortingType;
            }
            switch (sortType)
            {
            case SortingType.ByName:
                query.OrderBy(x => x.Name);
                break;

            case SortingType.ByPrice:
                query.OrderBy(x => x.Price);
                break;

            default:
                query.OrderBy(x => x.Id);
                break;
            }
            var albums = await query.Skip(parameters.ItemsCount *(parameters.PageNumber - 1))
                         .Take(parameters.ItemsCount).ToListAsync();

            return(new AlbumsSelectionResult(itemsCount, albums));
        }
示例#2
0
 public async Task <AlbumsSelectionResult> GetAllAlbums(AlbumsSelectionParameters parameters)
 {
     try
     {
         return(await _albumsDALService.GetAllAlbums(parameters));
     }
     catch (Exception ex)
     {
         _logService.Log(LogLevel.Error, ex, "Произошла ошибка в AlbumsService");
         return(new AlbumsSelectionResult(0, new List <Album>()));
     }
 }
 public async Task <AlbumsSelectionResult> GetAllAlbums([FromQuery] AlbumsSelectionParameters parameters)
 {
     return(await _albumsService.GetAllAlbums(parameters));
 }