Exemplo n.º 1
0
        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 });
        }
Exemplo n.º 2
0
        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;
        }