/// <summary>
        /// Handles the PostAcquireRequestState event of the context control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        void context_PostAcquireRequestState(object sender, EventArgs e)
        {
            if (IsResourceFile() || IsWebApi)
                return;

            var application = (HttpApplication)sender;
            var context = application.Context;

            var session = CustomerSession;
            Populate(context, session);

            //Price list can only be evaluated after all customer tagsets are ready
            var priceListHelper = DependencyResolver.Current.GetService<PriceListClient>();
            var priceLists = priceListHelper.GetPriceListStack(session.CatalogId, session.Currency, session.GetCustomerTagSet());
            session.Pricelists = priceLists;

            //Update prices in current currency
            var helper = new CartHelper(CartHelper.CartName);
            if (!helper.IsEmpty && 
                !string.IsNullOrEmpty(session.Currency) && 
                !string.IsNullOrEmpty(helper.Cart.BillingCurrency) && 
                session.Currency != helper.Cart.BillingCurrency)
            {
                helper.RunWorkflow("ShoppingCartValidateWorkflow");
                helper.SaveChanges();
            }


        }
        public IHttpActionResult EstimatePost(ShippingEstimateModel shippingEstimateModel)
        {
            if (ModelState.IsValid)
            {
                var helper = new CartHelper(CartHelper.CartName);

                //Find best shipping method
	            var store = StoreHelper.StoreClient.GetCurrentStore();
	            var storeShippingMethods = helper.ShippingClient.GetAllShippingMethods()
					  .Where(sm => sm.PaymentMethodShippingMethods.Select(x => x.PaymentMethod)
		                   .Any(pm => store.PaymentGateways.Any(pg => pg.PaymentGateway == pm.Name)))
						   .Select(s=>s.ShippingMethodId).ToList();
				var bestShipping = helper.GetShippingMethods(storeShippingMethods).Min();

                //Update line items
                foreach (var lineItem in helper.OrderForm.LineItems)
                {
                    lineItem.ShippingMethodId = bestShipping.Id;
                    lineItem.ShippingMethodName = bestShipping.DisplayName;
                }

                // run workflow
                helper.RunWorkflow("ShoppingCartPrepareWorkflow");
                helper.SaveChanges();

                return Ok(bestShipping);
            }

            return BadRequest();
        }
Ejemplo n.º 3
0
        public HttpResponseMessage EstimatePost(ShippingEstimateModel shippingEstimateModel)
        {
            if (ModelState.IsValid)
            {
                var helper = new CartHelper(CartHelper.CartName);

                //Find best shipping method
	            var store = StoreHelper.StoreClient.GetCurrentStore();
	            var storeShippingMethods = helper.ShippingClient.GetAllShippingMethods()
					  .Where(sm => sm.PaymentMethodShippingMethods.Select(x => x.PaymentMethod)
		                   .Any(pm => store.PaymentGateways.Any(pg => pg.PaymentGateway == pm.Name)))
						   .Select(s=>s.ShippingMethodId).ToList();
				var bestShipping = helper.GetShippingMethods(storeShippingMethods).Min();

                //Update line items
                foreach (var lineItem in helper.OrderForm.LineItems)
                {
                    lineItem.ShippingMethodId = bestShipping.Id;
                    lineItem.ShippingMethodName = bestShipping.DisplayName;
                }

                // run workflow
                helper.RunWorkflow("ShoppingCartPrepareWorkflow");
                helper.SaveChanges();

                var response = Request.CreateResponse(HttpStatusCode.OK);
                var bShippingJson = System.Web.Helpers.Json.Encode(bestShipping);
                response.Content = new StringContent(bShippingJson);
                return response;
            }

            return Request.CreateResponse(HttpStatusCode.BadRequest);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Saves the cart changes.
        /// </summary>
        /// <param name="helper">The helper.</param>
        /// <returns>Dictionary of errors if any.</returns>
        private Dictionary<string, string> SaveChanges(CartHelper helper)
        {
            if (helper.Cart.Name != CartHelper.CartName)
            {
                _catalogClient.CustomerSession["SkipRewards"] = true;
            }

            var errors = new Dictionary<string, string>();
            if (helper.Cart.Name == CartHelper.CartName)
            {
                var result = helper.RunWorkflow("ShoppingCartValidateWorkflow");

                if (result.WorkflowResult.Warnings != null)
                {
                    foreach (var warning in result.WorkflowResult.Warnings.Distinct())
                    {
                        errors.Add(warning.Code, warning.Parameters["Message"]);
                    }
                }
            }

            helper.SaveChanges();
            return errors;
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Reorders the specified order.
        /// </summary>
        /// <param name="orderId">The order identifier.</param>
        /// <returns>ActionResult.</returns>
        /// <exception cref="System.UnauthorizedAccessException"></exception>
        public ActionResult Reorder(string orderId)
        {
            var order = _orderClient.GetCustomerOrder(UserHelper.CustomerSession.CustomerId, orderId);
            if (order == null || String.IsNullOrEmpty(order.CustomerId))
            {
                throw new UnauthorizedAccessException();
            }

            //Convert order forms to shopping cart
            order.OrderForms.ForEach(f=>f.Name = CartHelper.CartName);

            var ch = new CartHelper(CartHelper.CartName);
            ch.Add(order);

            if (String.IsNullOrEmpty(ch.Cart.BillingCurrency))
            {
                ch.Cart.BillingCurrency = UserHelper.CustomerSession.Currency;
            }

            // run workflows
            ch.RunWorkflow("ShoppingCartPrepareWorkflow");

            ch.SaveChanges();

            return RedirectToAction("Index", "Checkout");
        }
        /// <summary>
        /// Saves the cart changes.
        /// </summary>
        /// <param name="helper">The helper.</param>
        /// <returns>Dictionary of errors if any.</returns>
        private Dictionary<string, string> SaveChanges(CartHelper helper)
        {
            if (helper.Cart.Name != CartHelper.CartName)
            {
                _catalogClient.CustomerSession["SkipRewards"] = true;
            }

            var errors = new Dictionary<string, string>();
            if (helper.Cart.Name == CartHelper.CartName)
            {
                //Need to prepare cart because shipment rates could chaange after items added/removed
                //var result = helper.RunWorkflow("ShoppingCartPrepareWorkflow");
                var result = helper.RunWorkflow("ShoppingCartValidateWorkflow");

                if (result.WorkflowResult.Warnings != null)
                {
                    foreach (var warning in result.WorkflowResult.Warnings.Distinct())
                    {
                        errors.Add(warning.Code, warning.Parameters["Message"]);
                    }
                }
            }

            helper.SaveChanges();
            return errors;
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Saves the cart changes.
        /// </summary>
        /// <param name="helper">The helper.</param>
        /// <returns>Dictionary of errors if any.</returns>
        private Dictionary<string, string> SaveChanges(CartHelper helper)
        {
            if (helper.Cart.Name != CartHelper.CartName)
            {
                _catalogClient.CustomerSession["SkipRewards"] = true;
            }

            var errors = new Dictionary<string, string>();
            if (helper.Cart.Name == CartHelper.CartName)
            {

                helper.RunWorkflow("ShoppingCartValidateWorkflow", errors);
            }

            helper.SaveChanges();
            return errors;
        }