public virtual LineItemDetailViewModel GetLineItemDetailViewModel(CreateLineItemDetailViewModelParam param)
        {
            if (param.PreMapAction != null)
            {
                param.PreMapAction.Invoke(param.LineItem);
            }

            var lineItem = param.LineItem;

            var vm = ViewModelMapper.MapTo <LineItemDetailViewModel>(lineItem, param.CultureInfo);

            if (vm.IsValid == null)
            {
                vm.IsValid = true;
            }

            vm.Rewards  = RewardViewModelFactory.CreateViewModel(lineItem.Rewards, param.CultureInfo, RewardLevel.LineItem).ToList();
            vm.IsOnSale = lineItem.CurrentPrice.HasValue && lineItem.DefaultPrice.HasValue &&
                          (int)(lineItem.CurrentPrice.Value * 100) < (int)(lineItem.DefaultPrice.Value * 100);
            vm.IsPriceDiscounted = lineItem.DiscountAmount.GetValueOrDefault(0) > 0;

            decimal lineItemsSavingSale = Math.Abs(decimal.Multiply(
                                                       decimal.Subtract(
                                                           lineItem.CurrentPrice.GetValueOrDefault(0),
                                                           lineItem.DefaultPrice.GetValueOrDefault(0)),
                                                       Convert.ToDecimal(lineItem.Quantity)));

            decimal lineItemsSavingTotal = decimal.Add(lineItem.DiscountAmount.GetValueOrDefault(0), lineItemsSavingSale);

            vm.SavingsTotal = lineItemsSavingTotal.Equals(0) ? string.Empty : LocalizationProvider.FormatPrice(lineItemsSavingTotal, CurrencyProvider.GetCurrency());

            vm.KeyVariantAttributesList = GetKeyVariantAttributes(new GetKeyVariantAttributesParam {
                KvaValues        = lineItem.KvaValues,
                KvaDisplayValues = lineItem.KvaDisplayValues
            }).ToList();

            if (param.ImageDictionary.TryGetValue((lineItem.ProductId, lineItem.VariantId), out ProductMainImage mainImage))
            {
                vm.ImageUrl         = mainImage.ImageUrl;
                vm.FallbackImageUrl = mainImage.FallbackImageUrl;
            }

            vm.ProductUrl = ProductUrlProvider.GetProductUrl(new GetProductUrlParam
            {
                CultureInfo = param.CultureInfo,
                VariantId   = lineItem.VariantId,
                ProductId   = lineItem.ProductId,
                ProductName = lineItem.ProductSummary.DisplayName,
                SKU         = lineItem.Sku
            });

            vm.AdditionalFees = MapLineItemAdditionalFeeViewModel(lineItem, param.CultureInfo).ToList();

            //Because the whole class is not async, we call a .Result here
            _ = MapRecurringOrderFrequencies(vm, lineItem, param.CultureInfo).Result;

            return(vm);
        }
Ejemplo n.º 2
0
        protected virtual LightLineItemDetailViewModel GetLightLineItemDetailViewModel(CreateLineItemDetailViewModelParam param)
        {
            param.PreMapAction.Invoke(param.LineItem);
            var lineItem = param.LineItem;

            var vm = ViewModelMapper.MapTo <LightLineItemDetailViewModel>(lineItem, param.CultureInfo);

            if (vm.IsValid == null)
            {
                vm.IsValid = true;
            }

            ProductMainImage mainImage;

            if (param.ImageDictionary.TryGetValue(Tuple.Create(lineItem.ProductId, lineItem.VariantId), out mainImage))
            {
                vm.ImageUrl         = mainImage.ImageUrl;
                vm.FallbackImageUrl = mainImage.FallbackImageUrl;
            }

            vm.ProductUrl = ProductUrlProvider.GetProductUrl(new GetProductUrlParam
            {
                CultureInfo = param.CultureInfo,
                VariantId   = lineItem.VariantId,
                ProductId   = lineItem.ProductId,
                ProductName = lineItem.ProductSummary.DisplayName,
                SKU         = lineItem.Sku
            });

            return(vm);
        }