//Добавление экземпляров книги в корзину покупателя //Должна быть транзакция 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; }