Example #1
0
        public static void ProcessOrder()
        {
            CatalogManager catalogManager = CatalogManager.GetManager();
            OrdersManager  ordersManager  = OrdersManager.GetManager();

            Product product = catalogManager.GetProducts().Where(p => p.Title == ExistingProductTitle &&

                                                                 p.Status == ContentLifecycleStatus.Live).FirstOrDefault();


            CartOrder cartOrder = ordersManager.CreateCartOrder();

            cartOrder.OrderDate   = DateTime.Now;
            cartOrder.OrderStatus = OrderStatus.Pending;

            int orderNumber = ordersManager.GetOrders().LastOrDefault().OrderNumber + 1;

            cartOrder.OrderNumber   = orderNumber;
            cartOrder.OrderDate     = DateTime.Now;
            cartOrder.LastModified  = DateTime.Now;
            cartOrder.OrderAttempts = 0;

            var currency = Config.Get <EcommerceConfig>().DefaultCurrency;

            cartOrder.Currency = currency;

            Customer customer = ordersManager.GetCustomers().Where(c => c.CustomerFirstName == ExistingCustomerFirstName).FirstOrDefault();

            cartOrder.UserId = customer.Id;

            CartDetail orderDetail = new CartDetail();

            orderDetail.Id               = Guid.NewGuid();
            orderDetail.ProductId        = product.Id;
            orderDetail.Quantity         = 1;
            orderDetail.ProductAvailable = true;
            orderDetail.Price            = product.Price;
            orderDetail.IsShippable      = true;
            cartOrder.Details.Add(orderDetail);

            CheckoutState state = UpdateCheckoutState(customer, ordersManager, cartOrder);

            ordersManager.SaveChanges();

            EcommerceOrderCalculator calculator = new EcommerceOrderCalculator();

            calculator.CalculateAndSaveChanges(cartOrder);

            ordersManager.Checkout(cartOrder.Id, state, customer);
            ordersManager.SaveChanges();
            catalogManager.SaveChanges();
        }
        internal static Tuple<bool, IPaymentResponse> PlaceOrder(OrdersManager ordersManager, CatalogManager catalogManager, UserManager userManager, RoleManager roleManager, UserProfileManager userProfileManager, CheckoutState checkoutState, Guid cartOrderId)
        {
            CartOrder cartOrder = ordersManager.GetCartOrder(cartOrderId);
            cartOrder.Addresses.Clear();
            cartOrder.Payments.Clear();

            //set the default currency of the order
            string defaultCurrency = Config.Get<EcommerceConfig>().DefaultCurrency;
            cartOrder.Currency = defaultCurrency;

            // set the shipping address
            CartAddress shippingAddress = CartHelper.GetShippingAddressFromCheckoutState(ordersManager, checkoutState);

            cartOrder.Addresses.Add(shippingAddress);

            // set the billing address
            CartAddress billingAddress = CartHelper.GetBillingAddressFromCheckoutState(ordersManager, checkoutState);

            cartOrder.Addresses.Add(billingAddress);

            //Get the first payment method in the shop

            // set the payment
            CartPayment payment = CartHelper.GetCartPaymentFromCheckoutState(ordersManager, checkoutState);

            cartOrder.Payments.Add(payment);

            ordersManager.SaveChanges();

            // Get current customer or create new one

            Customer customer = UserProfileHelper.GetCustomerInfoOrCreateOneIfDoesntExsist(userProfileManager,ordersManager, checkoutState);

            // Save the customer address
            CustomerAddressHelper.SaveCustomerAddressOfCurrentUser(checkoutState, customer);

            //Use the API to checkout
            IPaymentResponse paymentResponse = ordersManager.Checkout(cartOrderId, checkoutState, customer);

            // record the "success" state of the checkout
            checkoutState.IsPaymentSuccessful = paymentResponse.IsSuccess;

            Order order = ordersManager.GetOrder(cartOrderId);

            //Increment the order
            IncrementOrderNumber(ordersManager, order);

            // add the order to customer
            customer.Orders.Add(order);

            // Update the order
            order.Customer = customer;

            ordersManager.SaveChanges();

            if (!paymentResponse.IsSuccess)
            {
                return new Tuple<bool, IPaymentResponse>(false, paymentResponse);
            }

            if (order.OrderStatus == OrderStatus.Paid)
            {
                UserProfileHelper.AssignCustomerToRoles(userManager, roleManager, catalogManager, SecurityManager.GetCurrentUserId(), order);
                EmailHelper.SendOrderPlacedEmailToClientAndMerchant(cartOrder, checkoutState, order.OrderNumber);
            }

            return new Tuple<bool, IPaymentResponse>(true, paymentResponse);
        }
Example #3
0
        internal static IPaymentResponse PlaceOrder(OrdersManager ordersManager, CatalogManager catalogManager, UserManager userManager, RoleManager roleManager, UserProfileManager userProfileManager, CheckoutState checkoutState, Guid cartOrderId)
        {
            CartOrder cartOrder = ordersManager.GetCartOrder(cartOrderId);

            cartOrder.Addresses.Clear();
            cartOrder.Payments.Clear();

            //set the default currency of the order
            string defaultCurrency = Config.Get <EcommerceConfig>().DefaultCurrency;

            cartOrder.Currency = defaultCurrency;

            // set the shipping address
            CartAddress shippingAddress = CartHelper.GetShippingAddressFromCheckoutState(ordersManager, checkoutState);

            cartOrder.Addresses.Add(shippingAddress);

            // set the billing address
            CartAddress billingAddress = CartHelper.GetBillingAddressFromCheckoutState(ordersManager, checkoutState);

            cartOrder.Addresses.Add(billingAddress);

            //Get the first payment method in the shop

            // set the payment
            CartPayment payment = CartHelper.GetCartPaymentFromCheckoutState(ordersManager, checkoutState);

            cartOrder.Payments.Add(payment);

            ordersManager.SaveChanges();


            // Get current customer or create new one

            Customer customer = UserProfileHelper.GetCustomerInfoOrCreateOneIfDoesntExsist(userProfileManager, ordersManager, checkoutState);

            // Save the customer address
            CustomerAddressHelper.SaveCustomerAddressOfCurrentUser(checkoutState, customer);

            //Use the API to checkout
            IPaymentResponse paymentResponse = ordersManager.Checkout(cartOrderId, checkoutState, customer);

            // record the "success" state of the checkout
            checkoutState.IsPaymentSuccessful = paymentResponse.IsSuccess;

            Order order = ordersManager.GetOrder(cartOrderId);

            //Increment the order
            IncrementOrderNumber(ordersManager, order);

            // add the order to customer
            customer.Orders.Add(order);

            // Update the order
            order.Customer = customer;

            ordersManager.SaveChanges();

            if (order.OrderStatus == OrderStatus.Paid)
            {
                UserProfileHelper.AssignCustomerToRoles(userManager, roleManager, catalogManager, SecurityManager.GetCurrentUserId(), order);
                EmailHelper.SendOrderPlacedEmailToClientAndMerchant(cartOrder, checkoutState, order.OrderNumber);
            }

            return(paymentResponse);
        }