Ejemplo n.º 1
0
        protected virtual async Task <WishListViewModel> CreateWishListViewModelAsync(CreateWishListViewModelParam param)
        {
            var viewModel = new WishListViewModel();
            var lineItems = param.WishList.GetLineItems();

            if (lineItems != null)
            {
                var imageInfo = new ProductImageInfo
                {
                    ImageUrls = await ImageService.GetImageUrlsAsync(lineItems).ConfigureAwait(false),
                };

                viewModel.Items = LineItemViewModelFactory.CreateViewModel(new CreateListOfLineItemDetailViewModelParam {
                    Cart        = param.WishList,
                    LineItems   = lineItems,
                    CultureInfo = param.CultureInfo,
                    ImageInfo   = imageInfo,
                    BaseUrl     = param.BaseUrl
                }).ToList();

                viewModel.Items.Reverse();
                viewModel.TotalQuantity = lineItems.Count;
            }

            var getUrlParam = new GetWishListUrlParam
            {
                BaseUrl     = param.BaseUrl,
                CultureInfo = param.CultureInfo
            };

            viewModel.SignInUrl = WishListUrlProvider.GetSignInUrl(getUrlParam);
            viewModel.ShareUrl  = viewModel.TotalQuantity == 0 ? string.Empty: WishListUrlProvider.GetShareUrl(new GetShareWishListUrlParam
            {
                BaseUrl     = param.BaseUrl,
                CultureInfo = param.CultureInfo,
                CustomerId  = param.WishList.CustomerId,
                Scope       = param.WishList.ScopeId,
                WebsiteId   = param.WebsiteId
            });

            return(viewModel);
        }
        protected virtual OrderShipmentDetailViewModel GetOrderShipmentDetailViewModel(Shipment shipment, CreateOrderDetailViewModelParam param)
        {
            var shipmentVm = new OrderShipmentDetailViewModel();

            var index = param.Order.Cart.Shipments.IndexOf(shipment);

            if (index >= 0)
            {
                shipmentVm.Index = (index + 1).ToString();
            }

            if (shipment.FulfillmentScheduledTimeBeginDate.HasValue)
            {
                shipmentVm.ScheduledShipDate = LocalizationHelper.LocalizedFormat("General", "ShortDateFormat", shipment.FulfillmentScheduledTimeBeginDate.Value, param.CultureInfo);
            }

            shipmentVm.LineItems = LineItemViewModelFactory.CreateViewModel(new CreateListOfLineItemDetailViewModelParam
            {
                Cart        = param.Order.Cart,
                LineItems   = shipment.LineItems,
                CultureInfo = param.CultureInfo,
                ImageInfo   = param.ProductImageInfo,
                BaseUrl     = param.BaseUrl
            }).ToList();

            if (param.ShipmentsNotes != null && param.ShipmentsNotes.ContainsKey(shipment.Id))
            {
                var notes = param.ShipmentsNotes[shipment.Id];
                shipmentVm.Comments = notes;
            }

            shipmentVm.Rewards = RewardViewModelFactory.CreateViewModel(shipment.Rewards, param.CultureInfo, RewardLevel.FulfillmentMethod, RewardLevel.Shipment).ToList();

            shipmentVm.ShippingAddress = CartViewModelFactory.GetAddressViewModel(shipment.Address, param.CultureInfo);

            var fulfillmentMethodName    = shipment.FulfillmentMethod.Name;
            var shippingTrackingProvider = ShippingTrackingProviderFactory.ResolveProvider(fulfillmentMethodName);

            shipmentVm.TrackingInfo = shippingTrackingProvider.GetTrackingInfoViewModel(shipment, param.CultureInfo);
            shipmentVm.History      = GetOrderChangesViewModel(param.OrderChanges, param.CultureInfo, _shipmentStatus);
            if (!string.IsNullOrWhiteSpace(shipment.Status))
            {
                shipmentVm.ShipmentStatusName = shipment.Status;
                if (param.ShipmentStatuses.TryGetValue(shipment.Status, out string shipmentStatusLookup))
                {
                    shipmentVm.ShipmentStatus = shipmentStatusLookup;
                }

                if (shipmentVm.History.Any(h => h.NewValue.Equals(shipment.Status)))
                {
                    shipmentVm.ShipmentStatusDate = shipmentVm.History.OrderByDescending(x => x.Date).First(h => h.NewValue.Equals(shipment.Status)).Date;
                }
            }
            else
            {
                shipmentVm.ShipmentStatusName = string.Empty;
                shipmentVm.ShipmentStatus     = string.Empty;
                shipmentVm.ShipmentStatusDate = string.Empty;
            }

            shipmentVm.ShippingMethod = GetShippingMethodViewModel(shipment, param);
            return(shipmentVm);
        }