Пример #1
0
        // using on OrderDetail page
        public ActionResult LoadOrder(int orderLink)
        {
            var success       = false;
            var purchaseOrder = _orderRepository.Load <IPurchaseOrder>(orderLink);

            DateTime.TryParse(purchaseOrder.Properties[Constant.Quote.QuoteExpireDate].ToString(), out var quoteExpireDate);
            if (DateTime.Compare(DateTime.Now, quoteExpireDate) > 0)
            {
                return(Json(new { success }));
            }

            if (CartWithValidationIssues.Cart != null && CartWithValidationIssues.Cart.OrderLink != null)
            {
                _orderRepository.Delete(CartWithValidationIssues.Cart.OrderLink);
            }

            _cart = new CartWithValidationIssues
            {
                Cart             = _cartService.CreateNewCart(),
                ValidationIssues = new Dictionary <ILineItem, List <ValidationIssue> >()
            };
            var returnedCart = _cartService.PlaceOrderToCart(purchaseOrder, _cart.Cart);

            returnedCart.Properties[Constant.Quote.ParentOrderGroupId] = purchaseOrder.OrderLink.OrderGroupId;
            _orderRepository.Save(returnedCart);

            var referenceSettings = _settingsService.GetSiteSettings <ReferencePageSettings>();

            _cartService.ValidateCart(returnedCart);
            return(Json(new { link = _urlResolver.GetUrl(referenceSettings?.CheckoutPage ?? ContentReference.StartPage) }));
        }
        public ActionResult RequestQuote(CartPage currentPage)
        {
            bool succesRequest;

            if (CartWithValidationIssues.Cart == null)
            {
                _cart = new CartWithValidationIssues
                {
                    Cart             = _cartService.LoadOrCreateCart(_cartService.DefaultCartName),
                    ValidationIssues = new Dictionary <ILineItem, List <ValidationIssue> >()
                };
                succesRequest = _cartService.PlaceCartForQuote(_cart.Cart);
            }
            else
            {
                succesRequest = _cartService.PlaceCartForQuote(CartWithValidationIssues.Cart);
            }

            if (succesRequest)
            {
                _cartService.DeleteCart(_cart.Cart);
                _cart = new CartWithValidationIssues
                {
                    Cart             = _cartService.CreateNewCart(),
                    ValidationIssues = new Dictionary <ILineItem, List <ValidationIssue> >()
                };
            }

            return(Redirect(currentPage.StaticLinkURL));
        }
Пример #3
0
        public ActionResult AddToCart(RequestParamsToCart param)
        {
            ModelState.Clear();

            if (SharedCart.Cart == null)
            {
                _sharedCart = new CartWithValidationIssues
                {
                    Cart             = _cartService.LoadOrCreateCart(_cartService.DefaultSharedCartName, OrganizationId),
                    ValidationIssues = new Dictionary <ILineItem, List <ValidationIssue> >()
                };
            }

            param.Store = "delivery";
            var result = _cartService.AddToCart(SharedCart.Cart, param);

            if (result.EntriesAddedToCart)
            {
                _orderRepository.Save(SharedCart.Cart);
                var productName = "";
                var entryLink   = _referenceConverter.GetContentLink(param.Code);
                productName = _contentLoader.Get <EntryContentBase>(entryLink).DisplayName;

                return(Json(new ChangeCartJsonResult
                {
                    StatusCode = 1,
                    CountItems = (int)SharedCart.Cart.GetAllLineItems().Sum(x => x.Quantity),
                    Message = productName + " is added to the shared cart  successfully."
                }));
            }

            return(Json(new ChangeCartJsonResult {
                StatusCode = -1, Message = result.GetComposedValidationMessage()
            }));
        }
