public SeriesBookLists GetById(int seriesId, int numberOfComics) { // TODO: Limit number of comics fetched // TODO: If number of comics = 0 just get series details var seriesWithBooks = _repository.GetSeriesWithBooks(seriesId); var series = new SeriesBookLists { Id = seriesWithBooks.Summary.Id, Title = seriesWithBooks.Summary.Title }; if (numberOfComics == 0) { return(series); } var bookTypes = seriesWithBooks.BookTypes .ToDictionary(t => t.Id, t => new { Name = t.Name, Enabled = t.Enabled }); series.BookLists = seriesWithBooks.Books .GroupBy(b => b.BookTypeID) .Select(g => new BookList { TypeId = g.Key, TypeName = bookTypes[g.Key].Name, TotalBooks = g.Count(), Home = bookTypes[g.Key].Enabled, Books = g.OrderByDescending(c => c.Number) .Take(numberOfComics) .Select(b => _mapper.Map(b)) .ToArray() }) .ToArray(); return(series); }