Ejemplo n.º 1
0
        /// <summary>
        /// 转换订单商品到显示信息
        /// </summary>
        /// <param name="orderProduct">订单商品</param>
        /// <returns></returns>
        public static OrderProductDisplayInfo ToDisplayInfo(this OrderProduct orderProduct)
        {
            var productAlbumManager = Application.Ioc.Resolve <ProductAlbumManager>();
            var currencyManager     = Application.Ioc.Resolve <CurrencyManager>();
            var info    = new OrderProductDisplayInfo();
            var product = orderProduct.Product;

            info.ProductId      = product.Id;
            info.OrderProductId = orderProduct.Id;
            info.Name           = new T(product.Name);
            info.ImageWebPath   = productAlbumManager.GetAlbumImageWebPath(
                product.Id, null, ProductAlbumImageType.Thumbnail);
            info.MatchedParameters            = orderProduct.MatchParameters;
            info.MatchedParametersDescription = product
                                                .GetMatchParametersDescription(orderProduct.MatchParameters);
            info.UnitPrice                    = orderProduct.UnitPrice;
            info.OriginalUnitPrice            = orderProduct.OriginalUnitPriceCalcResult.Parts.Sum();
            info.Currency                     = currencyManager.GetCurrency(orderProduct.Currency);
            info.UnitPriceString              = info.Currency.Format(info.UnitPrice);
            info.UnitPriceDescription         = orderProduct.UnitPriceCalcResult.Parts.GetDescription();
            info.OriginalUnitPriceString      = info.Currency.Format(info.OriginalUnitPrice);
            info.OriginalUnitPriceDescription = orderProduct.OriginalUnitPriceCalcResult.Parts.GetDescription();
            info.Count         = orderProduct.Count;
            info.ShippedCount  = orderProduct.Deliveries.Sum(d => (long?)d.Count) ?? 0;
            info.SellerId      = product.Seller?.Id;
            info.Seller        = product.Seller?.Username;
            info.State         = product.State;
            info.Type          = product.Type;
            info.IsRealProduct = product.GetProductType() is IAmRealProduct;
            return(info);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取订单商品数量的Html
        /// </summary>
        /// <param name="info">订单商品的信息</param>
        /// <returns></returns>
        public static HtmlString GetOrderCountHtml(this OrderProductDisplayInfo info)
        {
            var templateManager = Application.Ioc.Resolve <TemplateManager>();
            var html            = templateManager.RenderTemplate(
                "shopping.order/tmpl.order_product_count.html", new { info });

            return(new HtmlString(html));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 获取编辑订单商品数量的Html
        /// </summary>
        /// <param name="info">订单商品的信息</param>
        /// <returns></returns>
        public static HtmlString GetCountEditor(this OrderProductDisplayInfo info)
        {
            var templateManager = Application.Ioc.Resolve <TemplateManager>();
            var html            = templateManager.RenderTemplate(
                "common.base/tmpl.number_input_integer.html",
                new { extraClass = "order-count", value = info.Count });

            return(new HtmlString(html));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 获取编辑订单商品价格的Html
        /// </summary>
        /// <param name="info">订单商品的信息</param>
        /// <returns></returns>
        public static HtmlString GetPriceEditor(this OrderProductDisplayInfo info)
        {
            var templateManager = Application.Ioc.Resolve <TemplateManager>();
            var html            = templateManager.RenderTemplate(
                "common.base/tmpl.number_input_decimal.html",
                new { extraClass = "price", value = info.UnitPrice });

            return(new HtmlString(html));
        }
        /// <summary>
        /// 从订单商品创建参数生成显示信息
        /// </summary>
        /// <param name="parameters">订单商品创建参数</param>
        /// <param name="userId">用户Id,未登录时等于null</param>
        /// <returns></returns>
        public static OrderProductDisplayInfo ToOrderProductDisplayInfo(
            this CreateOrderProductParameters parameters, Guid?userId)
        {
            var orderManager         = Application.Ioc.Resolve <SellerOrderManager>();
            var productManager       = Application.Ioc.Resolve <ProductManager>();
            var productAlbumManager  = Application.Ioc.Resolve <ProductAlbumManager>();
            var currencyManager      = Application.Ioc.Resolve <CurrencyManager>();
            var descriptionProviders = Application.Ioc.ResolveMany <IProductMatchParametersDescriptionProvider>();
            var unitPrice            = orderManager.CalculateOrderProductUnitPrice(userId, parameters);
            var info    = new OrderProductDisplayInfo();
            var product = productManager.GetWithCache(parameters.ProductId);

            if (product == null)
            {
                throw new BadRequestException(new T("The product you are try to purchase does not exist."));
            }
            info.ProductId      = product.Id;
            info.OrderProductId = null;
            info.Name           = new T(product.Name);
            info.ImageWebPath   = productAlbumManager.GetAlbumImageWebPath(
                product.Id, null, ProductAlbumImageType.Thumbnail);
            info.MatchedParameters            = parameters.MatchParameters;
            info.MatchedParametersDescription = string.Join(" ", descriptionProviders
                                                            .Select(p => p.GetDescription(product, parameters.MatchParameters))
                                                            .Where(d => !string.IsNullOrEmpty(d)));
            info.UnitPrice                    = unitPrice.Parts.Sum();
            info.OriginalUnitPrice            = info.UnitPrice;
            info.Currency                     = currencyManager.GetCurrency(unitPrice.Currency);
            info.UnitPriceString              = info.Currency.Format(info.UnitPrice);
            info.UnitPriceDescription         = unitPrice.Parts.GetDescription();
            info.OriginalUnitPriceString      = info.UnitPriceString;
            info.OriginalUnitPriceDescription = info.UnitPriceDescription;
            info.Count         = parameters.MatchParameters.GetOrderCount();
            info.ShippedCount  = 0;
            info.SellerId      = product.Seller?.Id;
            info.Seller        = product.Seller?.Username;
            info.State         = product.State;
            info.Type          = product.Type;
            info.IsRealProduct = product.GetProductType() is IAmRealProduct;
            return(info);
        }