Esempio n. 1
0
        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>&#160;</div>");
                sb.AppendLine("<div>&#160;</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>&nbsp</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] : "&#160;"); }</div>
             * </div>
             */
            return(new MvcHtmlString(sb.ToString()));
        }
Esempio n. 2
0
        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
            });
        }