public List <int> addOrderItems(OrderReadModel OrderItem)
        {
            IHttpActionResult newOrderItem;
            List <int>        listOfOrderItemIDs = new List <int>();

            using (OrderSystemEntitiesCtx entities = new OrderSystemEntitiesCtx())
            {
                //for each item
                foreach (var item in OrderItem.Items)
                {
                    foreach (var extra in item.ExtraItems)
                    {
                        OrderItem currentOrderItem = new OrderItem()
                        {
                            ItemID  = item.ItemID,
                            ExtraID = extra.ExtraID
                        };
                        OrderItem createdOrderItem = entities.OrderItems.Add(currentOrderItem);
                        entities.SaveChanges();
                        newOrderItem = CreatedAtRoute("GetOrderItem", new
                        {
                            OrderItemID = currentOrderItem.OrderItemID
                        }, currentOrderItem);
                        listOfOrderItemIDs.Add(createdOrderItem.OrderItemID);
                    }
                }
            }
            return(listOfOrderItemIDs);
        }
        public IHttpActionResult CompleteOrder(OrderReadModel OrderItem) //give it a read model
        {
            IHttpActionResult newOrder;

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var listOfOrderItemIDs = this.addOrderItems(OrderItem);

            using (OrderSystemEntitiesCtx entities = new OrderSystemEntitiesCtx())
            {
                Order currentOrder = new Order()
                {
                    CustomerID = OrderItem.CustomerID,
                    Completed  = true,
                    Cancelled  = false,
                    TotalPrice = OrderItem.TotalPrice,
                    Tax        = OrderItem.TotalPrice - OrderItem.Price,
                    Date       = DateTime.Now,
                    MonthYear  = string.Format("{0:MMMM yyyy}", DateTime.Now)
                };
                entities.Orders.Add(currentOrder);

                entities.SaveChanges();
                newOrder = CreatedAtRoute("GetOrder", new
                {
                    OrderID = currentOrder.OrderID
                }, currentOrder);
                this.addOrderDetails(listOfOrderItemIDs, currentOrder.OrderID);
            }

            return(newOrder);
        }
 public void addOrderDetails(List <int> OrderItemIDs, int OrderID)
 {
     using (OrderSystemEntitiesCtx entities = new OrderSystemEntitiesCtx())
     {
         foreach (var item in OrderItemIDs)
         {
             OrderDetail currentOrderDetail = new OrderDetail()
             {
                 OrderID     = OrderID,
                 OrderItemID = item
             };
             OrderDetail createdOrderDetail = entities.OrderDetails.Add(currentOrderDetail);
         }
         entities.SaveChanges();
     }
 }
 public IHttpActionResult AddCustomer(Customer Customer)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest(ModelState));
     }
     using (OrderSystemEntitiesCtx entities = new OrderSystemEntitiesCtx())
     {
         entities.Customers.Add(Customer);
         entities.SaveChanges();
         return(CreatedAtRoute("GetCustomer", new
         {
             CustomerID = Customer.CustomerID
         }, Customer));
     }
 }