コード例 #1
0
        public bool Checkout(Order order)
        {
            var listCart = _cartRepository.GetCart(order.CustomerID);

            order.OrderStatusId = _orderStatusRepository.GetByName("Pending").Id;
            if (listCart.Count == 0)
            {
                return(false);
            }

            _orderRepository.Add(order);
            if (!_orderRepository.Save())
            {
                return(false);
            }
            decimal totalCost = 0;

            foreach (var cart in listCart)
            {
                var menuItem    = _menuItemRepository.Get(cart.MenuItemId.Value);
                var orderDetail = new OrderDetail()
                {
                    OrderId    = order.Id,
                    MenuItemId = menuItem.Id,
                    UnitCost   = menuItem.Price.Value,
                    Quantity   = cart.Count.Value,
                };
                totalCost += menuItem.Price.Value * cart.Count.Value;
                _cartRepository.Delete(cart);
                _orderDetailsRepository.Add(orderDetail);
            }
            order.Total = totalCost;

            _cartRepository.Save();
            _orderDetailsRepository.Save();
            order.Total = totalCost;
            return(_orderRepository.Update(order));
        }