Пример #1
0
        private List <FashionItemContent> GetProductVariants(FashionProductViewModel model)
        {
            var fashionItems = model.Variants.Value
                               .Select(x => x.CatalogContent)
                               .OfType <FashionItemContent>()
                               .ToList();

            return(fashionItems);
        }
Пример #2
0
        public virtual FashionProductViewModel Create(FashionProduct currentContent, string variationCode)
        {
            var variants = GetVariants(currentContent).ToList();

            FashionVariant variant;

            if (!TryGetFashionVariant(variants, variationCode, out variant))
            {
                return(new FashionProductViewModel
                {
                    Product = currentContent,
                    Images = currentContent.GetAssets <IContentImage>(_contentLoader, _urlResolver)
                });
            }

            var market          = _currentMarket.GetCurrentMarket();
            var currency        = _currencyservice.GetCurrentCurrency();
            var defaultPrice    = GetDefaultPrice(variant.Code, market, currency);
            var discountedPrice = GetDiscountPrice(defaultPrice, market, currency);

            var viewModel = new FashionProductViewModel
            {
                Product         = currentContent,
                Variant         = variant,
                ListingPrice    = defaultPrice != null ? defaultPrice.UnitPrice : new Money(0, currency),
                DiscountedPrice = discountedPrice,
                Colors          = variants
                                  .Where(x => x.Size != null)
                                  .GroupBy(x => x.Color)
                                  .Select(g => new SelectListItem
                {
                    Selected = false,
                    Text     = g.Key,
                    Value    = g.Key
                })
                                  .ToList(),
                Sizes = variants
                        .Where(x => x.Color != null && x.Color.Equals(variant.Color, StringComparison.OrdinalIgnoreCase))
                        .Select(x => new SelectListItem
                {
                    Selected = false,
                    Text     = x.Size,
                    Value    = x.Size
                })
                        .ToList(),
                Color       = variant.Color,
                Size        = variant.Size,
                Images      = variant.GetAssets <IContentImage>(_contentLoader, _urlResolver),
                IsAvailable = defaultPrice != null
            };

            return(viewModel);
        }
Пример #3
0
        private void CreateSizeListItems(FashionProductViewModel model, List <FashionItemContent> fashionItems)
        {
            if (model.FashionItemViewModel != null)
            {
                List <SelectListItem> items =
                    fashionItems.Distinct(new FashionProductSizeVariationComparer())
                    .OrderBy(x => {
                    return(ShoppingController.SortSizes(model.SizeType + "/" + model.SizeUnit + "/" + x.Facet_Size));
                })
                    .Select(x => {
                    var inventory = _inventoryService.GetTotal(new CatalogKey(AppContext.Current.ApplicationId, x.Code));
                    bool inStock  = inventory != null && inventory.InStockQuantity - inventory.ReservedQuantity > 0;
                    return(CreateSelectListItem(x.Facet_Size, x.Facet_Size + GetStockText(inStock), !inStock, x.Code));
                }).ToList();

                model.Size = items;
            }
        }
Пример #4
0
        public FashionProductViewModel CreateFashionProductViewModel(FashionProductContent currentContent, HomePage currentPage)
        {
            var model = new FashionProductViewModel(currentContent);

            InitializeProductViewModel(model);

            // get delivery and returns from the start page
            var startPage = ContentLoader.Get <HomePage>(ContentReference.StartPage);

            model.DeliveryAndReturns = startPage.Settings.DeliveryAndReturns;

            model.SizeGuideReference = GetSizeGuide(currentContent);

            model.SizeUnit = currentContent.SizeUnit;
            model.SizeType = currentContent.SizeType;

            return(model);
        }
