public static Price AsWebModel(this Data.Price price)
        {
            var priceModel = new Price();

            priceModel.InjectFrom(price);
            return(priceModel);
        }
Example #2
0
        public static Price ToViewModel(this DataContracts.Price price)
        {
            var priceViewModel = new Price();

            priceViewModel.Original    = price.List;
            priceViewModel.PricelistId = price.PricelistId;
            priceViewModel.ProductId   = price.ProductId;

            return(priceViewModel);
        }
Example #3
0
        public static Variant AsVariantWebModel(this Data.CatalogItem variation, Data.Price price, string[] options,
                                                IEnumerable <Data.Marketing.PromotionReward> rewards)
        {
            var variantModel = new Variant();

            var variationImage = variation.PrimaryImage ?? (variation.Images != null ? variation.Images.FirstOrDefault() : null);

            string variantlUrlParameter = null;// HttpContext.Current.Request.QueryString["variant"];
            string pathTemplate;

            if (variation is Data.Product)
            {
                pathTemplate = VirtualPathUtility.ToAbsolute("~/products/{0}");
            }
            else
            {
                pathTemplate = VirtualPathUtility.ToAbsolute("~/products/{0}?variant={1}");
            }

            var reward = rewards.FirstOrDefault();

            variantModel.Barcode        = null; // TODO
            variantModel.CompareAtPrice = price != null ? (price.Sale.HasValue ? price.Sale.Value : price.List) : 0;
            //variantModel.Id = variation.Id;
            variantModel.Id    = variation.Code;
            variantModel.Image = variationImage != null?variationImage.AsWebModel(variation.Name, variation.MainProductId) : null;

            PopulateInventory(ref variantModel, variation);
            variantModel.Options = GetOptionValues(options, variation.VariationProperties);

            variantModel.Price = price != null ? (price.Sale.HasValue ? price.Sale.Value : price.List) : 0;
            if (reward != null)
            {
                if (reward.AmountType.Equals("absolute", StringComparison.OrdinalIgnoreCase))
                {
                    variantModel.Price -= reward.Amount;
                }
                if (reward.AmountType.Equals("relative", StringComparison.OrdinalIgnoreCase))
                {
                    variantModel.Price -= variantModel.Price * reward.Amount / 100;
                }
            }

            variantModel.Selected     = variantlUrlParameter != null;
            variantModel.Sku          = variation.Properties.ContainsKey("sku") ? variation.Properties["sku"] as string : variation.Code;
            variantModel.Title        = variation.Name;
            variantModel.Url          = string.Format(pathTemplate, variation.MainProductId, variation.Id);
            variantModel.Weight       = variation.Weight.HasValue ? variation.Weight.Value : 0;
            variantModel.WeightInUnit = null; // TODO
            variantModel.WeightUnit   = variation.WeightUnit;

            return(variantModel);
        }