public void EditBookQuantityInBasket(Book currentBook, User currUser, int currQty, int newCount)
        {
            Basket currBasket = currUser.Basket;

            BasketBook bookInBasket = new BasketBook()
            {
                Basket = currBasket,
                Book   = currentBook
            };

            int difference = 0;

            if (newCount > currQty)
            {
                difference = newCount - currQty;

                for (int i = 0; i < difference; i++)
                {
                    this.Context.BasketsBooks.Add(bookInBasket);
                    this.Context.SaveChanges();
                }

                currentBook.Quantity  -= difference;
                currBasket.TotalPrice += this.CheckCurrentBookPrice(currentBook) * difference;
                currBasket.Discount    = this.CheckDiscount(currBasket.TotalPrice, currUser.MoneySpentBalance);
            }

            if (newCount < currQty)
            {
                difference = currQty - newCount;
                //var editedBooks = Enumerable.Repeat(bookInBasket, newCount).ToList();
                var currBasketBooks = this.Context.BasketsBooks
                                      .Where(b => b.Basket.Id == currBasket.Id && b.Book.Id == currentBook.Id);
                this.Context.BasketsBooks.RemoveRange(currBasketBooks);
                for (int i = 0; i < newCount; i++)
                {
                    this.Context.BasketsBooks.Add(bookInBasket);
                    this.Context.SaveChanges();
                }

                currBasket.TotalPrice -= this.CheckCurrentBookPrice(currentBook) * difference;
                currBasket.Discount    = this.CheckDiscount(currBasket.TotalPrice, currUser.MoneySpentBalance);
                currentBook.Quantity  += difference;
            }

            this.Context.SaveChanges();
        }
        public void AddBookToBasket(User currUser, Book currBook)
        {
            Basket currBasket = currUser.Basket;

            if (currBasket == null)
            {
                Basket basket = new Basket()
                {
                    Owner      = currUser,
                    TotalPrice = this.CheckCurrentBookPrice(currBook),
                    Discount   = this.CheckDiscount(currBook.Price, currUser.MoneySpentBalance)
                };

                this.Context.BasketsBooks.Add(new BasketBook()
                {
                    Basket = basket,
                    Book   = currBook
                });
            }
            else
            {
                currBasket.TotalPrice += this.CheckCurrentBookPrice(currBook);
                currBasket.Discount    = this.CheckDiscount(currBasket.TotalPrice, currUser.MoneySpentBalance);
                var newBook = new BasketBook()
                {
                    Basket = currBasket,
                    Book   = currBook
                };

                this.Context.BasketsBooks.Add(newBook);
            }
            if (currBook.Quantity > 0)
            {
                currBook.Quantity--;
            }

            this.Context.SaveChanges();
        }
示例#3
0
        public float PostBasket([FromBody] ShoppingBasketRequest request)
        {
            BasketBook basketBook = new BasketBook(request.shoppingBasket, request.discountAvailable, request.unitPrice);

            return(basketBook.CalculateBasketCost());
        }