Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static IList<IProductAttributeModel> GetProductAttributes(IProductModel product, string languageCode)
- {
- LinqMetaData linqMetaData = new LinqMetaData();
- var qAttributes = from attr in linqMetaData.VTrProductAttribute
- where attr.ProductId == product.BaseProductId && attr.LanguageCode == languageCode
- orderby attr.AttributeGroupId, attr.OrderNumber
- select new ProductAttributeModel
- {
- AttributeId = attr.AttributeId,
- Name = attr.Name,
- Description = attr.Description,
- TranslatedName = attr.TranslatedName,
- TranslatedDescription = attr.TranslatedDescription,
- DataTypeCode = attr.DataTypeCode,
- AttributeGroupId = attr.AttributeGroupId,
- AttributeGroupName = attr.AttributeGroupName,
- TranslatedAttributeGroupName = attr.TranslatedAttributeGroupName,
- AttributeGroupDisplayOrderNumber = attr.AttributeGroupDisplayOrderNumber,
- OrderNumber = attr.OrderNumber,
- IsMandatory = attr.IsMandatory,
- IsVisible = attr.IsVisible,
- IsSearchable = attr.IsSearchable,
- AttributeLevelCode = attr.AttributeLevelCode,
- AttributeShowModeCode = attr.AttributeShowModeCode,
- DefaultValue = attr.DefaultValue
- } as IProductAttributeModel;
- var Attributes = qAttributes.ToList();
- var qAttrId = from row in Attributes
- where row.DataTypeCode == LtDataType.Enum
- select row.AttributeId;
- // Get enum values.
- var qEnumValues = from row in linqMetaData.VTrEnumValue
- where qAttrId.Contains(row.EnumAttributeId) && row.LanguageCode == languageCode
- select new EnumValueModel
- {
- EnumValueId = row.EnumValueId,
- EnumAttributeId = row.EnumAttributeId,
- DisplayOrderNumber = row.DisplayOrderNumber,
- OrderNumber = row.OrderNumber,
- Value = row.EnumValue,
- TranslatedValue = row.TranslatedValue,
- IsDefault = row.IsDefault,
- //Description = null,
- TranslatedDescription = row.TranslatedDescription,
- //Pictures = null
- }
- as IEnumValueModel;
- var EnumValues = qEnumValues.ToList();
- // Get enum value pictures.
- var qEnumValueId = from row in qEnumValues select row.EnumValueId;
- var qEnumValuePictures = from row in linqMetaData.EnumValuePicture
- where qEnumValueId.Contains(row.EnumValueId)
- select new EnumValuePictureModel
- {
- EnumValueId = row.EnumValueId,
- Name = row.Name,
- PictureTypeCode = row.EnumValuePictureTypeCode,
- PictureFilename = row.PictureFilename,
- Description = row.Description
- };
- // Prepare enum values for fast processing
- var dictEnumValues = new Dictionary<long, IEnumValueModel>();
- foreach (var row in EnumValues)
- {
- dictEnumValues[row.EnumValueId] = row;
- }
- // Link pictures to enum values
- foreach (var row in qEnumValuePictures)
- {
- var enumVal = dictEnumValues[row.EnumValueId];
- if (enumVal.Pictures == null)
- {
- enumVal.Pictures = new List<IEnumValuePictureModel>();
- }
- enumVal.Pictures.Add(row);
- }
- // Prepare atribute data for fast processing
- var dictAttributes = new Dictionary<long, IProductAttributeModel>();
- foreach (var row in Attributes)
- {
- dictAttributes[row.AttributeId] = row;
- }
- // Link enum values to attributes
- foreach (var row in EnumValues)
- {
- var attr = dictAttributes[row.EnumAttributeId];
- if (attr.EnumValues == null)
- {
- attr.EnumValues = new List<IEnumValueModel>();
- }
- attr.EnumValues.Add(row);
- }
- return Attributes;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement