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); }
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(); } }
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))); }
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)); }
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); }
// 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)); }
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); }