示例#1
0
        //Добавление экземпляров книги в корзину покупателя
        //Должна быть транзакция
        public bool AddBookItem(Basket basket, BasketItem basketItem)
        {
            Int32 allBasketItemCount;
            Book book;
            BookVariableInfo bookVariableInfo, newBookVariableInfo;
            BasketRepository basketRepository;

            if (basket != null && basketItem != null)
            {
                if (basket.BasketItems == null)
                    basket.BasketItems = new List<BasketItem>();
                bookVariableInfo = (BookVariableInfo)
                    base._bookVariableInfoRepository.FindById(
                        basketItem.BookVariableInfoId);
                book = (Book)this._bookRepository.FindById(bookVariableInfo.Id);

                //Валидация. Общее число заказанного товара не должно быть >= имеющегося числа
                allBasketItemCount = BasketItemCounting(basketItem);
                if (allBasketItemCount + basketItem.ItemCount >
                    bookVariableInfo.ProductCount)
                    return false;
                //Добавление заказанной книги
                basketItem.BasketId = basket.Id;
                basketItem.Amount =
                    bookVariableInfo.Price * basketItem.ItemCount;
                base._basketItemRepository.Add(basketItem);

                //Обновление корзины
                basket.TotalAmount += basketItem.Amount;
                basketRepository = new BasketRepository();
                basketRepository.Edit(basket);

                return true;
            }
            else
            {
                throw new Exception("Корзина или элемент корзины не заданы!");
            }

            return false;
        }