Exemplo n.º 1
0
        protected virtual void FillRecurringScheduleUrl(IRecurringOrderCartViewModel roCartVm, CultureInfo cultureInfo)
        {
            var url = RecurringScheduleUrlProvider.GetRecurringScheduleUrl(new GetRecurringScheduleUrlParam
            {
                CultureInfo = cultureInfo
            });

            roCartVm.RecurringScheduleUrl = url;
        }
        public virtual async Task <RecurringOrderTemplateViewModel> CreateRecurringOrderTemplateDetailsViewModel(CreateRecurringOrderTemplateDetailsViewModelParam param)
        {
            if (param == null)
            {
                throw new ArgumentNullException(nameof(param));
            }
            if (param.CultureInfo == null)
            {
                throw new ArgumentException(GetMessageOfNull(nameof(param.CultureInfo)), nameof(param));
            }
            if (param.ProductImageInfo == null)
            {
                throw new ArgumentException(GetMessageOfNull(nameof(param.ProductImageInfo)), nameof(param));
            }
            if (param.ProductImageInfo.ImageUrls == null)
            {
                throw new ArgumentException(GetMessageOfNull(nameof(param.ProductImageInfo.ImageUrls)), nameof(param));
            }
            if (param.ScopeId == null)
            {
                throw new ArgumentException(GetMessageOfNull(nameof(param.ScopeId)), nameof(param));
            }
            if (param.RecurringOrderLineItem == null)
            {
                throw new ArgumentException(GetMessageOfNull(nameof(param.RecurringOrderLineItem)), nameof(param));
            }

            var vm = new RecurringOrderTemplateViewModel();

            var imgDictionary = LineItemHelper.BuildImageDictionaryFor(param.ProductImageInfo.ImageUrls);

            var recurringScheduleUrl = RecurringScheduleUrlProvider.GetRecurringScheduleUrl(new GetRecurringScheduleUrlParam
            {
                CultureInfo = param.CultureInfo
            });

            var lineItemViewModel = await MapToTemplateLineItemViewModel(new MapToTemplateLineItemViewModelParam
            {
                RecurringOrderlineItem = param.RecurringOrderLineItem,
                CultureInfo            = param.CultureInfo,
                ImageDictionnary       = imgDictionary,
                BaseUrl = param.BaseUrl,
                RecurringScheduleUrl = recurringScheduleUrl
            }).ConfigureAwait(false);

            if (lineItemViewModel != null)
            {
                lineItemViewModel.ShippingAddressId = param.RecurringOrderLineItem.ShippingAddressId;
                vm.RecurringOrderTemplateLineItemViewModels.Add(lineItemViewModel);
            }

            return(vm);
        }
        public virtual async Task <List <RecurringOrderTemplateViewModel> > CreateTemplateGroupedShippingAddress(CreateTemplateGroupedShippingAddressParam param)
        {
            if (param == null)
            {
                throw new ArgumentNullException(nameof(param));
            }
            if (param.ListOfRecurringOrderLineItems == null)
            {
                throw new ArgumentException(GetMessageOfNull(nameof(param.ListOfRecurringOrderLineItems)), nameof(param));
            }
            if (param.CultureInfo == null)
            {
                throw new ArgumentException(GetMessageOfNull(nameof(param.CultureInfo)), nameof(param));
            }
            if (param.ProductImageInfo == null)
            {
                throw new ArgumentException(GetMessageOfNull(nameof(param.ProductImageInfo)), nameof(param));
            }
            if (param.ProductImageInfo.ImageUrls == null)
            {
                throw new ArgumentException(GetMessageOfNull(nameof(param.ProductImageInfo.ImageUrls)), nameof(param));
            }
            if (param.ScopeId == null)
            {
                throw new ArgumentException(GetMessageOfNull(nameof(param.ScopeId)), nameof(param));
            }

            var groups = param.ListOfRecurringOrderLineItems.RecurringOrderLineItems.GroupBy(grp => grp.ShippingAddressId);

            var imgDictionary = LineItemHelper.BuildImageDictionaryFor(param.ProductImageInfo.ImageUrls);

            var itemList = new List <RecurringOrderTemplateViewModel>();

            var recurringScheduleUrl = RecurringScheduleUrlProvider.GetRecurringScheduleUrl(new GetRecurringScheduleUrlParam
            {
                CultureInfo = param.CultureInfo,
            });

            foreach (var group in groups)
            {
                var templateViewModel = new RecurringOrderTemplateViewModel
                {
                    ShippingAddress = await MapShippingAddress(group.Key, param.CultureInfo).ConfigureAwait(false)
                };

                var tasks = group.Select(g => MapToTemplateLineItemViewModel(new MapToTemplateLineItemViewModelParam
                {
                    RecurringOrderlineItem = g,
                    CultureInfo            = param.CultureInfo,
                    ImageDictionnary       = imgDictionary,
                    BaseUrl = param.BaseUrl,
                    RecurringScheduleUrl = recurringScheduleUrl
                }));

                var templateLineItems = await Task.WhenAll(tasks);

                //Filter null to not have an error when rendering the page
                templateViewModel.RecurringOrderTemplateLineItemViewModels.AddRange(templateLineItems.Where(t => t != null).ToList());

                itemList.Add(templateViewModel);
            }

            return(itemList);
        }
        public virtual MenuViewModel CreateMenu(string currentUrl)
        {
            var urlParam = new BaseUrlParameter
            {
                CultureInfo = ComposerContext.CultureInfo
            };

            bool recurringOrderConfigEnabled = RecurringOrdersSettings.Enabled;
            var  myAccountUrl      = MyAccountUrlProvider.GetMyAccountUrl(urlParam);
            var  addressListUrl    = MyAccountUrlProvider.GetAddressListUrl(urlParam);
            var  myOrderHistoryUrl = OrderUrlProvider.GetOrderHistoryUrl(new GetOrderUrlParameter {
                CultureInfo = ComposerContext.CultureInfo
            });
            var myWishListUrl = WishListUrlProvider.GetWishListUrl(new GetWishListUrlParam {
                CultureInfo = ComposerContext.CultureInfo
            });
            var myRecurringScheduleUrl = RecurringScheduleUrlProvider.GetRecurringScheduleUrl(new GetRecurringScheduleUrlParam {
                CultureInfo = ComposerContext.CultureInfo
            });

            var currentPageId = new Guid(currentUrl);

            var menu = new MenuViewModel {
                MenuItems = new List <MenuItemViewModel>()
            };
            var pageConfiguration       = SiteConfiguration.GetPagesConfiguration(ComposerContext.CultureInfo, WebsiteContext.WebsiteId);
            var myAccountPage           = PageService.GetPage(pageConfiguration.MyAccountPageId, ComposerContext.CultureInfo);
            var myAddressPage           = PageService.GetPage(pageConfiguration.AddressListPageId, ComposerContext.CultureInfo);
            var myOrderHistoryPage      = PageService.GetPage(pageConfiguration.OrderHistoryPageId, ComposerContext.CultureInfo);
            var myWishListage           = PageService.GetPage(pageConfiguration.MyWishListPageId, ComposerContext.CultureInfo);
            var myRecurringSchedulePage = PageService.GetPage(RecurringOrdersSettings.RecurringSchedulePageId, ComposerContext.CultureInfo);

            var myAccountMenuItem = new MenuItemViewModel
            {
                Name     = myAccountPage.MenuTitle,
                Url      = myAccountUrl,
                IsActive = currentPageId == pageConfiguration.MyAccountPageId ||
                           currentPageId == pageConfiguration.ChangePasswordPageId
            };

            var myAdressesMenuItem = new MenuItemViewModel
            {
                Name     = myAddressPage.MenuTitle,
                Url      = addressListUrl,
                IsActive = currentPageId == pageConfiguration.AddressListPageId ||
                           currentPageId == pageConfiguration.AddAddressPageId ||
                           currentPageId == pageConfiguration.UpdateAddressPageId
            };

            var myWishListMenuItem = new MenuItemViewModel
            {
                Name     = myWishListage.MenuTitle,
                Url      = myWishListUrl,
                IsActive = currentPageId == pageConfiguration.MyWishListPageId
            };

            var myOrderHistoryMenuItem = new MenuItemViewModel
            {
                Name     = myOrderHistoryPage.MenuTitle,
                Url      = myOrderHistoryUrl,
                IsActive = currentPageId == pageConfiguration.OrderHistoryPageId ||
                           currentPageId == pageConfiguration.OrderDetailsPageId ||
                           currentPageId == RecurringOrdersSettings.RecurringCartDetailsPageId
            };

            var myRecurringScheduleMenuItem = new MenuItemViewModel
            {
                Name     = myRecurringSchedulePage.MenuTitle,
                Url      = myRecurringScheduleUrl,
                IsActive = currentPageId == RecurringOrdersSettings.RecurringSchedulePageId || currentPageId == RecurringOrdersSettings.RecurringScheduleDetailsPageId
            };

            menu.MenuItems.AddRange(new List <MenuItemViewModel> {
                myAccountMenuItem, myWishListMenuItem, myAdressesMenuItem, myOrderHistoryMenuItem
            });

            if (recurringOrderConfigEnabled)
            {
                menu.MenuItems.Add(myRecurringScheduleMenuItem);
            }

            return(menu);
        }