public async virtual Task <bool> MapRecurringOrderFrequencies(LineItemDetailViewModel vm, LineItem lineItem, CultureInfo cultureInfo) { if (lineItem == null) { return(false); } var scope = ComposerContext.Scope; var recurringProgramName = lineItem.RecurringOrderProgramName; if (string.IsNullOrEmpty(recurringProgramName) || !RecurringOrdersSettings.Enabled) { return(false); } var program = await RecurringOrderRepository.GetRecurringOrderProgram(scope, recurringProgramName).ConfigureAwait(false); vm.RecurringOrderFrequencyDisplayName = GetRecurringOrderFrequencyDisplayName(program, lineItem, cultureInfo); var programViewModel = RecurringOrderProgramViewModelFactory.CreateRecurringOrderProgramViewModel(program, cultureInfo); vm.RecurringOrderProgramFrequencies = programViewModel?.Frequencies; return(true); }
internal static Mock <IViewModelMapper> Create() { CartProductSummaryViewModel dummyCartProduct = new CartProductSummaryViewModel { DisplayName = GetRandom.String(32), }; TaxViewModel dummyTaxViewModel = new TaxViewModel { DisplayName = GetRandom.String(32), TaxTotal = GetRandom.Decimal(1.0m, 200.0m) }; LineItemDetailViewModel dummyLineItem = new LineItemDetailViewModel { ImageUrl = GetRandom.WwwUrl(), ProductId = GetRandom.String(32), VariantId = GetRandom.String(32), Total = GetRandom.PositiveDouble().ToString(CultureInfo.InvariantCulture), DefaultListPrice = GetRandom.PositiveDouble().ToString(CultureInfo.InvariantCulture), ListPrice = GetRandom.PositiveDouble().ToString(CultureInfo.InvariantCulture), ProductSummary = dummyCartProduct, FallbackImageUrl = GetRandom.WwwUrl(), IsOnSale = GetRandom.Boolean(), Quantity = GetRandom.PositiveInt(), }; OrderSummaryViewModel dummyOrderSummaryViewModel = new OrderSummaryViewModel { Shipping = GetRandom.String(32), SubTotal = GetRandom.String(32), Total = GetRandom.String(32), DiscountTotal = GetRandom.String(32), Taxes = new List <TaxViewModel> { dummyTaxViewModel } }; CartViewModel dummyCart = new CartViewModel { HomepageUrl = GetRandom.String(32), LineItemDetailViewModels = new List <LineItemDetailViewModel> { dummyLineItem }, OrderSummary = dummyOrderSummaryViewModel, IsCartEmpty = GetRandom.Boolean(), TotalQuantity = GetRandom.PositiveInt(), LineItemCount = GetRandom.PositiveInt() }; CompleteCheckoutLineItemViewModel dummyCheckoutLineItem = new CompleteCheckoutLineItemViewModel { Brand = null, BrandId = null, CategoryId = GetRandom.String(32), KeyVariantAttributesList = new List <KeyVariantAttributes>(), Name = GetRandom.String(32), Price = GetRandom.Decimal(), ProductId = GetRandom.String(5), Quantity = GetRandom.Int(), VariantId = GetRandom.String(32) }; var rewardViewModel = new RewardViewModel() { Description = GetRandom.Phrase(40) }; var couponViewModel = new CouponViewModel() { CouponCode = GetRandom.String(7), DisplayText = GetRandom.Phrase(35) }; var viewModelMapper = new Mock <IViewModelMapper>(); viewModelMapper.Setup( mapper => mapper.MapTo <CompleteCheckoutLineItemViewModel>(It.IsNotNull <LineItem>(), It.IsNotNull <CultureInfo>())) .Returns(dummyCheckoutLineItem) .Verifiable(); viewModelMapper.Setup( mapper => mapper.MapTo <CartProductSummaryViewModel>(It.IsNotNull <CartProductSummary>(), It.IsNotNull <CultureInfo>())) .Returns(dummyCartProduct) .Verifiable(); viewModelMapper.Setup(mapper => mapper.MapTo <CartViewModel>(It.IsNotNull <Overture.ServiceModel.Orders.Cart>(), It.IsNotNull <CultureInfo>())) .Returns(dummyCart) .Verifiable(); viewModelMapper.Setup( mapper => mapper.MapTo <LineItemDetailViewModel>(It.IsNotNull <LineItem>(), It.IsNotNull <CultureInfo>())) .Returns(dummyLineItem) .Verifiable(); viewModelMapper.Setup(mapper => mapper.MapTo <TaxViewModel>(It.IsNotNull <Tax>(), It.IsNotNull <CultureInfo>())) .Returns(dummyTaxViewModel) .Verifiable(); viewModelMapper.Setup(mapper => mapper.MapTo <RewardViewModel>(It.IsNotNull <Reward>(), It.IsNotNull <CultureInfo>())) .Returns(rewardViewModel) .Verifiable(); viewModelMapper.Setup( mapper => mapper.MapTo <CouponViewModel>(It.IsNotNull <Coupon>(), It.IsNotNull <CultureInfo>())) .Returns(couponViewModel) .Verifiable(); return(viewModelMapper); }
internal static Mock <IViewModelMapper> CreateViewNullValues() { CartProductSummaryViewModel dummyCartProduct = new CartProductSummaryViewModel { DisplayName = null, }; LineItemDetailViewModel dummyLineItem = new LineItemDetailViewModel { ImageUrl = null, ProductId = null, VariantId = null, Total = null, DefaultListPrice = null, ListPrice = null, ProductSummary = null, FallbackImageUrl = null, IsOnSale = GetRandom.Boolean(), Quantity = GetRandom.PositiveInt(), }; TaxViewModel dummyTaxViewModel = new TaxViewModel { DisplayName = null, TaxTotal = null }; OrderSummaryViewModel dummyOrderSummary = new OrderSummaryViewModel { Shipping = null, SubTotal = null, Taxes = null, Total = null, DiscountTotal = null }; CartViewModel dummyCart = new CartViewModel { HomepageUrl = null, LineItemDetailViewModels = new List <LineItemDetailViewModel> { dummyLineItem }, OrderSummary = null, IsCartEmpty = GetRandom.Boolean(), TotalQuantity = GetRandom.PositiveInt(), LineItemCount = GetRandom.PositiveInt() }; RewardViewModel dummyReward = new RewardViewModel() { Description = null }; CouponViewModel dummyCoupons = new CouponViewModel() { CouponCode = null, DisplayText = null }; var viewModelMapper = new Mock <IViewModelMapper>(); viewModelMapper.Setup( mapper => mapper.MapTo <CartProductSummaryViewModel>(It.IsNotNull <CartProductSummary>(), It.IsNotNull <CultureInfo>())) .Returns(dummyCartProduct) .Verifiable(); viewModelMapper.Setup( mapper => mapper.MapTo <CartViewModel>(It.IsNotNull <Overture.ServiceModel.Orders.Cart>(), It.IsNotNull <CultureInfo>())) .Returns(dummyCart) .Verifiable(); viewModelMapper.Setup( mapper => mapper.MapTo <LineItemDetailViewModel>(It.IsNotNull <LineItem>(), It.IsNotNull <CultureInfo>())) .Returns(dummyLineItem) .Verifiable(); viewModelMapper.Setup( mapper => mapper.MapTo <OrderSummaryViewModel>(It.IsNotNull <Overture.ServiceModel.Orders.Cart>(), It.IsNotNull <CultureInfo>())) .Returns(dummyOrderSummary) .Verifiable(); viewModelMapper.Setup(mapper => mapper.MapTo <TaxViewModel>(It.IsNotNull <Tax>(), It.IsNotNull <CultureInfo>())) .Returns(dummyTaxViewModel) .Verifiable(); viewModelMapper.Setup(mapper => mapper.MapTo <RewardViewModel>(It.IsNotNull <Reward>(), It.IsNotNull <CultureInfo>())) .Returns(dummyReward) .Verifiable(); viewModelMapper.Setup(mapper => mapper.MapTo <CouponViewModel>(It.IsNotNull <Coupon>(), It.IsNotNull <CultureInfo>())) .Returns(dummyCoupons) .Verifiable(); return(viewModelMapper); }
protected virtual string FindUrl(ListOfRecurringOrderLineItems recurringOrderLineItems, LineItemDetailViewModel lineItem, CultureInfo culture) { //TODO: Change if a customer can have more than one template of the same product/variant var recurringLineItem = recurringOrderLineItems.RecurringOrderLineItems.SingleOrDefault(r => string.Compare(r.ProductId, lineItem.ProductId, StringComparison.OrdinalIgnoreCase) == 0 && string.Compare(r.VariantId, lineItem.VariantId, StringComparison.OrdinalIgnoreCase) == 0); if (recurringLineItem == null) { return(string.Empty); } var id = recurringLineItem.RecurringOrderLineItemId; var url = RecurringScheduleUrlProvider.GetRecurringScheduleDetailsUrl(new GetRecurringScheduleDetailsUrlParam() { CultureInfo = culture, RecurringScheduleId = id.ToString() }); return(url); }
public static bool IsRecurringOrderLineItemValid(LineItemDetailViewModel lineitem) { return(!string.IsNullOrEmpty(lineitem.RecurringOrderFrequencyName) && !string.IsNullOrEmpty(lineitem.RecurringOrderProgramName)); }
protected virtual async Task <List <LineItemDetailViewModel> > ProcessPickedLineItemsAsync(List <PickedItemViewModel> pickedItemsList, List <LineItemDetailViewModel> lineItemsList, CultureInfo culture) { var itemsToProcess = pickedItemsList .Where(x => x.PickingResult == PickingResult.Substituted.ToString() || x.PickingResult == PickingResult.NotAvailable.ToString()) .Select(x => (x.ProductId, x.VariantId)).ToList(); if (!itemsToProcess.Any()) { return(lineItemsList); } var result = new List <LineItemDetailViewModel>(); var imgDictionary = await CreateImageDictionary(itemsToProcess).ConfigureAwait(false); foreach (var pickedItem in pickedItemsList) { var itemPickingStatus = (PickingResult)Enum.Parse(typeof(PickingResult), pickedItem.PickingResult, true); LineItemDetailViewModel toAddVM = null; if (itemPickingStatus == PickingResult.Available) { foreach (var lineItem in lineItemsList) { if (lineItem.ProductId != pickedItem.ProductId || lineItem.VariantId != pickedItem.VariantId) { continue; } if (lineItem.Quantity == pickedItem.Quantity) { toAddVM = lineItem; } else { var createdLineItem = CreateLineItemFromPickedItem(pickedItem); toAddVM = LineItemViewModelFactory.GetLineItemDetailViewModel(new CreateLineItemDetailViewModelParam { LineItem = createdLineItem, CultureInfo = culture }); toAddVM.ImageUrl = lineItem.ImageUrl; toAddVM.FallbackImageUrl = lineItem.FallbackImageUrl; } break; } } else if (itemPickingStatus == PickingResult.NotAvailable || itemPickingStatus == PickingResult.Substituted) { LineItem toAddLineItem = CreateLineItemFromPickedItem(pickedItem); toAddVM = LineItemViewModelFactory.GetLineItemDetailViewModel(new CreateLineItemDetailViewModelParam { LineItem = toAddLineItem, CultureInfo = culture, ImageDictionary = imgDictionary }); if (itemPickingStatus == PickingResult.Substituted) { toAddVM.IsSubstituted = true; } else if (itemPickingStatus == PickingResult.NotAvailable) { toAddVM.IsUnavailable = true; } } result.Add(toAddVM); } return(result); }