Пример #5
0
        public ViewResult Product(string productId, HomePage currentPage)
        {
            var contentLoader = ServiceLocator.Current.GetInstance <IContentLoader>();
            ContentReference        productLink = null;
            FashionProductViewModel model;

            // First we try the content link directly
            ContentReference.TryParse(productId, out productLink);
            if (ContentReference.IsNullOrEmpty(productLink))
            {
                // Then we try the code
                var referenceConverter = ServiceLocator.Current.GetInstance <ReferenceConverter>();
                try
                {
                    productLink = referenceConverter.GetContentLink(productId, CatalogContentType.CatalogEntry);
                }
                catch (Exception ex)
                {
                    // We cannot parse it
                    _log.Warning("Cannot parse " + productId + " as a product link or code", ex);
                    productLink = null;
                }
            }

            if (productLink != null)
            {
                var    currentContent = contentLoader.Get <FashionProductContent>(productLink);
                string size           = "";
                string color          = "";
                currentPage = currentPage ?? contentLoader.Get <HomePage>(ContentReference.StartPage);

                model = GetProductViewModel(currentContent, currentPage, size, color);
            }
            else
            {
                model = new FashionProductViewModel(null);
            }

            return(View("_Product", model));
        }
        public ViewResult Product(string productId, HomePage currentPage)
        {
            var contentLoader = ServiceLocator.Current.GetInstance <IContentLoader>();
            ContentReference        productLink;
            FashionProductViewModel model;

            if (!productId.Contains("_"))
            {
                int pid = 0;
                if (int.TryParse(productId, out pid))
                {
                    var referenceConverter = ServiceLocator.Current.GetInstance <ReferenceConverter>();
                    productLink = referenceConverter.GetContentLink(pid, CatalogContentType.CatalogEntry, 0);
                }
                else
                {
                    ContentReference.TryParse(productId, out productLink);
                }
            }
            else
            {
                productLink = ContentReference.Parse(productId);
            }
            if (productLink != null)
            {
                var    currentContent = contentLoader.Get <FashionProductContent>(productLink);
                string size           = "";
                string color          = "";
                currentPage = currentPage ?? contentLoader.Get <HomePage>(ContentReference.StartPage);

                model = GetProductViewModel(currentContent, currentPage, size, color);
            }
            else
            {
                model = new FashionProductViewModel(null);
            }

            return(View("_Product", model));
        }
Пример #7
0
        public ActionResult Index(FashionProduct currentContent, string variationCode = "", bool quickview = false)
        {
            var variations = GetVariations(currentContent).ToList();

            if (_isInEditMode && !variations.Any())
            {
                var productWithoutVariation = new FashionProductViewModel
                {
                    Product = currentContent,
                    Images  = currentContent.GetAssets <IContentImage>(_contentLoader, _urlResolver)
                };
                return(Request.IsAjaxRequest() ? PartialView("ProductWithoutVariation", productWithoutVariation) : (ActionResult)View("ProductWithoutVariation", productWithoutVariation));
            }

            FashionVariant variation;

            if (!TryGetFashionVariant(variations, variationCode, out variation))
            {
                return(HttpNotFound());
            }

            var market   = _currentMarket.GetCurrentMarket();
            var currency = _currencyservice.GetCurrentCurrency();

            var defaultPrice    = GetDefaultPrice(variation, market, currency);
            var discountedPrice = GetDiscountPrice(defaultPrice, market, currency);

            var viewModel = new FashionProductViewModel
            {
                Product         = currentContent,
                Variation       = variation,
                ListingPrice    = defaultPrice != null ? defaultPrice.UnitPrice : new Money(0, currency),
                DiscountedPrice = discountedPrice,
                Colors          = variations
                                  .Where(x => x.Size != null)
                                  .GroupBy(x => x.Color)
                                  .Select(g => new SelectListItem
                {
                    Selected = false,
                    Text     = g.First().Color,
                    Value    = g.First().Color
                })
                                  .ToList(),
                Sizes = variations
                        .Where(x => x.Color != null && x.Color.Equals(variation.Color, StringComparison.OrdinalIgnoreCase))
                        .Select(x => new SelectListItem
                {
                    Selected = false,
                    Text     = x.Size,
                    Value    = x.Size
                })
                        .ToList(),
                Color       = variation.Color,
                Size        = variation.Size,
                Images      = variation.GetAssets <IContentImage>(_contentLoader, _urlResolver),
                IsAvailable = defaultPrice != null
            };

            if (quickview)
            {
                return(PartialView("Quickview", viewModel));
            }

            return(Request.IsAjaxRequest() ? PartialView(viewModel) : (ActionResult)View(viewModel));
        }