Пример #4
0
        public async Task <ActionResult> Subscription(RequestParamsToCart param)
        {
            var warningMessage = string.Empty;

            ModelState.Clear();

            if (CartWithValidationIssues.Cart == null)
            {
                _cart = new CartWithValidationIssues
                {
                    Cart             = _cartService.LoadOrCreateCart(_cartService.DefaultCartName),
                    ValidationIssues = new Dictionary <ILineItem, List <ValidationIssue> >()
                };
            }

            var result = _cartService.AddToCart(CartWithValidationIssues.Cart, param);

            if (result.EntriesAddedToCart)
            {
                var item = CartWithValidationIssues.Cart.GetAllLineItems().FirstOrDefault(x => x.Code.Equals(param.Code));
                var subscriptionPrice = PriceCalculationService.GetSubscriptionPrice(param.Code, CartWithValidationIssues.Cart.MarketId, CartWithValidationIssues.Cart.Currency);
                if (subscriptionPrice != null)
                {
                    item.Properties["SubscriptionPrice"] = subscriptionPrice.UnitPrice.Amount;
                    item.PlacedPrice = subscriptionPrice.UnitPrice.Amount;
                }

                _orderRepository.Save(CartWithValidationIssues.Cart);
                await _recommendationService.TrackCart(HttpContext, CartWithValidationIssues.Cart);

                return(MiniCartDetails());
            }

            return(new HttpStatusCodeResult(500, result.GetComposedValidationMessage()));
        }
Пример #5
0
        public ActionResult RequestQuote()
        {
            bool succesRequest;

            if (CartWithValidationIssues.Cart == null)
            {
                _cart = new CartWithValidationIssues
                {
                    Cart             = _cartService.LoadOrCreateCart(_cartService.DefaultCartName),
                    ValidationIssues = new Dictionary <ILineItem, List <ValidationIssue> >()
                };
                succesRequest = _cartService.PlaceCartForQuote(_cart.Cart);
            }
            else
            {
                succesRequest = _cartService.PlaceCartForQuote(CartWithValidationIssues.Cart);
            }

            if (succesRequest)
            {
                _cartService.DeleteCart(_cart.Cart);
                _cart = new CartWithValidationIssues
                {
                    Cart             = _cartService.CreateNewCart(),
                    ValidationIssues = new Dictionary <ILineItem, List <ValidationIssue> >()
                };
            }

            return(Json(new { result = succesRequest }));
        }
        public JsonResult ClearQuotedCart()
        {
            _cartService.DeleteCart(CartWithValidationIssues.Cart);
            _cart = new CartWithValidationIssues
            {
                Cart             = _cartService.CreateNewCart(),
                ValidationIssues = new Dictionary <ILineItem, List <ValidationIssue> >()
            };

            return(Json("success", JsonRequestBehavior.AllowGet));
        }
Пример #7
0
        public ActionResult AddToSharedCart(RequestParamsToCart param)
        {
            ModelState.Clear();
            var currentPage = _contentRouteHelper.Content as CartPage;

            if (SharedCardWithValidationIssues.Cart == null)
            {
                _sharedcart = new CartWithValidationIssues
                {
                    Cart             = _cartService.LoadOrCreateCart(_cartService.DefaultSharedCartName, _customerService.GetCurrentContact().FoundationOrganization?.OrganizationId.ToString()),
                    ValidationIssues = new Dictionary <ILineItem, List <ValidationIssue> >()
                };
            }

            var items = new Dictionary <int, string>();

            foreach (var shipment in CartWithValidationIssues.Cart.Forms.SelectMany(x => x.Shipments))
            {
                foreach (var lineItem in shipment.LineItems)
                {
                    if (!lineItem.Code.Equals(param.Code))
                    {
                        continue;
                    }
                    items.Add(shipment.ShipmentId, param.Code);
                }
            }
            foreach (var key in items.Keys)
            {
                _cartService.ChangeCartItem(CartWithValidationIssues.Cart, key, items[key], 0, "", "");
            }
            _orderRepository.Save(CartWithValidationIssues.Cart);

            if (SharedCardWithValidationIssues.Cart.GetAllLineItems().Any(item => item.Code.Equals(param.Code, StringComparison.OrdinalIgnoreCase)))
            {
                return(View("LargeCart", _cartViewModelFactory.CreateLargeCartViewModel(CartWithValidationIssues.Cart, currentPage)));
            }

            var result = _cartService.AddToCart(SharedCardWithValidationIssues.Cart,
                                                new RequestParamsToCart {
                Code = param.Code, Quantity = 1, Store = "delivery", SelectedStore = ""
            });

            if (!result.EntriesAddedToCart)
            {
                return(new HttpStatusCodeResult(500, result.GetComposedValidationMessage()));
            }

            _orderRepository.Save(SharedCardWithValidationIssues.Cart);

            var viewModel = _cartViewModelFactory.CreateLargeCartViewModel(CartWithValidationIssues.Cart, currentPage);

            return(View("LargeCart", viewModel));
        }
        public ActionResult ClearCart(CartPage currentPage)
        {
            if (CartWithValidationIssues.Cart != null)
            {
                _orderRepository.Delete(CartWithValidationIssues.Cart.OrderLink);
                _cart = null;
            }
            //var viewModel = _cartViewModelFactory.CreateLargeCartViewModel(CartWithValidationIssues.Cart, currentPage);
            var redirect = currentPage.LinkURL;

            return(Json(redirect));
        }
