public void FillElsMaterial(int materialId, int subgroupId, int sourceMaterialId, IMaterialsContextUow context, MaterialDetailsModel model, int type) { int setId = (int)context.RecordLinks.All.Where(m => m.MaterialID == materialId && m.SubgroupID == subgroupId).FirstOrDefault().SetID; IList <RecordLink> conditions = context.RecordLinks.All.Where(n => n.MaterialID == materialId && n.SubgroupID == subgroupId).ToList(); IDictionary <ProductGroup.ProductGroupType, ProductGroup> listOfGroups = new Dictionary <ProductGroup.ProductGroupType, ProductGroup>(); IList <ConditionModel> conditionWithProperties = new List <ConditionModel>(); foreach (var conditionObj in conditions) { IList <MaterialProperty> propertiesPerCond = context.MaterialProperties.All.Where(m => m.MaterialId == materialId && m.SubgroupId == subgroupId && m.RowId == conditionObj.RowID).ToList(); foreach (var prop in propertiesPerCond) { ProductGroup.ProductGroupType groupId = (ProductGroup.ProductGroupType)context.Trees.Find(n => n.PN_ID == prop.PropertyId).BT_ID; if (!listOfGroups.ContainsKey(groupId)) { conditionWithProperties = new List <ConditionModel>(); ConditionModel condition = new ConditionElsBinder().FillElsCondition(materialId, subgroupId, context, conditionObj, prop, type); conditionWithProperties.Add(condition); ProductGroup productGroup = FillElsProductGroup(conditionWithProperties, groupId, context); productGroup.MaterialConditions = productGroup.MaterialConditions.OrderBy(c => c.ConditionName).ToList(); listOfGroups.Add(groupId, productGroup); } else { ProductGroup selectedGroup = listOfGroups[groupId]; if (!selectedGroup.MaterialConditions.Any(v => v.ConditionId == conditionObj.RowID)) { ConditionModel condition = new ConditionElsBinder().FillElsCondition(materialId, subgroupId, context, conditionObj, prop, type); selectedGroup.MaterialConditions.Add(condition); } else { ConditionModel condition = selectedGroup.MaterialConditions.Where(v => v.ConditionId == conditionObj.RowID).FirstOrDefault(); string unitName = prop.OrigUnit == null ? "" : context.Units.Find(n => n.UnitId == prop.OrigUnit).UnitText; ElsevierMaterials.Models.Property property = context.PropertiesWithConvertedValues.GetPropertyInfoForMaterialForSelectedMetric(context.PreferredNames.Find(o => o.PN_ID == prop.PropertyId).PN, materialId, subgroupId, conditionObj.RowID, prop.PropertyId, prop.ValueId, type, unitName); condition.Properties.Add(property); } } listOfGroups[groupId].PropertyCount++; } } model.Properties = new PropertiesModel(); OrderPropertiesGroups(model, listOfGroups); }
public ConditionModel FillConditionModel(IList <Condition> conditions, ProductGroup.ProductGroupType productGroup) { ConditionModel cond = new ConditionModel(); cond.ConditionId = conditions[0].ConditionId; cond.ConditionName = conditions[0].ConditionName; cond.Properties = conditions[0].Properties; cond.ProductGroupId = productGroup; return(cond); }
public ProductGroup FillPropertyGroup(IList <ConditionModel> conditions, ProductGroup.ProductGroupType propertyGroupType, IMaterialsContextUow context) { string propertyGroupName = context.PreferredNames.Find(p => p.PN_ID == (int)propertyGroupType).PN; ProductGroup propertyGroup = new ProductGroup(); if (System.Configuration.ConfigurationManager.AppSettings["DeveloperSite"].ToLower() == "true") { if (conditions.Count() > 0) { propertyGroup.ProductGroupId = propertyGroupType; propertyGroup.ProductGroupName = propertyGroupName; propertyGroup.Conditions = conditions; propertyGroup.ConditionId = conditions[0].ConditionId; int propertyCount = 0; foreach (var item in conditions) { propertyCount = propertyCount + item.Properties.Count(); } propertyGroup.PropertyCount = propertyCount; } } else { propertyGroup.ProductGroupId = propertyGroupType; propertyGroup.ProductGroupName = propertyGroupName; propertyGroup.Conditions = conditions; propertyGroup.ConditionId = conditions[0].ConditionId; int propertyCount = 0; foreach (var item in conditions) { propertyCount = propertyCount + item.Properties.Count(); } propertyGroup.PropertyCount = propertyCount; } return(propertyGroup); }
public ProductGroup FillElsProductGroup(IList <ConditionModel> conditionWithProperties, ProductGroup.ProductGroupType groupId, IMaterialsContextUow context) { string nameP = context.PreferredNames.Find(p => p.PN_ID == (int)groupId).PN; ProductGroup productGroup = new ProductGroup(); productGroup.ProductGroupId = groupId; productGroup.ProductGroupName = nameP; productGroup.Conditions = conditionWithProperties.OrderBy(c => c.ConditionName).ToList(); productGroup.ConditionId = conditionWithProperties[0].ConditionId; return(productGroup); }