Пример #8
0
        public static KeyValuePair <FashionProduct, FashionProductViewModel> ComplexMap()
        {
            var sizes           = new List <Size>();
            var sizesViewModels = new List <SizeViewModel>();

            var random    = new Random();
            var sizeCount = random.Next(3, 10);
            var cityCount = random.Next(4, 10);

            for (var i = 0; i < sizeCount; i++)
            {
                var newGuid = Guid.NewGuid();
                var name    = string.Format("Size {0}", i);
                var alias   = string.Format("Alias Size {0}", i);
                sizes.Add(
                    new Size
                {
                    Id        = newGuid,
                    Name      = name,
                    Alias     = alias,
                    SortOrder = i
                });
                sizesViewModels.Add(new SizeViewModel
                {
                    Id        = newGuid,
                    Name      = name,
                    Alias     = alias,
                    SortOrder = i
                });
            }

            var cities         = new List <City>();
            var cityViewModels = new List <CityViewModel>();

            var ftRandom = new Random();

            for (var i = 0; i < cityCount; i++)
            {
                var newGuid = Guid.NewGuid();
                var name    = string.Format("City {0}", i);

                var featureCount      = ftRandom.Next(7, 50);
                var features          = new Feature[featureCount];
                var featureViewModels = new List <FeatureViewModel>();

                for (var j = 0; j < featureCount; j++)
                {
                    var fId          = Guid.NewGuid();
                    var fName        = string.Format("Feature - {0}", j);
                    var fDescription = string.Format("Description Feature - {0}", j);
                    features[j] =
                        new Feature
                    {
                        Id          = fId,
                        Name        = fName,
                        Description = fDescription,
                        Rank        = 8
                    };
                    featureViewModels.Add(new FeatureViewModel
                    {
                        Id          = fId,
                        Name        = fName,
                        Description = fDescription,
                        Rank        = 8
                    });
                }

                cities.Add(new City
                {
                    Id       = newGuid,
                    Name     = name,
                    Features = features
                });
                cityViewModels.Add(new CityViewModel
                {
                    Id           = newGuid,
                    Name         = name,
                    FeaturesList = featureViewModels
                });
            }

            var brandId   = Guid.NewGuid();
            var brandName = "Brand name";
            var brand     = new Brand
            {
                Id   = brandId,
                Name = brandName
            };
            var brandViewModel = new BrandViewModel
            {
                Id   = brandId,
                Name = brandName
            };

            var supId         = Guid.NewGuid();
            var supplierName  = "Supplier name";
            var agreementDate = DateTime.Now;
            var supplier      = new Supplier
            {
                Id            = supId,
                Name          = supplierName,
                AgreementDate = agreementDate,
                Rank          = 6,
                Sizes         = sizes,
            };

            var supplierViewModel = new SupplierViewModel
            {
                Id            = supId,
                Name          = supplierName,
                AgreementDate = agreementDate,
                Sizes         = sizesViewModels,
            };

            var sizeId     = Guid.NewGuid();
            var lonelySize = "Lonely size";
            var sizeSAlias = "Size's alias";
            var size       = new Size
            {
                Id        = sizeId,
                Name      = lonelySize,
                Alias     = sizeSAlias,
                SortOrder = 5
            };
            var sizeViewModel = new SizeViewModel
            {
                Id        = sizeId,
                Name      = lonelySize,
                Alias     = sizeSAlias,
                SortOrder = 5
            };

            var optionsCount = random.Next(10, 50);

            var options          = new List <ProductOption>();
            var optionViewModels = new List <ProductOptionViewModel>();

            for (var i = 0; i < optionsCount; i++)
            {
                var optionId = Guid.NewGuid();
                var color    = "Random";
                var discount = 54M;
                var price    = 34M;
                var stock    = 102;
                var weight   = 23;
                options.Add(
                    new ProductOption
                {
                    Id       = optionId,
                    Cities   = cities,
                    Color    = color,
                    Discount = discount,
                    Price    = price,
                    Stock    = stock,
                    Weight   = weight,
                    Size     = size
                });
                optionViewModels.Add(
                    new ProductOptionViewModel
                {
                    Id              = optionId,
                    Cities          = cityViewModels,
                    Color           = color,
                    Discount        = discount,
                    Price           = price,
                    Stock           = stock,
                    Weight          = weight,
                    Size            = sizeViewModel,
                    DiscountedPrice = Math.Floor(price * discount / 100)
                });
            }

            var fpId = Guid.NewGuid();
            var fashionProductDescription = "Fashion product description";
            var ean = "6876876-5345345-345345tgreg-435345df-adskf34";
            var topFashionProductName = "Top Fashion Product";
            var createdOn             = DateTime.Now;
            var end            = DateTime.Now.AddDays(30);
            var start          = DateTime.Now;
            var warehouseOn    = DateTime.Now.AddDays(-3);
            var fashionProduct = new FashionProduct
            {
                Id          = fpId,
                Brand       = brand,
                CreatedOn   = createdOn,
                Description = fashionProductDescription,
                Ean         = ean,
                End         = end,
                Gender      = GenderTypes.Unisex,
                Name        = topFashionProductName,
                Options     = options,
                Start       = start,
                Supplier    = supplier,
                WarehouseOn = warehouseOn
            };

            var fashionProductViewModel = new FashionProductViewModel
            {
                Id             = fpId,
                Brand          = brandViewModel,
                CreatedOn      = createdOn,
                Description    = fashionProductDescription,
                Ean            = ean,
                End            = end,
                OptionalGender = null,
                Name           = topFashionProductName,
                Options        = optionViewModels,
                Start          = start,
                Supplier       = supplierViewModel,
                WarehouseOn    = warehouseOn
            };

            var result = new KeyValuePair <FashionProduct, FashionProductViewModel>(fashionProduct, fashionProductViewModel);

            return(result);
        }
