private UcommerceProductDto ConvertProductToUcommerceProductDto(Product product)
        {
            var imageService = ObjectFactory.Instance.Resolve <IImageService>();

            var url   = CatalogLibrary.GetNiceUrlForProduct(product);
            var price = CatalogLibrary.CalculatePrice(product);

            var ucommerceProduct = new UcommerceProductDto
            {
                ProductName = product.Name,
                ProductSku  = product.Sku,
                ProductUrl  = url,
                Price       = "-",
                Tax         = "-"
            };

            if (price.YourPrice != null)
            {
                ucommerceProduct.Price = price.YourPrice.Amount.ToString();
                ucommerceProduct.Tax   = price.YourTax.ToString();
            }

            if (string.IsNullOrWhiteSpace(product.PrimaryImageMediaId) == false)
            {
                ucommerceProduct.ImageUrl = imageService.GetImage(product.PrimaryImageMediaId).Url;
            }

            return(ucommerceProduct);
        }
Exemple #2
0
        public ActionResult HomePageTabWithProducts(List <string> productIds)
        {
            ProductsViewModel productsViewModel = new ProductsViewModel();

            //loop productIds
            foreach (var productId in productIds)
            {
                var product = CatalogLibrary.GetProduct(Convert.ToInt32(productId));

                productsViewModel.Products.Add(new ProductViewModel()
                {
                    Name             = product.Name,
                    PriceCalculation = CatalogLibrary.CalculatePrice(product),
                    Url               = CatalogLibrary.GetNiceUrlForProduct(product),
                    Sku               = product.Sku,
                    IsVariant         = product.IsVariant,
                    VariantSku        = product.VariantSku,
                    ThumbnailImageUrl = ObjectFactory.Instance.Resolve <IImageService>().GetImage(product.ThumbnailImageMediaId).Url
                });


                //Get image and other details
            }
            // add to model
            return(View("/views/PartialView/_HomePageTabProducts.cshtml", productsViewModel));
        }
        private void SetupProduct(Product product)
        {
            litHeadline.Text    = product.DisplayName();
            productSku.Text     = product.Sku;
            litDescription.Text = product.GetDescription(CultureInfo.CurrentCulture.ToString()).LongDescription;

            var price = CatalogLibrary.CalculatePrice(product);

            if (price.YourPrice != null)
            {
                litPrice.Text = price.YourPrice.Amount.ToString();
                litTax.Text   = price.YourTax.ToString();
            }
            else
            {
                btnAddToBasket.Enabled = false;
                btnAddToBasket.Text    = "This product has not been assigned a price.";
                litPrice.Text          = "-";
                litTax.Text            = "-";
            }

            if (string.IsNullOrWhiteSpace(product.PrimaryImageMediaId))
            {
                return;
            }

            var imageService = ObjectFactory.Instance.Resolve <IImageService>();

            imgTop.ImageUrl = imageService.GetImage(product.PrimaryImageMediaId).Url;
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            var catalogContext = ObjectFactory.Instance.Resolve <ICatalogContext>();
            var imageService   = ObjectFactory.Instance.Resolve <IImageService>();

            if (CurrentProduct == null)
            {
                Visible = false;
                return;
            }

            string           url   = CatalogLibrary.GetNiceUrlForProduct(CurrentProduct, catalogContext.CurrentCategory);
            PriceCalculation price = CatalogLibrary.CalculatePrice(CurrentProduct);

            if (!string.IsNullOrWhiteSpace(CurrentProduct.ThumbnailImageMediaId))
            {
                productImage.ImageUrl = imageService.GetImage(CurrentProduct.ThumbnailImageMediaId).Url;
                hlImage.Visible       = true;
            }

            hlProduct.Text         = CurrentProduct.DisplayName();
            hlProduct.NavigateUrl  = url;
            hlViewMore.NavigateUrl = url;
            hlImage.NavigateUrl    = url;

            litPrice.Text = price?.YourPrice?.Amount.ToString() ?? "-";

            if (price?.YourTax != null)
            {
                litTax.Text = price.YourTax.ToString();
            }
        }
Exemple #5
0
        public IHttpActionResult ProductPrices(ProductDTO productPricesModel)
        {
            var currentPriceGroupCurrency  = SiteContext.Current.CatalogContext.CurrentPriceGroup.Currency;
            var productGuidsToGetPricesFor = ProductGuidsToGetPricesFor(productPricesModel);

            var productsPrices = CatalogLibrary.CalculatePrice(productGuidsToGetPricesFor);

            return(Json(MapToProductPricesViewModels(productsPrices, currentPriceGroupCurrency)));
        }
