private ShoppingCartModel GetCart()
 {
     ShoppingCartModel cart = (ShoppingCartModel)Session["Cart"];
     if (cart == null)
     {
         cart = new ShoppingCartModel();
         Session["Cart"] = cart;
     }
     return cart;
 }
        public bool ProcessOrder(AddressModel address, ContactModel contact, ShoppingCartModel cart, int paymentId, int deliveryId, string comment)
        {
            var dbAddress = GetAddressByStreet(address);
            var dbContact = GetContactBySocialSecurityNumber(dbAddress, contact);
            var dbPaymentType = GetPaymentTypeById(paymentId);
            var dbDeliveryType = GetDeliveryTypeById(deliveryId);

            using (var transaction = context.Database.BeginTransaction())
            {
                try
                {
                    var order = new Order
                    {
                        Address = dbContact.Address,
                        Contact = dbContact,
                        OrderNumber = System.Guid.NewGuid().ToString(),
                        DeliveryType = dbDeliveryType,
                        PaymentType = dbPaymentType,
                        TotalPrice = cart.GetCartTotal(),
                        OrderDate = DateTime.Now,
                        Comment = comment,

                    };
                    context.Orders.Add(order);
                    context.SaveChanges();

                    foreach (var item in cart.Items)
                    {
                        if (item.Quantity <= item.Book.QuantityInStock)
                        {
                            var orderDetail = new OrderDetail
                            {
                                OrderId = order.Id,
                                Book = GetBookById(item.Book.Id),
                                QuantityOrdered = item.Quantity,

                            };
                            context.OrderDetails.Add(orderDetail);
                            var bookBought = context.Books.Find(item.Book.Id);
                            bookBought.QuantityInStock -= item.Quantity;

                        }
                        else
                        {
                            transaction.Rollback();
                            return false;
                        }

                    }
                    context.SaveChanges();
                    transaction.Commit();
                    return true;

                }

                catch(Exception E)
                {

                }

            }
            return true;
        }