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); }
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); }