Exemple #1
0
        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);
        }
Exemple #5
0
 public static bool IsRecurringOrderLineItemValid(LineItemDetailViewModel lineitem)
 {
     return(!string.IsNullOrEmpty(lineitem.RecurringOrderFrequencyName) &&
            !string.IsNullOrEmpty(lineitem.RecurringOrderProgramName));
 }
Exemple #6
0
        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);
        }