public IEnumerable <CartItem> GetCartItems() { if (_cardhelper.IsEmpty) { return(Enumerable.Empty <CartItem>()); } var cartItems = new List <CartItem>(); var lineItems = _cardhelper.Cart.GetAllLineItems(); //// In order to show the images for the items in the cart, we need to load the variants var variants = _contentLoader.GetItems(lineItems.Select(x => _referenceConverter.GetContentLink(x.Code)), _preferredCulture).OfType <VariationContent>(); foreach (var lineItem in lineItems) { VariationContent variant = variants.FirstOrDefault(x => x.Code == lineItem.Code); ProductContent product = _contentLoader.Get <ProductContent>(variant.GetParentProducts().FirstOrDefault()); CartItem item = new CartItem { Code = lineItem.Code, DisplayName = lineItem.DisplayName, ImageUrl = variant.GetAssets <IContentImage>(_contentLoader, _urlResolver).FirstOrDefault() ?? "", Quantity = lineItem.Quantity, Url = lineItem.GetUrl(), Variant = variant, Price = variant.GetPrices().FirstOrDefault().UnitPrice }; cartItems.Add(item); } return(cartItems); }
public IEnumerable <CartItem> GetCartItems() { if (CartHelper.IsEmpty) { return(Enumerable.Empty <CartItem>()); } var cartItems = new List <CartItem>(); var lineItems = CartHelper.Cart.GetAllLineItems(); // In order to show the images for the items in the cart, we need to load the variants var variants = _contentLoader.GetItems(lineItems.Select(x => _referenceConverter.GetContentLink(x.Code)), _preferredCulture).OfType <VariationContent>(); var marketId = _currentMarket.GetCurrentMarket().MarketId; var currency = _currencyService.GetCurrentCurrency(); foreach (var lineItem in lineItems) { VariationContent variant = variants.FirstOrDefault(x => x.Code == lineItem.Code); ProductContent product = _contentLoader.Get <ProductContent>(variant.GetParentProducts().FirstOrDefault()); CartItem item = new CartItem { Code = lineItem.Code, DisplayName = lineItem.DisplayName, ImageUrl = variant.GetAssets <IContentImage>(_contentLoader, _urlResolver).FirstOrDefault() ?? "", ExtendedPrice = GetExtendedPrice(lineItem, marketId, currency), PlacedPrice = lineItem.ToMoney(lineItem.PlacedPrice), DiscountPrice = lineItem.ToMoney(currency.Round(((lineItem.PlacedPrice * lineItem.Quantity) - lineItem.Discounts.Cast <LineItemDiscount>().Sum(x => x.DiscountValue)) / lineItem.Quantity)), Quantity = lineItem.Quantity, Url = lineItem.GetUrl(), Variant = variant, Discounts = lineItem.Discounts.Cast <LineItemDiscount>().Select(x => new OrderDiscountModel { Discount = new Money(x.DiscountAmount, new Currency(CartHelper.Cart.BillingCurrency)), Displayname = x.DisplayMessage }), IsAvailable = _pricingService.GetCurrentPrice(variant.Code).HasValue }; if (product is FashionProduct) { var fashionProduct = (FashionProduct)product; var fashionVariant = (FashionVariant)variant; item.Brand = fashionProduct.Brand; var variations = _productService.GetVariations(fashionProduct); item.AvailableSizes = variations.Where(x => x.Color == fashionVariant.Color).Select(x => x.Size); } cartItems.Add(item); } return(cartItems); }
private ProductViewModel CreateProductViewModel(ProductContent product, VariationContent variation) { if (variation == null) { return(null); } ContentReference productContentReference; if (product != null) { productContentReference = product.ContentLink; } else { productContentReference = variation.GetParentProducts(_relationRepository).FirstOrDefault(); if (ContentReference.IsNullOrEmpty(productContentReference)) { return(null); } } var market = _currentMarket.GetCurrentMarket(); var currency = _currencyService.GetCurrentCurrency(); var originalPrice = _pricingService.GetCurrentPrice(variation.Code); var discountedPrice = originalPrice.HasValue ? GetDiscountPrice(variation, market, currency, originalPrice.Value) : (Money?)null; var image = variation.GetAssets <IContentImage>(_contentLoader, _urlResolver).FirstOrDefault() ?? ""; var brand = product is FashionProduct ? ((FashionProduct)product).Brand : string.Empty; return(new ProductViewModel { DisplayName = product != null ? product.DisplayName : variation.DisplayName, PlacedPrice = originalPrice.HasValue ? originalPrice.Value : new Money(0, currency), DiscountedPrice = discountedPrice, ImageUrl = image, Url = variation.GetUrl(), Brand = brand, IsAvailable = originalPrice.HasValue }); }
public virtual CartItemViewModel CreateCartItemViewModel(ICart cart, ILineItem lineItem, VariationContent variant) { var productLink = variant.GetParentProducts(_relationRepository).FirstOrDefault(); var product = _contentLoader.Get <ProductContent>(productLink) as BaseProduct; return(new CartItemViewModel { Code = lineItem.Code, DisplayName = variant.DisplayName, ImageUrl = variant.GetAssets <IContentImage>(_contentLoader, _urlResolver).FirstOrDefault() ?? "", DiscountedPrice = GetDiscountedPrice(cart, lineItem), PlacedPrice = new Money(lineItem.PlacedPrice, _currencyService.GetCurrentCurrency()), Quantity = lineItem.Quantity, Url = lineItem.GetUrl(), Variant = variant, IsAvailable = _pricingService.GetCurrentPrice(variant.Code).HasValue, Brand = GetBrand(product), AvailableSizes = GetAvailableSizes(product, variant), DiscountedUnitPrice = GetDiscountedUnitPrice(cart, lineItem), IsGift = lineItem.IsGift }); }
public virtual CartItemViewModel CreateCartItemViewModel(ICart cart, ILineItem lineItem, VariationContent variant) { var productLink = variant.GetParentProducts(_relationRepository).FirstOrDefault(); var product = _contentLoader.Get<ProductContent>(productLink) as FashionProduct; return new CartItemViewModel { Code = lineItem.Code, DisplayName = variant.DisplayName, ImageUrl = variant.GetAssets<IContentImage>(_contentLoader, _urlResolver).FirstOrDefault() ?? "", DiscountedPrice = GetDiscountedPrice(cart, lineItem), PlacedPrice = new Money(lineItem.PlacedPrice, _currencyService.GetCurrentCurrency()), Quantity = lineItem.Quantity, Url = lineItem.GetUrl(), Variant = variant, IsAvailable = _pricingService.GetCurrentPrice(variant.Code).HasValue, Brand = GetBrand(product), AvailableSizes = GetAvailableSizes(product, variant), DiscountedUnitPrice = GetDiscountedUnitPrice(cart, lineItem), IsGift = lineItem.IsGift }; }
private ProductViewModel CreateProductViewModel(ProductContent product, VariationContent variation) { if (variation == null) { return null; } ContentReference productContentReference; if (product != null) { productContentReference = product.ContentLink; } else { productContentReference = variation.GetParentProducts(_relationRepository).FirstOrDefault(); if (ContentReference.IsNullOrEmpty(productContentReference)) { return null; } } var market = _currentMarket.GetCurrentMarket(); var currency = _currencyService.GetCurrentCurrency(); var originalPrice = _pricingService.GetCurrentPrice(variation.Code); var discountedPrice = originalPrice.HasValue ? GetDiscountPrice(variation, market, currency, originalPrice.Value) : (Money?)null; var image = variation.GetAssets<IContentImage>(_contentLoader, _urlResolver).FirstOrDefault() ?? ""; var brand = product is FashionProduct ? ((FashionProduct)product).Brand : string.Empty; return new ProductViewModel { DisplayName = product != null ? product.DisplayName : variation.DisplayName, PlacedPrice = originalPrice.HasValue ? originalPrice.Value : new Money(0, currency), DiscountedPrice = discountedPrice, ImageUrl = image, Url = variation.GetUrl(), Brand = brand, IsAvailable = originalPrice.HasValue }; }