public ActionResult UpdateBasket(CartUpdateBasket updateModel)
        {
            var    model      = ResolveModel();
            var    parameters = new System.Collections.Generic.Dictionary <string, object>();
            string message;

            if (!model.CanProcessRequest(parameters, out message))
            {
                return(this.PartialView("_Warning", message));
            }

            var updatedVM = model.Update(updateModel);

            var miniBasketModel = ResolveMiniBasketModel();

            return(Json(new
            {
                MiniBasketRefresh = miniBasketModel.Refresh(),
                updatedVM.OrderTotal,
                updatedVM.DiscountTotal,
                updatedVM.TaxTotal,
                updatedVM.SubTotal,
                updatedVM.OrderLines
            }));
        }
Exemplo n.º 2
0
        public ActionResult RemoveVoucher(CartUpdateBasket updateModel)
        {
            var    model      = ResolveModel();
            var    parameters = new System.Collections.Generic.Dictionary <string, object>();
            string message;

            parameters.Add("submitModel", updateModel);

            if (!model.CanProcessRequest(parameters, out message))
            {
                return(this.Json(new OperationStatusDTO()
                {
                    Status = "failed", Message = message
                },
                                 JsonRequestBehavior.AllowGet));
            }

            var updatedVM = model.RemoveVoucher(updateModel);

            return(Json(new
            {
                updatedVM.OrderTotal,
                updatedVM.DiscountTotal,
                updatedVM.TaxTotal,
                updatedVM.SubTotal,
                Voucher = updatedVM.Vouchers,
                updatedVM.OrderLines
            }));
        }
Exemplo n.º 3
0
        public virtual CartUpdateBasketViewModel RemoveVoucher(CartUpdateBasket model)
        {
            var basket = TransactionLibrary.GetBasket(false);

            foreach (var item in model.Vouchers)
            {
                var itemForDeletion = basket.Discounts.FirstOrDefault(d => d.CampaignItemName == item);

                if (itemForDeletion != null)
                {
                    basket.RemoveDiscount(itemForDeletion);
                    var prop = basket.OrderProperties.FirstOrDefault(v => v.Key == "voucherCodes");
                    if (prop != null)
                    {
                        prop.Value = prop.Value.Replace(item + ",", string.Empty);
                        prop.Save();
                    }
                }
            }

            basket.Save();
            TransactionLibrary.ExecuteBasketPipeline();

            var updatedBasket = MapCartUpdate(model);

            updatedBasket.Vouchers.Except(model.Vouchers).ToList();

            return(updatedBasket);
        }
Exemplo n.º 4
0
        public virtual CartUpdateBasketViewModel AddVoucher(CartUpdateBasket model)
        {
            if (model.Vouchers.Any())
            {
                foreach (var modelVoucher in model.Vouchers)
                {
                    MarketingLibrary.AddVoucher(modelVoucher);
                }
            }

            TransactionLibrary.ExecuteBasketPipeline();
            var updatedBasket = MapCartUpdate(model);

            updatedBasket.Vouchers = model.Vouchers;

            return(updatedBasket);
        }
Exemplo n.º 5
0
        public virtual CartUpdateBasketViewModel Update(CartUpdateBasket model)
        {
            foreach (var updateOrderline in model.RefreshBasket)
            {
                var newQuantity = updateOrderline.OrderLineQty;
                if (newQuantity <= 0)
                {
                    newQuantity = 0;
                }

                _transactionLibraryInternal.UpdateLineItemByOrderLineId(updateOrderline.OrderLineId, newQuantity);
            }

            _transactionLibraryInternal.ExecuteBasketPipeline();

            var basket = _transactionLibraryInternal.GetBasket(false).PurchaseOrder;

            CartUpdateBasketViewModel updatedBasket = new CartUpdateBasketViewModel();

            foreach (var orderLine in basket.OrderLines)
            {
                var orderLineViewModel = new CartUpdateOrderline();
                orderLineViewModel.OrderlineId       = orderLine.OrderLineId;
                orderLineViewModel.Quantity          = orderLine.Quantity;
                orderLineViewModel.Total             = new Money(orderLine.Total.GetValueOrDefault(), basket.BillingCurrency).ToString();
                orderLineViewModel.Discount          = orderLine.Discount;
                orderLineViewModel.Tax               = new Money(orderLine.VAT, basket.BillingCurrency).ToString();
                orderLineViewModel.Price             = new Money(orderLine.Price, basket.BillingCurrency).ToString();
                orderLineViewModel.PriceWithDiscount = new Money(orderLine.Price - orderLine.Discount, basket.BillingCurrency).ToString();

                updatedBasket.OrderLines.Add(orderLineViewModel);
            }

            string orderTotal    = new Money(basket.OrderTotal.GetValueOrDefault(), basket.BillingCurrency).ToString();
            string discountTotal = new Money(basket.DiscountTotal.GetValueOrDefault(), basket.BillingCurrency).ToString();
            string taxTotal      = new Money(basket.TaxTotal.GetValueOrDefault(), basket.BillingCurrency).ToString();
            string subTotal      = new Money(basket.SubTotal.GetValueOrDefault(), basket.BillingCurrency).ToString();

            updatedBasket.OrderTotal    = orderTotal;
            updatedBasket.DiscountTotal = discountTotal;
            updatedBasket.TaxTotal      = taxTotal;
            updatedBasket.SubTotal      = subTotal;

            return(updatedBasket);
        }
Exemplo n.º 6
0
        public virtual CartUpdateBasketViewModel Update(CartUpdateBasket model)
        {
            foreach (var updateOrderline in model.RefreshBasket)
            {
                var newQuantity = updateOrderline.OrderLineQty;
                if (newQuantity <= 0)
                {
                    newQuantity = 0;
                }

                TransactionLibrary.UpdateLineItemByOrderLineId(updateOrderline.OrderLineId, newQuantity);
            }

            TransactionLibrary.ExecuteBasketPipeline();

            var updatedBasket = MapCartUpdate(model);

            return(updatedBasket);
        }
Exemplo n.º 7
0
        private CartUpdateBasketViewModel MapCartUpdate(CartUpdateBasket model)
        {
            var basket        = TransactionLibrary.GetBasket(false);
            var updatedBasket = MapOrderline(basket);

            var    currencyIsoCode = basket.BillingCurrency.ISOCode;
            string orderTotal      = new Money(basket.OrderTotal.GetValueOrDefault(), currencyIsoCode).ToString();
            string discountTotal   = basket.DiscountTotal.GetValueOrDefault() > 0
                                                                                ? new Money(basket.DiscountTotal.GetValueOrDefault(), currencyIsoCode).ToString()
                                                                                : "";
            string taxTotal = new Money(basket.TaxTotal.GetValueOrDefault(), currencyIsoCode).ToString();
            string subTotal = new Money(basket.SubTotal.GetValueOrDefault(), currencyIsoCode).ToString();

            updatedBasket.OrderTotal    = orderTotal;
            updatedBasket.DiscountTotal = discountTotal;
            updatedBasket.TaxTotal      = taxTotal;
            updatedBasket.SubTotal      = subTotal;
            updatedBasket.Vouchers.AddRange(model.Vouchers);

            return(updatedBasket);
        }