コード例 #1
0
        public HttpResponseMessage GetSortedLibraryBooks()
        {
            var libraryService = new LibraryService();

            List<CategoryBookList> listOfCategories = new List<CategoryBookList>();

            foreach (LibraryBookCategory category in Enum.GetValues(typeof(LibraryBookCategory)))
            {
                IEnumerable<ILibraryBook> books = libraryService.AllBooks(category);
                List<ILibraryBook> bookList = books.ToList<ILibraryBook>();

                ILibraryBookFineCalculator calculator = new LibraryBookFineCalculator();

                //create the object you will return to the client
                string categoryString = category.ToString();
                CategoryBookList catBookList = new CategoryBookList(bookList, categoryString, calculator.CalculateTotalFine(DateTime.Now, bookList));
                listOfCategories.Add(catBookList);
            }

            return Request.CreateResponse(HttpStatusCode.OK, listOfCategories);
        }
コード例 #2
0
        public IList <CategoryCatalogueInfoDto> AllBooksSortedByCategory()
        {
            var booksSortedByCategories = new Dictionary <LibraryBookCategory, List <ILibraryBook> >();

            foreach (var book in _books)
            {
                if (!booksSortedByCategories.ContainsKey(book.Category))
                {
                    booksSortedByCategories.Add(book.Category, new List <ILibraryBook> {
                        book
                    });
                }
                else
                {
                    if (booksSortedByCategories.TryGetValue(book.Category, out var bookInCategory))
                    {
                        bookInCategory.Add(book);
                    }
                }
            }

            var fineCalculator = new LibraryBookFineCalculator();

            return(booksSortedByCategories.Select(entry => {
                entry.Value.Sort(new ILibraryComp());
                double totalFine = (double)fineCalculator.CalculateTotalFine(DateTime.Today, entry.Value) / 100;

                return
                new CategoryCatalogueInfoDto
                {
                    Category = entry.Key.ToString(),
                    Count = entry.Value.Count(),
                    FineTotal = totalFine,
                    Books = entry.Value
                };
            }).ToList());
        }