public virtual async Task <CartViewModel> CreateCartViewModelAsync(CreateRecurringOrderCartViewModelParam param) { var lineItems = param.Cart.GetLineItems(); param.ProductImageInfo = new ProductImageInfo { ImageUrls = await ImageService.GetImageUrlsAsync(lineItems).ConfigureAwait(false), }; var methodDisplayNames = await LookupService.GetLookupDisplayNamesAsync(new GetLookupDisplayNamesParam { CultureInfo = param.CultureInfo, LookupType = LookupType.Order, LookupName = "PaymentMethodType", }); param.PaymentMethodDisplayNames = methodDisplayNames; var roProgramNames = lineItems.Select(x => x.RecurringOrderProgramName) .Where(l => !string.IsNullOrEmpty(l)) .Distinct(StringComparer.OrdinalIgnoreCase) .ToList(); var programTasks = roProgramNames.Select(programName => RecurringOrdersRepository.GetRecurringOrderProgram(ComposerContext.Scope, programName)); var programs = await Task.WhenAll(programTasks); param.RecurringOrderPrograms = programs.ToList(); var vm = RecurringOrderCartViewModelFactory.CreateRecurringOrderCartViewModel(param); await ExtendLineItems(vm, ComposerContext.Scope, ComposerContext.CustomerId, ComposerContext.CultureInfo); return(vm); }
public virtual async Task <CartViewModel> CreateCartViewModelAsync(CreateRecurringOrderCartViewModelParam param) { var lineItems = param.Cart.GetLineItems(); param.ProductImageInfo = new ProductImageInfo { ImageUrls = await ImageService.GetImageUrlsAsync(lineItems).ConfigureAwait(false), }; var methodDisplayNames = await LookupService.GetLookupDisplayNamesAsync(new GetLookupDisplayNamesParam { CultureInfo = param.CultureInfo, LookupType = LookupType.Order, LookupName = "PaymentMethodType", }); param.PaymentMethodDisplayNames = methodDisplayNames; var programTasks = new Dictionary <string, Task <Overture.ServiceModel.RecurringOrders.RecurringOrderProgram> >(StringComparer.OrdinalIgnoreCase); foreach (var el in lineItems) { var programName = el.RecurringOrderProgramName; if (string.IsNullOrEmpty(programName) || programTasks.ContainsKey(programName)) { continue; } programTasks.Add(programName, RecurringOrdersRepository.GetRecurringOrderProgram(ComposerContext.Scope, programName)); } var programs = await Task.WhenAll(programTasks.Values); param.RecurringOrderPrograms = programs.ToList(); var vm = RecurringOrderCartViewModelFactory.CreateRecurringOrderCartViewModel(param); await ExtendLineItems(vm, ComposerContext.Scope, ComposerContext.CustomerId, ComposerContext.CultureInfo); return(vm); }