// CREATE ORDER

        public void CreateOrder(string username, decimal total, string paymentType)
        {
            using (var context = new EBContext())
            {
                var exists = (from x in context.ShoppingCarts
                              where x.OnlineCustomer.UserName.Equals(username)
                              select x).FirstOrDefault();
                if (exists == null)
                {
                    throw new Exception("Cart does not exist.");
                }
                else
                {
                    var itemsExist = (from x in exists.ShoppingCartItems
                                      select x).ToList();
                    if (itemsExist == null)
                    {
                        throw new Exception("Shopping cart is empty.");
                    }
                    else
                    {
                        Sale newSale = new Sale();
                        newSale.SaleDate     = DateTime.Now;
                        newSale.UserName     = username;
                        newSale.EmployeeID   = 10;
                        newSale.TaxAmount    = 0;
                        newSale.SubTotal     = total;
                        newSale.PaymentType  = paymentType;
                        newSale.PaymentToken = null;

                        newSale = context.Sales.Add(newSale);

                        foreach (ShoppingCartItem item in itemsExist)
                        {
                            SaleDetail newSaleItem = new SaleDetail();
                            newSaleItem.PartID   = item.PartID;
                            newSaleItem.Quantity = item.Quantity;

                            int partQty = (from x in context.Parts
                                           where x.PartID == item.PartID
                                           select x.QuantityOnHand).FirstOrDefault();
                            if (item.Quantity > partQty)
                            {
                                newSaleItem.Backordered = true;
                                newSaleItem.ShippedDate = null;
                            }
                            else
                            {
                                newSaleItem.Backordered = false;
                                newSaleItem.ShippedDate = DateTime.Now;

                                Part currentPart = context.Parts.Find(item.PartID);
                                currentPart.QuantityOnHand -= item.Quantity;

                                context.Parts.Attach(currentPart);

                                context.Entry(currentPart).State = EntityState.Modified;
                            }

                            newSale.SaleDetails.Add(newSaleItem);
                        }
                        context.SaveChanges();
                    }
                }
            }
        }