private void ProcessAttributeValues(Sku dbItem, Item resultItem) { var attVals = (from ei in dbItem.EntityInfos from ed in ei.EntityDatas let attributeName = ed.Attribute.AttributeName let attributeGroup = ed.Attribute.AttributeGroups.Where(ag => ag.Group.Name.StartsWith("Search_")) .Select(ag => ag.Group.Name.Substring(7)) .FirstOrDefault() ?? attributeName where ed.Active select new ItemAttributeValue { Name = attributeName, Group = attributeGroup, Value = ed.Value + (ed.Uom != null ? " " + ed.Uom : string.Empty) }).ToArray(); resultItem.AttributeValue = attVals; var nodeId = dbItem.Taxonomy.ID; foreach (var av in attVals) { var key = GetLovKey(nodeId, av.Name, av.Value); if (_lovs.ContainsKey(key)) { return; } var attVal = AttVal.FromValues(nodeId, av.Name, av.Group, av.Value); _lovs[key] = attVal; } }
private void ProcessLovs(SchemaInfo schemaInfo) { var nodeId = schemaInfo.TaxonomyID; var attributeName = schemaInfo.Attribute.AttributeName; var attributeGroup = schemaInfo.Attribute.AttributeGroups.Where(ag => ag.Group.Name.StartsWith("Search_")) .Select(ag => ag.Group.Name.Substring(7)) .FirstOrDefault() ?? attributeName; var lovMetaDatas = from lov in schemaInfo.ListOfValues where lov.Active let enrichmentImage = new EnrichmentFileResourceType { Filename = lov.EnrichmentImage } let enrichment = new Enrichment { EnrichmentCopy = lov.EnrichmentCopy, EnrichmentPrimaryImage = enrichmentImage } select new { NodeId = nodeId, AttributeName = attributeName, AttributeGroup = attributeGroup, lov.Value, Enrichment = enrichment, lov.DisplayOrder }; foreach (var lov in lovMetaDatas) { var key = GetLovKey(lov.NodeId, lov.AttributeName, lov.Value); if (!_lovs.ContainsKey(key)) { _lovs[key] = AttVal.FromValues(lov.NodeId, lov.AttributeName, lov.AttributeGroup, lov.Value); } var attVal = _lovs[key]; attVal.Enrichment = lov.Enrichment; if (lov.DisplayOrder != null) { attVal.SortableValue = string.Format("{0:000}-{1}", lov.DisplayOrder, lov.Value); } } var lovsToSave = _lovs.Where(l => l.Key.StartsWith(GetLovKey(nodeId, attributeName, string.Empty))).ToList(); foreach (var lov in lovsToSave) { lov.Value.SerializeObject(GetSaveFilePath("AttVal", Guid.NewGuid().ToString())); AttVal val; _lovs.TryRemove(lov.Key, out val); } }