Exemple #6
0
        public ActionResult Rendering()
        {
            var product = _catalogContext.CurrentProduct;

            var viewModel = new AddToBasketButtonRenderingViewModel
            {
                AddToBasketUrl = Url.Action("AddToBasket"),
                BasketUrl      = "/cart",
                ConfirmationMessageTimeoutInMillisecs = (int)TimeSpan.FromSeconds(5).TotalMilliseconds,
                ConfirmationMessageClientId           = "js-add-to-basket-button-confirmation-message-" + Guid.NewGuid(),
                ProductSku      = product.Sku,
                IsProductFamily = product.ProductDefinition.IsProductFamily(),
                Price           = CatalogLibrary.CalculatePrice(product).YourPrice.Amount.ToString()
            };

            return(View("/Views/AddToBasketButton/Rendering.cshtml", viewModel));
        }
Exemple #7
0
        private IList <ProductDTO> MapProducts(IList <Product> products, Category category, bool openInSamePage, Guid detailPageId)
        {
            var result         = new List <ProductDTO>();
            var imageService   = UCommerce.Infrastructure.ObjectFactory.Instance.Resolve <IImageService>();
            var currentCatalog = SiteContext.Current.CatalogContext.CurrentCatalog;
            var productsPrices = CatalogLibrary.CalculatePrice(products.Select(x => x.Guid).ToList());

            foreach (var product in products)
            {
                var singleProductPrice = productsPrices.Items.Where(x => x.ProductGuid == product.Guid).FirstOrDefault();

                decimal price    = 0;
                decimal discount = 0;

                if (singleProductPrice != null)
                {
                    price    = singleProductPrice.PriceExclTax;
                    discount = singleProductPrice.DiscountExclTax;
                    if (currentCatalog.ShowPricesIncludingVAT)
                    {
                        price    = singleProductPrice.PriceInclTax;
                        discount = singleProductPrice.DiscountInclTax;
                    }
                }

                var productViewModel = new ProductDTO()
                {
                    Sku                    = product.Sku,
                    VariantSku             = product.VariantSku,
                    Price                  = new Money(price, SiteContext.Current.CatalogContext.CurrentPriceGroup.Currency).ToString(),
                    Discount               = new Money(discount, SiteContext.Current.CatalogContext.CurrentPriceGroup.Currency).ToString(),
                    DisplayName            = product.DisplayName(),
                    ThumbnailImageMediaUrl = imageService.GetImage(product.ThumbnailImageMediaId).Url,
                    ProductUrl             = this.GetProductUrl(category, product, openInSamePage, detailPageId),
                    IsSellableProduct      = (product.ProductDefinition.IsProductFamily() && product.IsVariant) || (!product.ProductDefinition.IsProductFamily() && !product.IsVariant),
                };

                result.Add(productViewModel);
            }

            return(result);
        }
