public IEnumerable<IResponse> AddressAndPayment(FormCollection values)
		{
			var order = new Order();
			TryUpdateModel(order);


			if (string.Equals(values["PromoCode"], PromoCode,
					StringComparison.OrdinalIgnoreCase) == false)
			{
				yield return View(order);
			}
			else
			{
				var invalid = false;
				try
				{
					order.Username = User.Identity.Name;
					order.OrderDate = DateTime.Now;

					//Save Order
					storeDB.Orders.Add(order);
					storeDB.SaveChanges();

					//Process the order
					var cart = ShoppingCart.Helper.GetCart(this.HttpContext);
					cart.CreateOrder(order);
				}
				catch
				{
					//Invalid - redisplay with errors
					invalid = true;
				}

				if (invalid)
				{
					yield return View(order);
				}
				else
				{
					yield return RedirectToAction("Complete",
						new { id = order.OrderId });
				}
			}

		}
Пример #2
0
		public int CreateOrder(Order order)
		{
			decimal orderTotal = 0;

			var cartItems = GetCartItems();

			// Iterate over the items in the cart, adding the order details for each
			foreach (var item in cartItems)
			{
				var orderDetail = new OrderDetail
				{
					AlbumId = item.AlbumId,
					OrderId = order.OrderId,
					UnitPrice = item.Album.Price,
					Quantity = item.Count
				};

				// Set the order total of the shopping cart
				orderTotal += (item.Count * item.Album.Price);

				storeDB.OrderDetails.Add(orderDetail);

			}

			// Set the order's total to the orderTotal count
			order.Total = orderTotal;

			// Save the order
			storeDB.SaveChanges();

			// Empty the shopping cart
			EmptyCart();

			// Return the OrderId as the confirmation number
			return order.OrderId;
		}