Пример #9
0
        public ActionResult Index(FashionProduct currentContent, string variationCode = "", bool quickview = false)
        {
            var variations = GetVariations(currentContent).ToList();

            if (_isInEditMode && !variations.Any())
            {
                var productWithoutVariation = new FashionProductViewModel
                {
                    Product = currentContent,
                    Images  = currentContent.GetAssets <IContentImage>(_contentLoader, _urlResolver)
                };
                return(Request.IsAjaxRequest() ? PartialView("ProductWithoutVariation", productWithoutVariation) : (ActionResult)View("ProductWithoutVariation", productWithoutVariation));
            }
            FashionVariant variation;

            if (!TryGetFashionVariant(variations, variationCode, out variation))
            {
                return(HttpNotFound());
            }

            var market   = _currentMarket.GetCurrentMarket();
            var currency = _currencyservice.GetCurrentCurrency();

            var priceFilters = new List <CustomerPricing>();

            priceFilters.Add(CustomerPricing.AllCustomers);

            var currentContact = PrincipalInfo.Current.Principal.GetCustomerContact();

            if (currentContact != null)
            {
                priceFilters.Add(new CustomerPricing(CustomerPricing.PriceType.PriceGroup, currentContact.EffectiveCustomerGroup));
                priceFilters.Add(new CustomerPricing(CustomerPricing.PriceType.UserName, PrincipalInfo.Current.Name));
            }

            var prices = _priceService.GetPrices(market.MarketId, DateTime.Now,
                                                 new CatalogKey(_appContext.ApplicationId, variation.Code),
                                                 new PriceFilter {
                Currencies = new Currency[] { currency }, CustomerPricing = priceFilters
            });

            var priceViewModels = prices.Select(price => new PriceViewModel()
            {
                Quantity      = price.MinQuantity,
                Price         = price.UnitPrice,
                DiscountPrice = GetDiscountPrice(variation, price, market, currency)
            }).OrderBy(x => x.Quantity);



            var viewModel = new FashionProductViewModel
            {
                Prices    = priceViewModels,
                Product   = currentContent,
                Variation = variation,
                Colors    = variations
                            .Where(x => x.Size != null && x.Size == variation.Size)
                            .Select(x => new SelectListItem
                {
                    Selected = false,
                    Text     = x.Color,
                    Value    = x.Color
                })
                            .ToList(),
                Sizes = variations
                        .Where(x => x.Color != null && x.Color == variation.Color)
                        .Select(x => new SelectListItem
                {
                    Selected = false,
                    Text     = x.Size,
                    Value    = x.Size
                })
                        .ToList(),
                Color  = variation.Color,
                Size   = variation.Size,
                Images = variation.GetAssets <IContentImage>(_contentLoader, _urlResolver)
            };

            if (quickview)
            {
                return(PartialView("Quickview", viewModel));
            }

            return(Request.IsAjaxRequest() ? PartialView(viewModel) : (ActionResult)View(viewModel));
        }