Exemple #8
0
        // GET: HomepageCatalog
        public ActionResult Index()
        {
            var products = SiteContext.Current.CatalogContext.CurrentCatalog.Categories.SelectMany(c => c.Products.Where(p => p.ProductProperties.Any(pp => pp.ProductDefinitionField.Name == "ShowOnHomepage" && Convert.ToBoolean(pp.Value))));
            ProductsViewModel productsViewModel = new ProductsViewModel();

            foreach (var p in products)
            {
                productsViewModel.Products.Add(new ProductViewModel()
                {
                    Name             = p.Name,
                    PriceCalculation = CatalogLibrary.CalculatePrice(p),
                    Url               = CatalogLibrary.GetNiceUrlForProduct(p),
                    Sku               = p.Sku,
                    IsVariant         = p.IsVariant,
                    VariantSku        = p.VariantSku,
                    ThumbnailImageUrl = ObjectFactory.Instance.Resolve <IImageService>().GetImage(p.ThumbnailImageMediaId).Url
                });
            }

            return(View("/Views/PartialView/HomepageCatalog.cshtml", productsViewModel));
        }
        private ActionResult RenderView(bool addedToBasket)
        {
            Product currentProduct = SiteContext.Current.CatalogContext.CurrentProduct;

            var productViewModel = new ProductViewModel();

            productViewModel.Sku = currentProduct.Sku;
            productViewModel.PriceCalculation  = UCommerce.Api.CatalogLibrary.CalculatePrice(currentProduct);
            productViewModel.Name              = currentProduct.DisplayName();
            productViewModel.LongDescription   = currentProduct.LongDescription();
            productViewModel.IsVariant         = false;
            productViewModel.IsOrderingAllowed = currentProduct.AllowOrdering;
            productViewModel.TaxCalculation    = CatalogLibrary.CalculatePrice(currentProduct).YourTax.ToString();
            productViewModel.IsProductFamily   = currentProduct.ProductDefinition.IsProductFamily();
            productViewModel.Reviews           = MapReviews(currentProduct);

            if (!string.IsNullOrEmpty(currentProduct.PrimaryImageMediaId))
            {
                var media = ObjectFactory.Instance.Resolve <IImageService>().GetImage(currentProduct.PrimaryImageMediaId).Url;
                productViewModel.ThumbnailImageUrl = media;
            }

            productViewModel.Properties = MapProductProperties(currentProduct);

            if (currentProduct.ProductDefinition.IsProductFamily())
            {
                productViewModel.Variants = MapVariants(currentProduct.Variants);
            }

            bool isInBasket = TransactionLibrary.GetBasket(true).PurchaseOrder.OrderLines.Any(x => x.Sku == currentProduct.Sku);

            ProductPageViewModel productPageViewModel = new ProductPageViewModel()
            {
                ProductViewModel  = productViewModel,
                AddedToBasket     = addedToBasket,
                ItemAlreadyExists = isInBasket
            };

            return(View("/Views/Product.cshtml", productPageViewModel));
        }
        // GET: Search
        public ActionResult Index(ContentModel model)
        {
            var keyword = System.Web.HttpContext.Current.Request.QueryString["search"];
            IEnumerable <Product> products          = new List <Product>();
            ProductsViewModel     productsViewModel = new ProductsViewModel();

            if (!string.IsNullOrWhiteSpace(keyword))
            {
                products = Product.Find(p =>
                                        p.VariantSku == null &&
                                        p.DisplayOnSite
                                        &&
                                        (
                                            p.Sku.Contains(keyword) ||
                                            p.Name.Contains(keyword) ||
                                            p.ProductDescriptions.Any(d => d.DisplayName.Contains(keyword) ||
                                                                      d.ShortDescription.Contains(keyword) ||
                                                                      d.LongDescription.Contains(keyword)
                                                                      )
                                        )
                                        );
            }

            foreach (var product in products.Where(x => x.DisplayOnSite))
            {
                productsViewModel.Products.Add(new ProductViewModel()
                {
                    Url               = CatalogLibrary.GetNiceUrlForProduct(product),
                    Name              = product.DisplayName(),
                    Sku               = product.Sku,
                    IsVariant         = product.IsVariant,
                    LongDescription   = product.LongDescription(),
                    PriceCalculation  = CatalogLibrary.CalculatePrice(product),
                    ThumbnailImageUrl = ObjectFactory.Instance.Resolve <IImageService>().GetImage(product.ThumbnailImageMediaId).Url,
                    VariantSku        = product.VariantSku
                });
            }

            return(View("/Views/Search.cshtml", productsViewModel));
        }
        public List <UcommerceProductDto> ConvertToUcommerceProduct(ICollection <Product> _products)
        {
            var data         = new List <UcommerceProductDto>();
            var imageService = ObjectFactory.Instance.Resolve <IImageService>();

            foreach (Product product in _products)
            {
                var url   = CatalogLibrary.GetNiceUrlForProduct(product, SiteContext.Current.CatalogContext.CurrentCategory, SiteContext.Current.CatalogContext.CurrentCatalog);
                var price = CatalogLibrary.CalculatePrice(product);

                var ucommerceProduct = new UcommerceProductDto
                {
                    ProductName = product.DisplayName(),
                    ProductSku  = product.Sku,
                    ProductUrl  = url,
                    Price       = "-",
                    Tax         = "-"
                };

                if (price.YourPrice != null)
                {
                    ucommerceProduct.Price = price.YourPrice.Amount.ToString();
                }
                if (price.YourTax != null)
                {
                    ucommerceProduct.Tax = price.YourTax.ToString();
                }

                data.Add(ucommerceProduct);

                if (!string.IsNullOrWhiteSpace(product.PrimaryImageMediaId))
                {
                    ucommerceProduct.ImageUrl = imageService.GetImage(product.PrimaryImageMediaId).Url;
                }
            }

            return(data);
        }
        public IHttpActionResult GetProductInformation([FromBody] GetProductInformationRequest request)
        {
            ProductCatalog catalog  = CatalogLibrary.GetCatalog(request.CatalogId);
            Product        product  = CatalogLibrary.GetProduct(request.Sku);
            Category       category = CatalogLibrary.GetCategory(request.CategoryId.Value);
            string         niceUrl  = CatalogLibrary.GetNiceUrlForProduct(product, category, catalog);

            PriceCalculation priceCalculation = CatalogLibrary.CalculatePrice(product);

            Currency currency = priceCalculation.YourPrice.Amount.Currency;

            ProductInformation productInformation = new ProductInformation()
            {
                NiceUrl          = niceUrl,
                PriceCalculation = new PriceCalculationViewModel()
                {
                    Discount = new PriceViewModel()
                    {
                        Amount = new MoneyViewModel()
                        {
                            Value        = priceCalculation.Discount.Amount.Value,
                            DisplayValue = new Money(priceCalculation.Discount.Amount.Value, currency).ToString()
                        },
                        AmountExclTax = new MoneyViewModel()
                        {
                            Value        = priceCalculation.Discount.AmountExclTax.Value,
                            DisplayValue = new Money(priceCalculation.Discount.AmountExclTax.Value, currency).ToString()
                        },
                        AmountInclTax = new MoneyViewModel()
                        {
                            Value        = priceCalculation.Discount.AmountInclTax.Value,
                            DisplayValue = new Money(priceCalculation.Discount.AmountInclTax.Value, currency).ToString()
                        }
                    },
                    IsDiscounted = priceCalculation.IsDiscounted,
                    YourPrice    = new PriceViewModel()
                    {
                        Amount = new MoneyViewModel()
                        {
                            Value        = priceCalculation.YourPrice.Amount.Value,
                            DisplayValue = new Money(priceCalculation.YourPrice.Amount.Value, currency).ToString()
                        },
                        AmountInclTax = new MoneyViewModel()
                        {
                            Value        = priceCalculation.YourPrice.AmountInclTax.Value,
                            DisplayValue = new Money(priceCalculation.YourPrice.AmountInclTax.Value, currency).ToString()
                        },
                        AmountExclTax = new MoneyViewModel()
                        {
                            Value        = priceCalculation.YourPrice.AmountExclTax.Value,
                            DisplayValue = new Money(priceCalculation.YourPrice.AmountExclTax.Value, currency).ToString()
                        }
                    },
                    ListPrice = new PriceViewModel()
                    {
                        Amount = new MoneyViewModel()
                        {
                            Value        = priceCalculation.ListPrice.Amount.Value,
                            DisplayValue = new Money(priceCalculation.ListPrice.Amount.Value, currency).ToString()
                        },
                        AmountExclTax = new MoneyViewModel()
                        {
                            Value        = priceCalculation.ListPrice.AmountExclTax.Value,
                            DisplayValue = new Money(priceCalculation.ListPrice.AmountExclTax.Value, currency).ToString()
                        },
                        AmountInclTax = new MoneyViewModel()
                        {
                            Value        = priceCalculation.ListPrice.AmountInclTax.Value,
                            DisplayValue = new Money(priceCalculation.ListPrice.AmountInclTax.Value, currency).ToString()
                        }
                    }
                }
            };

            productInformation.Sku = product.Sku;

            return(Json(productInformation));
        }
