public ActionResult CreateOrder(CreateOrderModel createOrderModel) { var unitOfWork = MainKernel.Kernel.Get<IUnitOfWork>(); var product = unitOfWork.Products.SingleOrDefault(p => p.Enabled && p.Active && p.Id == createOrderModel.ProductId); if (product != null && ModelState.IsValid) { var orderProcessor = MainKernel.Kernel.Get<IOrderProcessor>(); var orderData = new OrderData() { Email = createOrderModel.Email, Name = createOrderModel.Name, DeliveryAddress = createOrderModel.DeliveryAddress, Note = createOrderModel.Note, PaymentMethod = createOrderModel.PaymentMethod, ShipmentMethod = createOrderModel.ShipmentMethod, Product = product, }; var createdOrder = orderProcessor.ProcessOrder(orderData); return RedirectToAction("OrderConfirmation", new { orderId = createdOrder.Id }); } return RedirectToAction("Detail", new { id = createOrderModel.ProductId }); }
public Order ProcessOrder(OrderData orderData) { decimal totalPrice = _totalPriceCalculator.CalculateTotalPrice(orderData.Product.Price, orderData.ShipmentMethod, orderData.PaymentMethod); DateTime now = DateTime.Now; string orderNumber = "" + now.Year + now.Month + now.Day + now.Hour + now.Minute + now.Second + now.Millisecond; var order = new Order() { UniqueNumber = orderNumber, Name = orderData.Name, Email = orderData.Email, DeliveryAddress = orderData.DeliveryAddress, ShipmentMethod = orderData.ShipmentMethod, PaymentMethod = orderData.PaymentMethod, Note = orderData.Note, TotalPrice = totalPrice, Product = orderData.Product, Created = DateTime.Now, }; _unitOfWork.CreateOrder(order); SendEmailToCustomer(order); SendEmailToAdmin(order); return order; }