예제 #1
0
        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);
        }