Example #1
0
        /// <summary>
        /// Builds a <see cref="BasketLineItem"/>
        /// </summary>
        /// <param name="lineItem">
        /// The line item.
        /// </param>
        /// <returns>
        /// The <see cref="BasketLineItem"/>.
        /// </returns>
        public BasketLineItem Build(ILineItem lineItem)
        {
            var contentId = lineItem.ExtendedData.ContainsKey("umbracoContentId")
                                ? int.Parse(lineItem.ExtendedData["umbracoContentId"])
                                : 0;

            var basketLineItem = new BasketLineItem
            {
                Key        = lineItem.Key,
                ContentId  = contentId,
                Name       = lineItem.Name,
                Sku        = lineItem.Sku,
                UnitPrice  = lineItem.Price,
                TotalPrice = lineItem.TotalPrice,
                Quantity   = lineItem.Quantity,
                Product    = contentId > 0 ? new ProductModel(this._umbraco.TypedContent(contentId))
                {
                    CurrentCustomer = this._currentCustomer,
                    Currency        = this._currency
                }
                                                  : null
            };

            return(basketLineItem);
        }
Example #2
0
 public void AddItemToBasket(BasketItem basketItem)
 {
     if (basketItem != null)
     {
         var            basket           = GetCurrentBasket();
         BasketLineItem existingLineItem = GetLineItemBySku(basketItem.ProductSku);
         if (existingLineItem == null)
         {
             AddLineItemToBasket(basket, new BasketLineItem()
             {
                 Quantity          = 1,
                 ProductSku        = basketItem.ProductSku,
                 LineItemPrice     = basketItem.ItemPrice,
                 LineItemDiscount  = basketItem.ItemDisount,
                 IsGiftVoucherItem = basketItem.IsGiftVoucherItem
             });
         }
         else
         {
             existingLineItem.Quantity         = existingLineItem.Quantity + 1;
             existingLineItem.LineItemPrice    = existingLineItem.LineItemPrice + basketItem.ItemPrice;
             existingLineItem.LineItemDiscount = existingLineItem.LineItemDiscount + basketItem.ItemDisount;
         }
         UpdateBasket(basket);
     }
 }
        public decimal LinePrice_NoOffer_EqualsUnitPriceTimesQuantity(decimal unitPrice, int quantity)
        {
            var stockItemMock = new Mock <IStockItem>();

            stockItemMock.Setup(m => m.UnitPrice).Returns(unitPrice);

            var lineItem = new BasketLineItem(stockItemMock.Object)
            {
                Quantity = quantity
            };

            return(lineItem.LinePrice);
        }
        public decimal LinePrice_WithPromotion_PromotionDiscountApplied(decimal unitPrice, int quantity, decimal discountToApply)
        {
            var promotionMock = new Mock <IPromotion>();

            promotionMock.Setup(m => m.CalculateDiscountToApply(It.IsAny <IStockItem>(), quantity)).Returns(discountToApply);
            var stockItemMock = new Mock <IStockItem>();

            stockItemMock.Setup(m => m.UnitPrice).Returns(unitPrice);
            stockItemMock.Setup(m => m.Promotion).Returns(promotionMock.Object);

            var lineItem = new BasketLineItem(stockItemMock.Object)
            {
                Quantity = quantity
            };

            return(lineItem.LinePrice);
        }
Example #5
0
        /// <summary>
        /// Builds a <see cref="BasketLineItem"/>
        /// </summary>
        /// <param name="lineItem">
        /// The line item.
        /// </param>
        /// <returns>
        /// The <see cref="BasketLineItem"/>.
        /// </returns>
        public BasketLineItem Build(ILineItem lineItem)
        {
            var contentId = lineItem.ExtendedData.ContainsKey("umbracoContentId")
                                ? int.Parse(lineItem.ExtendedData["umbracoContentId"])
                                : 0;

            var          productKey = lineItem.ExtendedData.GetProductKey();
            ProductModel product    = null;

            if (!productKey.Equals(Guid.Empty))
            {
                var productContent = _merchello.TypedProductContent(productKey);
                if (productContent != null)
                {
                    product = new ProductModel(productContent)
                    {
                        CurrentCustomer = _currentCustomer,
                        Currency        = _currency
                    }
                }
                ;
            }


            var basketLineItem = new BasketLineItem
            {
                Key          = lineItem.Key,
                ContentId    = contentId,
                Name         = lineItem.Name,
                Sku          = lineItem.Sku,
                UnitPrice    = lineItem.Price,
                TotalPrice   = lineItem.TotalPrice,
                Quantity     = lineItem.Quantity,
                ExtendedData = lineItem.ExtendedData,
                Product      = product ?? this.HandleLegacyBazaarProductContent(contentId)
            };

            return(basketLineItem);
        }
Example #6
0
 private void AddLineItemToBasket(Models.ShoppingBasket basket, BasketLineItem basketItem)
 {
     basket.LineItems.Add(basketItem);
 }
Example #7
0
 /// <summary>
 /// The format total price.
 /// </summary>
 /// <param name="lineItem">
 /// The line item.
 /// </param>
 /// <param name="currency">
 /// The currency.
 /// </param>
 /// <returns>
 /// The <see cref="string"/>.
 /// </returns>
 public static string FormatTotalPrice(this BasketLineItem lineItem, ICurrency currency)
 {
     return(FormatPrice(lineItem.TotalPrice, currency));
 }
Example #8
0
 /// <summary>
 /// The format total price.
 /// </summary>
 /// <param name="lineItem">
 /// The line item.
 /// </param>
 /// <param name="currencySymbol">
 /// The currency symbol.
 /// </param>
 /// <returns>
 /// The <see cref="string"/>.
 /// </returns>
 public static string FormatTotalPrice(this BasketLineItem lineItem, string currencySymbol)
 {
     return(FormatPrice(lineItem.TotalPrice, currencySymbol));
 }