Exemple #13
0
        public virtual ProductDetailViewModel CreateDetailsViewModel()
        {
            ProductDetailViewModel productDetailViewModel = null;

            var currentProduct = SiteContext.Current.CatalogContext.CurrentProduct;

            if (currentProduct != null)
            {
                var    imageService    = UCommerce.Infrastructure.ObjectFactory.Instance.Resolve <IImageService>();
                var    currentCategory = SiteContext.Current.CatalogContext.CurrentCategory;
                string displayName     = string.Empty;
                if (currentProduct.ParentProduct != null)
                {
                    displayName = $"{currentProduct.ParentProduct.DisplayName()} ";
                }

                displayName += currentProduct.DisplayName();

                var productPrice = CatalogLibrary.CalculatePrice(new List <Product>()
                {
                    currentProduct
                }).Items.FirstOrDefault();

                decimal price    = 0;
                decimal discount = 0;

                if (productPrice != null)
                {
                    price    = productPrice.PriceExclTax;
                    discount = productPrice.DiscountExclTax;
                    var currentCatalog = SiteContext.Current.CatalogContext.CurrentCatalog;
                    if (currentCatalog != null && currentCatalog.ShowPricesIncludingVAT)
                    {
                        price    = productPrice.PriceInclTax;
                        discount = productPrice.DiscountInclTax;
                    }
                }

                var imageUrl         = imageService.GetImage(currentProduct.PrimaryImageMediaId).Url;
                var absoluteImageUrl = UrlPath.ResolveAbsoluteUrl(imageUrl);

                productDetailViewModel = new ProductDetailViewModel()
                {
                    DisplayName          = displayName,
                    Guid                 = currentProduct.Guid,
                    PrimaryImageMediaUrl = absoluteImageUrl,
                    LongDescription      = currentProduct.LongDescription(),
                    ShortDescription     = currentProduct.ShortDescription(),
                    ProductUrl           = CatalogLibrary.GetNiceUrlForProduct(currentProduct, currentCategory),
                    Price                = new Money(price, SiteContext.Current.CatalogContext.CurrentPriceGroup.Currency).ToString(),
                    Discount             = new Money(discount, SiteContext.Current.CatalogContext.CurrentPriceGroup.Currency).ToString(),
                    Sku             = currentProduct.Sku,
                    Rating          = Convert.ToInt32(Math.Round(currentProduct.Rating.GetValueOrDefault())),
                    VariantSku      = currentProduct.VariantSku,
                    IsVariant       = currentProduct.IsVariant,
                    IsProductFamily = currentProduct.ProductDefinition.IsProductFamily(),
                    AllowOrdering   = currentProduct.AllowOrdering,
                };

                if (currentProduct.ParentProduct != null)
                {
                    productDetailViewModel.ParentProductUrl =
                        CatalogLibrary.GetNiceUrlForProduct(currentProduct.ParentProduct, currentCategory);
                    productDetailViewModel.ParentProductDisplayName = currentProduct.ParentProduct.DisplayName();
                }

                if (currentCategory != null)
                {
                    productDetailViewModel.CategoryDisplayName = currentCategory.DisplayName();
                    productDetailViewModel.CategoryUrl         = CatalogLibrary.GetNiceUrlForCategory(currentCategory);
                    productDetailViewModel.ProductUrl          = CatalogLibrary.GetNiceUrlForProduct(currentProduct, currentCategory);
                }


                foreach (var pv in currentProduct.Variants)
                {
                    foreach (var v in pv.ProductProperties)
                    {
                        if (v.ProductDefinitionField != null && v.ProductDefinitionField.IsVariantProperty)
                        {
                            if (productDetailViewModel.VariantTypes.Any(t => t.Id == v.ProductDefinitionField.Id))
                            {
                            }
                        }
                    }
                }


                var uniqueVariants = from v in currentProduct.Variants.SelectMany(p => p.ProductProperties)
                                     where v.ProductDefinitionField.DisplayOnSite
                                     group v by v.ProductDefinitionField into g
                                     select g;

                foreach (var vt in uniqueVariants)
                {
                    var typeViewModel = productDetailViewModel.VariantTypes
                                        .Where(z => z.Id == vt.Key.ProductDefinitionFieldId)
                                        .FirstOrDefault();

                    if (typeViewModel == null)
                    {
                        typeViewModel = new VariantTypeViewModel
                        {
                            Id          = vt.Key.ProductDefinitionFieldId,
                            Name        = vt.Key.Name,
                            DisplayName = vt.Key.GetDisplayName()
                        };

                        productDetailViewModel.VariantTypes.Add(typeViewModel);
                    }

                    var variants = vt.ToList();

                    foreach (var variant in variants)
                    {
                        var variantViewModel = typeViewModel.Values
                                               .Where(v => v.Value == variant.Value)
                                               .FirstOrDefault();

                        if (variantViewModel == null)
                        {
                            variantViewModel = new VariantViewModel
                            {
                                Value    = variant.Value,
                                TypeName = typeViewModel.Name
                            };

                            if (!string.IsNullOrEmpty(variant.Product.PrimaryImageMediaId))
                            {
                                var variantImageUrl = imageService.GetImage(variant.Product.PrimaryImageMediaId).Url;
                                variantViewModel.PrimaryImageMediaUrl = UrlPath.ResolveAbsoluteUrl(variantImageUrl);
                            }

                            typeViewModel.Values.Add(variantViewModel);
                        }
                    }
                }

                productDetailViewModel.Routes.Add(RouteConstants.ADD_TO_BASKET_ROUTE_NAME, RouteConstants.ADD_TO_BASKET_ROUTE_VALUE);
            }

            return(productDetailViewModel);
        }