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; }