public static MvcHtmlString ItemDetailSection(this HtmlHelper html, CatalogAssetMapping mappingDetails) { var sb = new StringBuilder(); sb.AppendLine("<div class='asset-additional-detail'>"); sb.AppendFormat("<div style='padding-bottom: 5px'><span class='bold'>{0}</span></div>", mappingDetails.DisplayLabel); if (mappingDetails.DisplayValues.Count == 0) { sb.AppendLine("<div> </div>"); sb.AppendLine("<div> </div>"); } else { string displayVal = mappingDetails.DisplayValues[0]; string tooltip = string.Empty; if (!String.IsNullOrWhiteSpace(mappingDetails.DisplayValues[0])) { tooltip = new MvcHtmlString(mappingDetails.DisplayValues[0]).ToHtmlString(); } sb.AppendFormat( "<div class='asset-additional-detail-display' title='{1}'><span>{0}</span></div>", mappingDetails.DisplayValues[0], tooltip); if (mappingDetails.DisplayValues.Count == 1) { sb.AppendLine("<div> </div>"); } else { string key = mappingDetails.DisplayLabel.Replace(" ", "_"); sb.AppendFormat( "<div><span id='{1}' style='cursor: pointer' onclick='displayEnumeratedData(this);'><u>{0} more</u></span></div>", mappingDetails.DisplayValues.Count - 1, key); } } sb.AppendLine("</div>"); /* * <div style="float: left; width: 33%; padding-bottom: 5px"> * <div style="padding-bottom: 5px"><span class='bold'>@Model.AdditionalDetails.Details[key].DisplayLabel</span></div> * <div>@{ Write(Model.AdditionalDetails.Details[key].DisplayValues.Count > 0 ? Model.AdditionalDetails.Details[key].DisplayValues[0] : " "); }</div> * </div> */ return(new MvcHtmlString(sb.ToString())); }
public static AssetDetailsViewModel GetCatalogAssetDetailsWithMapping(string catalogID, string accountItemID) { CatalogItemDetails dataModel = CatalogModel.GetCatalogItem(catalogID, accountItemID); CatalogDetails catalog = CatalogModel.GetCatalogDetails(catalogID); AssetDetails details = MapAssetDetails(dataModel, catalog); if (string.IsNullOrEmpty(details.AccountItemID)) { details.AccountItemID = accountItemID; } if (string.IsNullOrEmpty(details.CatalogID)) { details.CatalogID = catalogID; } AssetAdditionalDetails additionalDetails = new AssetAdditionalDetails(); // Dictionary Keys come from dataModel.CatalogMapping foreach (var catalogMapping in dataModel.CatalogMapping.OrderBy(c => c.CustomerField)) { additionalDetails.Details.Add(catalogMapping.ResonanceField, new CatalogAssetMapping() { DisplayLabel = catalogMapping.CustomerField, AttributeType = catalogMapping.AttributeType, DisplayValues = new List <string>() }); } // now we have map, need to iterate through CatalogItemMetadata foreach (var item in dataModel.CatalogItemMetaData) { // look up function name, then add to Display values as needed if if (additionalDetails.Details.ContainsKey(item.FunctionName)) { // get object by key and update CatalogAssetMapping objValue = null; if (additionalDetails.Details.TryGetValue(item.FunctionName, out objValue)) { objValue.DisplayValues.Add(item.GroupName); objValue.DisplayValues.Sort(); } } } // map using Reflection if (dataModel.CatalogItemInfo != null) { PropertyInfo[] propertyInfos = dataModel.CatalogItemInfo.GetType().GetProperties(); for (int i = 0; i < propertyInfos.Length; i++) { var key = propertyInfos[i].Name; // list of exceptions (these values have scheme names with _ but have been stripped out of the key) switch (propertyInfos[i].Name) { case "ItemID": key = "Item_ID"; break; case "AccountID": key = "Account_ID"; break; case "AccountItemID": key = "Account_Item_ID"; break; case "ObjectID": key = "Object_ID"; break; case "CatalogID": key = "Catalog_ID"; break; case "ImageURL": key = "Image_URL"; break; case "DetailURL": key = "Detail_URL"; break; } if (additionalDetails.Details.ContainsKey(key)) //|| additionalDetails.Details.ContainsKey(key2)) { CatalogAssetMapping objValue = null; // see if property is mapped, if so, then add the value // if (additionalDetails.Details.TryGetValue(propertyInfos[i].Name, out objValue)) if (additionalDetails.Details.TryGetValue(key, out objValue)) { // get the property value var obj = propertyInfos[i].GetValue(dataModel.CatalogItemInfo, null); if (obj != null) { objValue.DisplayValues.Add(obj.ToString()); objValue.DisplayValues.Sort(); } } } } } return(new AssetDetailsViewModel { Details = details, AdditionalDetails = additionalDetails }); }