Пример #9
0
        public JsonResult AddVariantsToCart(List <string> variants)
        {
            var returnedMessages = new List <string>();

            ModelState.Clear();

            if (CartWithValidationIssues.Cart == null)
            {
                _cart = new CartWithValidationIssues
                {
                    Cart             = _cartService.LoadOrCreateCart(_cartService.DefaultCartName),
                    ValidationIssues = new Dictionary <ILineItem, List <ValidationIssue> >()
                };
            }

            foreach (var product in variants)
            {
                var sku      = product.Split(';')[0];
                var quantity = Convert.ToInt32(product.Split(';')[1]);

                var variationReference = _referenceConverter.GetContentLink(sku);

                var responseMessage = _quickOrderService.ValidateProduct(variationReference, Convert.ToDecimal(quantity), sku);
                if (responseMessage.IsNullOrEmpty())
                {
                    var result = _cartService.AddToCart(CartWithValidationIssues.Cart,
                                                        new RequestParamsToCart {
                        Code = sku, Quantity = quantity, Store = "delivery", SelectedStore = ""
                    });
                    if (result.EntriesAddedToCart)
                    {
                        _cartService.ChangeCartItem(CartWithValidationIssues.Cart, 0, sku, quantity, "", "");
                        _orderRepository.Save(CartWithValidationIssues.Cart);
                    }
                }
                else
                {
                    returnedMessages.Add(responseMessage);
                }
            }
            Session[Constant.ErrorMessages] = returnedMessages;

            return(Json(returnedMessages, JsonRequestBehavior.AllowGet));
        }
Пример #10
0
        public async Task <ActionResult> Reorder(string orderId)
        {
            if (!int.TryParse(orderId, out var orderIntId))
            {
                return(new HttpStatusCodeResult(500, "Error reordering order"));
            }
            var order = _orderRepository.Load <IPurchaseOrder>(orderIntId);

            if (order == null)
            {
                return(new HttpStatusCodeResult(500, "Error reordering order"));
            }
            ModelState.Clear();

            if (CartWithValidationIssues.Cart == null)
            {
                _cart = new CartWithValidationIssues
                {
                    Cart             = _cartService.LoadOrCreateCart(_cartService.DefaultCartName),
                    ValidationIssues = new Dictionary <ILineItem, List <ValidationIssue> >()
                };
            }

            var lineitems = order.Forms.First().GetAllLineItems();

            foreach (var item in lineitems)
            {
                var result = _cartService.AddToCart(CartWithValidationIssues.Cart,
                                                    new RequestParamsToCart {
                    Code = item.Code, Quantity = item.Quantity, Store = "delivery", SelectedStore = ""
                });
                if (result.EntriesAddedToCart)
                {
                    await _recommendationService.TrackCart(HttpContext, CartWithValidationIssues.Cart);
                }
                else
                {
                    return(new HttpStatusCodeResult(500, result.GetComposedValidationMessage()));
                }
            }

            _orderRepository.Save(CartWithValidationIssues.Cart);
            return(Redirect(Url.ContentUrl(_settingsService.GetSiteSettings <ReferencePageSettings>()?.CheckoutPage ?? ContentReference.StartPage)));
        }