Пример #10
0
        public static KeyValuePair<FashionProduct, FashionProductViewModel> ComplexMap()
        {
            var sizes = new List<Size>();
            var sizesViewModels = new List<SizeViewModel>();

            var random = new Random();
            var sizeCount = random.Next(3, 10);
            var cityCount = random.Next(4, 10);

            for (var i = 0; i < sizeCount; i++)
            {
                var newGuid = Guid.NewGuid();
                var name = string.Format("Size {0}", i);
                var alias = string.Format("Alias Size {0}", i);
                sizes.Add(
                    new Size
                    {
                        Id = newGuid,
                        Name = name,
                        Alias = alias,
                        SortOrder = i
                    });
                sizesViewModels.Add(new SizeViewModel
                {
                    Id = newGuid,
                    Name = name,
                    Alias = alias,
                    SortOrder = i
                });
            }

            var cities = new List<City>();
            var cityViewModels = new List<CityViewModel>();

            var ftRandom = new Random();
            for (var i = 0; i < cityCount; i++)
            {
                var newGuid = Guid.NewGuid();
                var name = string.Format("City {0}", i);

                var featureCount = ftRandom.Next(7 , 50);
                var features = new Feature[featureCount];
                var featureViewModels = new List<FeatureViewModel>();

                for (var j = 0; j < featureCount; j++)
                {
                    var fId = Guid.NewGuid();
                    var fName = string.Format("Feature - {0}", j);
                    var fDescription = string.Format("Description Feature - {0}", j);
                    features[j] =
                        new Feature
                        {
                            Id = fId,
                            Name = fName,
                            Description = fDescription,
                            Rank = 8
                        };
                    featureViewModels.Add(new FeatureViewModel
                    {
                        Id = fId,
                        Name = fName,
                        Description = fDescription,
                        Rank = 8
                    });
                }

                cities.Add(new City
                {
                    Id = newGuid,
                    Name = name,
                    Features = features
                });
                cityViewModels.Add(new CityViewModel
                {
                    Id = newGuid,
                    Name = name,
                    FeaturesList = featureViewModels
                });
            }

            var brandId = Guid.NewGuid();
            var brandName = "Brand name";
            var brand = new Brand
            {
                Id = brandId,
                Name = brandName
            };
            var brandViewModel = new BrandViewModel
            {
                Id = brandId,
                Name = brandName
            };

            var supId = Guid.NewGuid();
            var supplierName = "Supplier name";
            var agreementDate = DateTime.Now;
            var supplier = new Supplier
            {
                Id = supId,
                Name = supplierName,
                AgreementDate = agreementDate,
                Rank = 6,
                Sizes = sizes,
            };

            var supplierViewModel = new SupplierViewModel
            {
                Id = supId,
                Name = supplierName,
                AgreementDate = agreementDate,
                Sizes = sizesViewModels,
            };

            var sizeId = Guid.NewGuid();
            var lonelySize = "Lonely size";
            var sizeSAlias = "Size's alias";
            var size = new Size
            {
                Id = sizeId,
                Name = lonelySize,
                Alias = sizeSAlias,
                SortOrder = 5
            };
            var sizeViewModel = new SizeViewModel
            {
                Id = sizeId,
                Name = lonelySize,
                Alias = sizeSAlias,
                SortOrder = 5
            };

            var optionsCount = random.Next(10, 50);

            var options = new List<ProductOption>();
            var optionViewModels = new List<ProductOptionViewModel>();

            for (var i = 0; i < optionsCount; i++)
            {
                var optionId = Guid.NewGuid();
                var color = "Random";
                var discount = 54M;
                var price = 34M;
                var stock = 102;
                var weight = 23;
                options.Add(
                    new ProductOption
                    {
                        Id = optionId,
                        Cities = cities,
                        Color = color,
                        Discount = discount,
                        Price = price,
                        Stock = stock,
                        Weight = weight,
                        Size = size
                    });
                optionViewModels.Add(
                    new ProductOptionViewModel
                    {
                        Id = optionId,
                        Cities = cityViewModels,
                        Color = color,
                        Discount = discount,
                        Price = price,
                        Stock = stock,
                        Weight = weight,
                        Size = sizeViewModel,
                        DiscountedPrice = Math.Floor(price * discount / 100)
                    });
            }

            var fpId = Guid.NewGuid();
            var fashionProductDescription = "Fashion product description";
            var ean = "6876876-5345345-345345tgreg-435345df-adskf34";
            var topFashionProductName = "Top Fashion Product";
            var createdOn = DateTime.Now;
            var end = DateTime.Now.AddDays(30);
            var start = DateTime.Now;
            var warehouseOn = DateTime.Now.AddDays(-3);
            var fashionProduct = new FashionProduct
            {
                Id = fpId,
                Brand = brand,
                CreatedOn = createdOn,
                Description = fashionProductDescription,
                Ean = ean,
                End = end,
                Gender = GenderTypes.Unisex,
                Name = topFashionProductName,
                Options = options,
                Start = start,
                Supplier = supplier,
                WarehouseOn = warehouseOn
            };

            var fashionProductViewModel = new FashionProductViewModel
            {
                Id = fpId,
                Brand = brandViewModel,
                CreatedOn = createdOn,
                Description = fashionProductDescription,
                Ean = ean,
                End = end,
                OptionalGender = null,
                Name = topFashionProductName,
                Options = optionViewModels,
                Start = start,
                Supplier = supplierViewModel,
                WarehouseOn = warehouseOn
            };

            var result = new KeyValuePair<FashionProduct, FashionProductViewModel>(fashionProduct, fashionProductViewModel);
            return result;
        }