/// <summary> /// Returns name of the product with highlighted text if any. /// </summary> private string GetHighlightedNameResultView(SearchResult result) { const string name = "skuname"; return(result.Highlights?.FirstOrDefault(x => x.Key.Equals(name, StringComparison.OrdinalIgnoreCase)).Value?.First() ?? result.Document[name].ToString()); }
/// <summary> /// Returns tags with related image and out of stock message if any. /// </summary> private string GetImageForSearchResultView(SearchResult result, SKUInfo skuInfo) { var tagResult = new StringBuilder(); bool isInStock = SKUInfoProvider.IsSKUInStock(skuInfo); tagResult.AppendFormat( "<figure class='product-tile-image {0}'><img src='{2}' alt='{3}'/>{1}</figure>", isInStock ? string.Empty : "notavailable", isInStock ? string.Empty : "<span class=\'product-tile-stock notavailable\'> OUT OF STOCK </span>", result.Document["skuimagepath"], result.Document["skuname"] ); return(tagResult.ToString()); }
/// <summary> /// Returns tags with current status of the product if any. /// </summary> private string GetStatusResultView(SearchResult result) { var status = result.Document["skupublicstatusid"]?.ToString(); int skuStatus; int.TryParse(status, out skuStatus); PublicStatusInfo publicStatus = PublicStatusInfoProvider.GetPublicStatusInfo(skuStatus); if (status == null || publicStatus == null) { return(String.Empty); } var name = HTMLHelper.HTMLEncode(ResHelper.LocalizeString(publicStatus.PublicStatusDisplayName)); var statusClassName = HTMLHelper.HTMLEncode(publicStatus.PublicStatusName).ToLowerInvariant(); return($"<span class='product-tile-status {statusClassName}'>{name}</span>"); }
/// <summary> /// Returns tags with actual price and standard price if any. /// </summary> private string GetPriceResultView(SearchResult result, SKUInfo skuInfo) { ProductCatalogPrices skuPrice = GetProductCatalogPrices(skuInfo); if (skuPrice == null) { return($"<div class='product-tile-info'><span class='product-tile-price'>${result.Document["skuprice"]}</span>"); } var tagResult = new StringBuilder(); tagResult.AppendFormat("<div class='product-tile-info'><span class='product-tile-price'>${0}</span>", skuPrice.Price); if (skuPrice.Discounts.Any()) { tagResult.AppendFormat("<span class='product-tile-list-price'>${0}</span>", skuPrice.StandardPrice); } tagResult.Append("</div>"); return(tagResult.ToString()); }
/// <summary> /// Returns tags with rating. /// </summary> private string GetRatingResultView(SearchResult result) { double documentRatingValue; double documentRatings; Double.TryParse(result.Document["documentratingvalue"]?.ToString() ?? "0", out documentRatingValue); Double.TryParse(result.Document["documentratings"]?.ToString() ?? "1", out documentRatings); var rating = documentRatingValue / ((Math.Abs(documentRatings) < 0) ? 1 : documentRatings); var tagResult = new StringBuilder(); tagResult.Append("<div class='product-rating-content'>"); for (int i = 0; i < 5; ++i) { tagResult.AppendFormat("<span class='rating-star cms-icon-80 {0}'></span>", ((rating > (i / 5.0)) ? "icon-star-full" : "icon-star-empty")); } tagResult.Append("</div>"); return(tagResult.ToString()); }