Exemplo n.º 1
0
        /// <summary>
        /// To create the order
        /// </summary>
        /// <returns>order details</returns>
        public async Task <OrderDetails> PlaceOrder()
        {
            if (BookCart == null || BookCart.BookCartItems.IsEmpty())
            {
                throw new DataException("Cart is empty");
            }

            var orderDetails = new OrderDetails()
            {
                PurchasedBooks  = new List <BookCartItem>(),
                NotInStockBooks = new List <BookCartItem>()
            };

            // Get available book list
            var availableBooks = await new BookStoreHelper().GetAllBooks();

            availableBooks = availableBooks.Where(b => b.InStock > 0).ToList();

            // Loop through the cart items which is having quantity greater than '0'
            BookCart.BookCartItems.Where(item => item.Quantity > 0).ForEach(item =>
            {
                // check for the stock
                var availableBook = availableBooks.FirstOrDefault(b => b.ID == item.Book.ID && b.InStock > 0);
                if (availableBook != null)
                {
                    if (availableBook.InStock < item.Quantity)
                    {
                        orderDetails.NotInStockBooks.Add(new BookCartItem {
                            Book = item.Book, Quantity = item.Quantity - availableBook.InStock
                        });
                        item.Quantity = availableBook.InStock;
                    }

                    orderDetails.PurchasedBooks.Add(item);
                    availableBook.UpdateInStock(availableBook.InStock - item.Quantity);
                }
                else
                {
                    orderDetails.NotInStockBooks.Add(item);
                }
            });

            orderDetails.TotalPrice = (from item in orderDetails.PurchasedBooks
                                       select item.Quantity * item.Book.Price).Sum();

            orderDetails.TotalQuantity = (from item in orderDetails.PurchasedBooks
                                          select item.Quantity).Sum();

            // clear the cart
            BookCart.Clear();

            Orders.Add(orderDetails);

            return(orderDetails);
        }
Exemplo n.º 2
0
 /// <summary>
 /// Default Constructor
 /// </summary>
 /// <param name="Id">user Id</param>
 public Customer(string Id)
 {
     ID       = Id.SafeToUpper().SafeTrim();
     BookCart = new BookCart();
     Orders   = new List <OrderDetails>();
 }