public virtual LightRecurringOrderCartViewModel CreateLightRecurringOrderCartViewModel(CreateLightRecurringOrderCartViewModelParam param) { if (param == null) { throw new ArgumentNullException(nameof(param)); } if (param.CultureInfo == null) { throw new ArgumentNullException(nameof(param.CultureInfo)); } if (param.ProductImageInfo == null) { throw new ArgumentNullException(nameof(param.ProductImageInfo)); } if (param.ProductImageInfo.ImageUrls == null) { throw new ArgumentNullException(nameof(param.ProductImageInfo.ImageUrls)); } if (string.IsNullOrWhiteSpace(param.BaseUrl)) { throw new ArgumentException(nameof(param.BaseUrl)); } var vm = ViewModelMapper.MapTo <LightRecurringOrderCartViewModel>(param.Cart, param.CultureInfo); vm.LineItemDetailViewModels = LineItemViewModelFactory.CreateLightViewModel(new CreateLightListOfLineItemDetailViewModelParam { Cart = param.Cart, LineItems = param.Cart.GetLineItems(), CultureInfo = param.CultureInfo, ImageInfo = param.ProductImageInfo, BaseUrl = param.BaseUrl }).ToList(); FillNextOcurrence(vm, param.Cart, param.CultureInfo); vm.CartDetailUrl = GetRecurringCartDetailUrl(param.CultureInfo, param.Cart.Name); // Reverse the items order in the Cart so the last added item will be the first in the list if (vm.LineItemDetailViewModels != null) { vm.LineItemDetailViewModels.Reverse(); } vm.IsAuthenticated = ComposerContext.IsAuthenticated; return(vm); }
protected virtual async Task <LightRecurringOrderCartViewModel> CreateLightCartViewModelAsync(CreateLightRecurringOrderCartViewModelParam param) { var lineItems = param.Cart.GetLineItems(); param.ProductImageInfo = new ProductImageInfo { ImageUrls = await ImageService.GetImageUrlsAsync(lineItems).ConfigureAwait(false), }; var vm = RecurringOrderCartViewModelFactory.CreateLightRecurringOrderCartViewModel(param); return(vm); }