Пример #11
0
        public async Task <ActionResult> AddAllToCart()
        {
            var allLineItem        = WishList.Cart.GetAllLineItems();
            var entriesAddedToCart = true;
            var validationMessage  = "";

            if (Cart.Cart == null)
            {
                _cart = new CartWithValidationIssues
                {
                    Cart             = _cartService.LoadOrCreateCart(_cartService.DefaultCartName),
                    ValidationIssues = new Dictionary <ILineItem, List <ValidationIssue> >()
                };
            }

            foreach (var lineitem in allLineItem)
            {
                var result = _cartService.AddToCart(Cart.Cart,
                                                    new RequestParamsToCart {
                    Code = lineitem.Code, Quantity = lineitem.Quantity, Store = "delivery", SelectedStore = "", DynamicCodes = lineitem.Properties["VariantOptionCodes"]?.ToString().Split(',').ToList()
                });
                entriesAddedToCart &= result.EntriesAddedToCart;
                validationMessage  += result.GetComposedValidationMessage();
            }

            if (entriesAddedToCart)
            {
                _orderRepository.Save(Cart.Cart);
                await _trackingService.TrackCart(HttpContext, Cart.Cart);

                return(Json(new ChangeCartJsonResult
                {
                    StatusCode = 1,
                    Message = "Add all LineItems from the wishlist to the cart.",
                    CountItems = (int)Cart.Cart.GetAllLineItems().Sum(x => x.Quantity),
                }));
            }

            return(new HttpStatusCodeResult(500, validationMessage));
        }
Пример #12
0
        public JsonResult AddVariantsToOrderPad(List <string> variants)
        {
            var returnedMessages = new List <string>();

            ModelState.Clear();

            if (WishList.Cart == null)
            {
                _wishlist = new CartWithValidationIssues
                {
                    Cart             = _cartService.LoadOrCreateCart(_cartService.DefaultWishListName),
                    ValidationIssues = new Dictionary <ILineItem, List <ValidationIssue> >()
                };
            }

            foreach (var product in variants)
            {
                var sku      = product.Split(';')[0];
                var quantity = Convert.ToInt32(product.Split(';')[1]);

                var variationReference = _referenceConverter.GetContentLink(sku);

                var responseMessage = _quickOrderService.ValidateProduct(variationReference, Convert.ToDecimal(quantity), sku);
                if (string.IsNullOrEmpty(responseMessage))
                {
                    if (_cartService.AddToCart(WishList.Cart, sku, 1, "delivery", "").EntriesAddedToCart)
                    {
                        _orderRepository.Save(WishList.Cart);
                    }
                }
                else
                {
                    returnedMessages.Add(responseMessage);
                }
            }
            Session[Constant.ErrorMessages] = returnedMessages;

            return(Json(returnedMessages, JsonRequestBehavior.AllowGet));
        }
