示例#1
0
 public static async Task MapAsync(this OrganizedShoppingCartItem entity, WishlistModel.WishlistItemModel model)
 {
     await MapperFactory.MapAsync(entity, model, null);
 }
示例#2
0
        public override async Task MapAsync(IEnumerable <OrganizedShoppingCartItem> from, WishlistModel to, dynamic parameters = null)
        {
            Guard.NotNull(from, nameof(from));
            Guard.NotNull(to, nameof(to));

            if (!from.Any())
            {
                return;
            }

            await base.MapAsync(from, to, null);

            to.IsEditable           = parameters?.IsEditable == true;
            to.EmailWishlistEnabled = _shoppingCartSettings.EmailWishlistEnabled;
            to.DisplayAddToCart     = await _services.Permissions.AuthorizeAsync(Permissions.Cart.AccessShoppingCart);

            var customer = from.FirstOrDefault().Item.Customer;

            to.CustomerGuid     = customer.CustomerGuid;
            to.CustomerFullname = customer.GetFullName();
            to.ShowItemsFromWishlistToCartButton = _shoppingCartSettings.ShowItemsFromWishlistToCartButton;

            // Cart warnings
            var warnings    = new List <string>();
            var cartIsValid = await _shoppingCartValidator.ValidateCartItemsAsync(from, warnings);

            if (!cartIsValid)
            {
                to.Warnings.AddRange(warnings);
            }

            foreach (var cartItem in from)
            {
                var model = new WishlistModel.WishlistItemModel
                {
                    DisableBuyButton = cartItem.Item.Product.DisableBuyButton,
                };

                await cartItem.MapAsync(model);

                if (parameters?.IsOffcanvas == true)
                {
                    model.QuantityUnitName = null;

                    var item = from.Where(c => c.Item.Id == model.Id).FirstOrDefault();

                    if (item != null)
                    {
                        model.AttributeInfo = await _productAttributeFormatter.FormatAttributesAsync(
                            item.Item.AttributeSelection,
                            item.Item.Product,
                            null,
                            htmlEncode : false,
                            separator : ", ",
                            includePrices : false,
                            includeGiftCardAttributes : false,
                            includeHyperlinks : false);
                    }
                }

                to.AddItems(model);
            }
        }