Exemple #1
0
        private Prize PrizeSomeBooks(CollectionBooks bookList, Prize price = null)
        {
            if (price == null)
            {
                price = new Prize(0);
            }

            if (bookList == null || !bookList.Any())
            {
                return(price);
            }

            //separamos los libros en lista de libros distintos
            var newBookCol = new CollectionBooks();

            foreach (var book in bookList.GetCollectionBooks())
            {
                if (!newBookCol.HasBook(book))
                {
                    newBookCol.AddBook(book.Clone());
                }
            }

            //aplicamos el descuento a un grupo de libros distintos
            ApplyDiscount(newBookCol, _colDiscountRules);

            //sumamos los precios de los libros con los descuentos
            price = price.AddPriceBook(newBookCol.SumPrize());

            //eliminamos los libros que ya hemos procesado
            var colRemovedProcesed = bookList.RemoveCollection(newBookCol);

            //recursividad con libros que faltan por procesar y el precio acumulado
            return(PrizeSomeBooks(colRemovedProcesed, price));
        }
Exemple #2
0
        public Prize PrizeBooks(CollectionBooks bookList)
        {
            if (bookList.Any())
            {
                return(PrizeSomeBooks(bookList));
            }

            return(new Prize(0));
        }