Пример #13
0
        public async Task <JsonResult> AddToCart(RequestParamsToCart param) // only use Code
        {
            if (WishList.Cart == null)
            {
                _wishlist = new CartWithValidationIssues
                {
                    Cart             = _cartService.LoadOrCreateCart(_cartService.DefaultWishListName),
                    ValidationIssues = new Dictionary <ILineItem, List <ValidationIssue> >()
                };
            }

            // return 0 if the variant already exist in wishlist
            // return 1 if added susscessfully
            var result       = new AddToCartResult();
            var allLineItems = WishList.Cart.GetAllLineItems();
            var contentLink  = _referenceConverter.GetContentLink(param.Code);
            var message      = "";
            var productName  = "";
            var entryLink    = _referenceConverter.GetContentLink(param.Code);

            productName = _contentLoader.Get <EntryContentBase>(entryLink).DisplayName;

            if (_contentLoader.Get <EntryContentBase>(contentLink) is GenericBundle bundle) // Add bundle
            {
                var variantCodes = _contentLoader
                                   .GetItems(bundle.GetEntries(_relationRepository), _languageResolver.GetPreferredCulture())
                                   .OfType <VariationContent>()
                                   .Where(v => v.IsAvailableInCurrentMarket(_currentMarket) && !_filterPublished.ShouldFilter(v))
                                   .Select(x => x.Code);
                var allLineItemCodes = allLineItems.Select(x => x.Code);
                var allNewCodes      = variantCodes.Where(x => !allLineItemCodes.Contains(x));
                if (!allNewCodes.Any())
                {
                    return(Json(new ChangeCartJsonResult {
                        StatusCode = 0, Message = productName + " already exist in the wishlist."
                    }));
                }
                else
                {
                    foreach (var v in allNewCodes)
                    {
                        result = _cartService.AddToCart(WishList.Cart, new RequestParamsToCart {
                            Code = v, Quantity = 1, Store = "delivery", SelectedStore = ""
                        });
                        if (result.ValidationMessages.Count > 0)
                        {
                            message += string.Join("\n", result.ValidationMessages);
                        }
                    }
                }
            }
            else // Add variant
            {
                if (allLineItems.Any(item => item.Code.Equals(param.Code, StringComparison.OrdinalIgnoreCase)))
                {
                    return(Json(new ChangeCartJsonResult {
                        StatusCode = 0, Message = productName + " already exist in the wishlist."
                    }));
                }

                result = _cartService.AddToCart(WishList.Cart,
                                                new RequestParamsToCart {
                    Code = param.Code, Quantity = 1, Store = "delivery", SelectedStore = ""
                });
            }

            if (result.EntriesAddedToCart)
            {
                _orderRepository.Save(WishList.Cart);
                await _trackingService.TrackWishlist(HttpContext);

                return(Json(new ChangeCartJsonResult
                {
                    StatusCode = 1,
                    CountItems = (int)WishList.Cart.GetAllLineItems().Sum(x => x.Quantity),
                    Message = productName + " is added to the wishlist successfully.\n" + message
                }));
            }
            return(Json(new ChangeCartJsonResult {
                StatusCode = -1, Message = result.GetComposedValidationMessage()
            }));
        }
        public ActionResult MoveToWishlist(RequestParamsToCart param)
        {
            ModelState.Clear();
            var productName = "";
            var entryLink   = _referenceConverter.GetContentLink(param.Code);

            productName = _contentLoader.Get <EntryContentBase>(entryLink).DisplayName;

            var currentPage = _contentRouteHelper.Content as CartPage;

            if (WishListWithValidationIssues.Cart == null)
            {
                _wishlist = new CartWithValidationIssues
                {
                    Cart             = _cartService.LoadOrCreateCart(_cartService.DefaultWishListName),
                    ValidationIssues = new Dictionary <ILineItem, List <ValidationIssue> >()
                };
            }

            var items = new Dictionary <int, string>();

            foreach (var shipment in CartWithValidationIssues.Cart.Forms.SelectMany(x => x.Shipments))
            {
                foreach (var lineItem in shipment.LineItems)
                {
                    if (!lineItem.Code.Equals(param.Code))
                    {
                        continue;
                    }
                    items.Add(shipment.ShipmentId, param.Code);
                }
            }

            if (WishListWithValidationIssues.Cart.GetAllLineItems().Any(item => item.Code.Equals(param.Code, StringComparison.OrdinalIgnoreCase)))
            {
                return(Json(new ChangeCartJsonResult
                {
                    StatusCode = 0,
                    Message = productName + " already existed in the wishlist.",
                }));
            }

            foreach (var key in items.Keys)
            {
                _cartService.ChangeCartItem(CartWithValidationIssues.Cart, key, items[key], 0, "", "");
            }
            _orderRepository.Save(CartWithValidationIssues.Cart);

            var result = _cartService.AddToCart(WishListWithValidationIssues.Cart, param.Code, 1, "delivery", "");

            if (!result.EntriesAddedToCart)
            {
                return(new HttpStatusCodeResult(500, result.GetComposedValidationMessage()));
            }

            _orderRepository.Save(WishListWithValidationIssues.Cart);

            var viewModel = _cartViewModelFactory.CreateLargeCartViewModel(CartWithValidationIssues.Cart, currentPage);

            return(Json(new ChangeCartJsonResult
            {
                StatusCode = 1,
                Message = productName + " has moved to the wishlist.",
                CountItems = (int)CartWithValidationIssues.Cart.GetAllLineItems().Sum(x => x.Quantity),
                SubTotal = viewModel.Subtotal,
                Total = viewModel.Total,
                ShippingTotal = viewModel.ShippingTotal,
                TaxTotal = viewModel.TaxTotal,
                TotalDiscount = viewModel.TotalDiscount
            }));
        }
        public async Task <ActionResult> BuyNow(RequestParamsToCart param)
        {
            var warningMessage = string.Empty;

            ModelState.Clear();

            if (CartWithValidationIssues.Cart == null)
            {
                _cart = new CartWithValidationIssues
                {
                    Cart             = _cartService.LoadOrCreateCart(_cartService.DefaultCartName),
                    ValidationIssues = new Dictionary <ILineItem, List <ValidationIssue> >()
                };
            }

            var result = _cartService.AddToCart(CartWithValidationIssues.Cart, param.Code, param.Quantity, param.Store, param.SelectedStore);

            if (!result.EntriesAddedToCart)
            {
                return(new HttpStatusCodeResult(500, result.GetComposedValidationMessage()));
            }
            var contact = PrincipalInfo.CurrentPrincipal.GetCustomerContact();

            if (contact == null)
            {
                return(RedirectToCart("The contact is invalid"));
            }

            var creditCard = contact.ContactCreditCards.FirstOrDefault();

            if (creditCard == null)
            {
                return(RedirectToCart("There is not any credit card"));
            }

            var shipment = CartWithValidationIssues.Cart.GetFirstShipment();

            if (shipment == null)
            {
                return(RedirectToCart("The shopping cart is not exist"));
            }

            var shippingAddress = (contact.PreferredShippingAddress ?? contact.ContactAddresses.FirstOrDefault())?.ConvertToOrderAddress(CartWithValidationIssues.Cart);

            if (shippingAddress == null)
            {
                return(RedirectToCart("The shipping address is not exist"));
            }

            shipment.ShippingAddress = shippingAddress;

            var shippingMethodViewModels = _shipmentViewModelFactory.CreateShipmentsViewModel(CartWithValidationIssues.Cart).SelectMany(x => x.ShippingMethods);
            var shippingMethodViewModel  = shippingMethodViewModels.Where(x => x.Price != 0)
                                           .OrderBy(x => x.Price)
                                           .FirstOrDefault();

            //If product is virtual set shipping method is Free
            if (shipment.LineItems.FirstOrDefault().IsVirtualVariant())
            {
                shippingMethodViewModel = shippingMethodViewModels.Where(x => x.Price == 0).FirstOrDefault();
            }

            if (shippingMethodViewModel == null)
            {
                return(RedirectToCart("The shipping method is invalid"));
            }

            shipment.ShippingMethodId = shippingMethodViewModel.Id;

            var paymentAddress = (contact.PreferredBillingAddress ?? contact.ContactAddresses.FirstOrDefault())?.ConvertToOrderAddress(CartWithValidationIssues.Cart);

            if (paymentAddress == null)
            {
                return(RedirectToCart("The billing address is not exist"));
            }

            var totals = _orderGroupCalculator.GetOrderGroupTotals(CartWithValidationIssues.Cart);

            var payment = CartWithValidationIssues.Cart.CreateCardPayment();

            payment.BillingAddress         = paymentAddress;
            payment.CardType               = "Credit card";
            payment.PaymentMethodId        = new Guid("B1DA37A6-CF19-40D5-915B-B863D74D8799");
            payment.PaymentMethodName      = "GenericCreditCard";
            payment.Amount                 = CartWithValidationIssues.Cart.GetTotal().Amount;
            payment.CreditCardNumber       = creditCard.CreditCardNumber;
            payment.CreditCardSecurityCode = creditCard.SecurityCode;
            payment.ExpirationMonth        = creditCard.ExpirationMonth ?? 1;
            payment.ExpirationYear         = creditCard.ExpirationYear ?? DateTime.Now.Year;
            payment.Status                 = PaymentStatus.Pending.ToString();
            payment.CustomerName           = contact.FullName;
            payment.TransactionType        = TransactionType.Authorization.ToString();
            CartWithValidationIssues.Cart.GetFirstForm().Payments.Add(payment);

            var issues = _cartService.ValidateCart(CartWithValidationIssues.Cart);

            if (issues.Keys.Any(x => issues.HasItemBeenRemoved(x)))
            {
                return(RedirectToCart("The product is invalid"));
            }
            var order = _checkoutService.PlaceOrder(CartWithValidationIssues.Cart, new ModelStateDictionary(), new CheckoutViewModel());

            //await _checkoutService.CreateOrUpdateBoughtProductsProfileStore(CartWithValidationIssues.Cart);
            //await _checkoutService.CreateBoughtProductsSegments(CartWithValidationIssues.Cart);
            await _recommendationService.TrackOrder(HttpContext, order);

            var homePage = _contentLoader.Get <PageData>(ContentReference.StartPage) as CommerceHomePage;

            if (homePage?.OrderConfirmationPage != null)
            {
                var orderConfirmationPage = _contentLoader.Get <OrderConfirmationPage>(homePage.OrderConfirmationPage);
                var queryCollection       = new NameValueCollection
                {
                    { "contactId", contact.PrimaryKeyId?.ToString() },
                    { "orderNumber", order.OrderLink.OrderGroupId.ToString() }
                };
                var urlRedirect = new UrlBuilder(orderConfirmationPage.StaticLinkURL)
                {
                    QueryCollection = queryCollection
                };
                return(Json(new { Redirect = urlRedirect.ToString() }));
            }

            return(RedirectToCart("Something went wrong"));
        }
        public async Task <ActionResult> AddToCart(RequestParamsToCart param)
        {
            var warningMessage = string.Empty;

            ModelState.Clear();

            if (CartWithValidationIssues.Cart == null)
            {
                _cart = new CartWithValidationIssues
                {
                    Cart             = _cartService.LoadOrCreateCart(_cartService.DefaultCartName),
                    ValidationIssues = new Dictionary <ILineItem, List <ValidationIssue> >()
                };
            }

            var result = _cartService.AddToCart(CartWithValidationIssues.Cart, param.Code, param.Quantity, param.Store, param.SelectedStore);

            if (result.EntriesAddedToCart)
            {
                _orderRepository.Save(CartWithValidationIssues.Cart);
                await _recommendationService.TrackCart(HttpContext, CartWithValidationIssues.Cart);

                if (string.Equals(param.RequestFrom, "axios", StringComparison.OrdinalIgnoreCase))
                {
                    var product   = "";
                    var entryLink = _referenceConverter.GetContentLink(param.Code);
                    var entry     = _contentLoader.Get <EntryContentBase>(entryLink);
                    if (entry is BundleContent || entry is PackageContent)
                    {
                        product = entry.DisplayName;
                    }
                    else
                    {
                        var parentProduct = _contentLoader.Get <EntryContentBase>(entry.GetParentProducts().FirstOrDefault());
                        product = parentProduct?.DisplayName;
                    }

                    if (result.ValidationMessages.Count > 0)
                    {
                        return(Json(new ChangeCartJsonResult
                        {
                            StatusCode = 1,
                            CountItems = (int)CartWithValidationIssues.Cart.GetAllLineItems().Sum(x => x.Quantity),
                            Message = product + " is added to the cart successfully.\n" + result.GetComposedValidationMessage(),
                            SubTotal = CartWithValidationIssues.Cart.GetSubTotal()
                        }));
                    }

                    return(Json(new ChangeCartJsonResult
                    {
                        StatusCode = 1,
                        CountItems = (int)CartWithValidationIssues.Cart.GetAllLineItems().Sum(x => x.Quantity),
                        Message = product + " is added to the cart successfully.",
                        SubTotal = CartWithValidationIssues.Cart.GetSubTotal()
                    }));
                }

                return(MiniCartDetails());
            }

            return(new HttpStatusCodeResult(500, result.GetComposedValidationMessage()));
        }