private bool ChangeManufacturerModel(InstrumentComponentDataAdapter adapter, InstrumentComponent newComponent) { //CHANGING Manufacturer if (!string.IsNullOrEmpty(adapter.Manufacturer)) { if (adapter.Manufacturer.ToLower() != "null") { var manufactuer = (from x in mExistingManufacturers where x.Name.ToLower() == adapter.Manufacturer.ToLower() select x).FirstOrDefault(); if (manufactuer == null) { RaiseMessage(CommonUtils.MessageType.Error, string.Format(BuildItemNotFoundInDatabaseMessage("Manufacturer", adapter.Manufacturer, adapter.RowNumber))); return false; } newComponent.Manufacturer = manufactuer; newComponent.ManufacturerId = manufactuer.Id; if (adapter.Model.ToLower() != "null") { //CHANGING Model if (!string.IsNullOrEmpty(adapter.Model)) { var model = (from x in manufactuer.Models where x.Name.ToLower() == adapter.Model.ToLower() select x).FirstOrDefault(); if (model == null) { RaiseMessage(CommonUtils.MessageType.Error, string.Format(BuildItemNotFoundInDatabaseMessage("Model", adapter.Model, adapter.RowNumber))); return false; } newComponent.Model = model; newComponent.ModelId = model.Id; } } else { newComponent.Model = null; newComponent.ModelId = null; } } else { newComponent.Manufacturer = null; newComponent.ManufacturerId = null; newComponent.Model = null; newComponent.ModelId = null; } } return false; }
public override DbImportResult Import(bool canCreateProperties = false) { DbImportResult = new DbImportResult(); if (MetaData.ImportType != CommonUtils.ImportType.CreateInstrumentComponent && MetaData.ImportType != CommonUtils.ImportType.UpdateInstrumentComponent) { DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE); return DbImportResult; } mExistingProperties = Cee.InstrumentProperties.ToList(); mExistingEquipmentComponentTypeProperty = (from x in Cee.InstrumentComponentTypeProperties.Include("InstrumentComponentType") select x).ToList(); mExistingComponentTypes = Cee.InstrumentComponentTypes.ToList(); mExistingManufacturers = (from x in Cee.Manufacturers.Include("Models") where x.EquipmentTypeId == (int)CommonUtils.EquipmentTypeCode.INSTR select x).ToList(); CanCreateProperties = canCreateProperties; //Include Headers so we can match up the component properties (HDR=YES). string connString = BuildConnectionString(MetaData.FullFileName); using (OleDbConnection excelConn = new OleDbConnection(connString)) { IList<InstrumentComponentDataAdapter> importData = new List<InstrumentComponentDataAdapter>(); try { using (OleDbCommand cmd = new OleDbCommand()) { cmd.CommandTimeout = 600; cmd.Connection = excelConn; cmd.CommandText = ComponentCommandText; excelConn.Open(); List<string> spreadSheetPropertyNames = GetPropertyColumnHeadersFromDataSet(cmd); if (spreadSheetPropertyNames.Count != spreadSheetPropertyNames.Distinct().Count()) { DbImportResult.ErrorMessages.Add(DuplicatePropertyNamesExistMessage()); return DbImportResult; } if (!WorkSheetCheckColumnNamesAreValid<BaseComponentColumn>(GetColumnHeadersFromDataSet(cmd, (int)BaseComponentColumn.Model))) { DbImportResult.ErrorMessages.Add(ExcelWorkSheetColumnsNotValidMessage()); return DbImportResult; } using (OleDbDataReader dr = cmd.ExecuteReader()) { int rowNumber = 1; while (dr != null && dr.Read()) { rowNumber++; InstrumentComponentDataAdapter adapter = new InstrumentComponentDataAdapter(dr, mExistingProperties, spreadSheetPropertyNames, rowNumber, CanCreateProperties, MetaData.ImportType); if (!adapter.IsValid()) { foreach (string errorMessage in adapter.ErrorMessages) { RaiseMessage(CommonUtils.MessageType.Error, errorMessage); } } else { importData.Add(adapter); } } excelConn.Close(); } } SaveData(importData); DbImportResult.ImportedCount = mSavedResults.Count; return DbImportResult; } catch (OleDbException ex) { DbImportResult.ErrorMessages.Add(ex.ToString()); return DbImportResult; } finally { if (excelConn.State == ConnectionState.Open) { excelConn.Close(); } } } }
private void BuildPropertyValues(InstrumentComponent componentIn, InstrumentComponentDataAdapter adapter) { foreach (KeyValuePair<string, string> pair in adapter.PropertyValues) { //DOES PROPERTY EXIST? InstrumentProperty property = (from x in mExistingProperties where x.Name.ToLower() == pair.Key.ToLower() select x).FirstOrDefault(); if (property == null) { if (CanCreateProperties) { property = new InstrumentProperty { Name = pair.Key, DefaultValue = pair.Value, Description = " (created by importer)." }; mExistingProperties.Add(property);//update cache } else { //ERROR! RaiseMessage(CommonUtils.MessageType.Error, string.Format("WorkSheet '{0}' Line '{1} Tag {2} Component Name {3}' : The property does not exist.", WorkSheetName, adapter.RowNumber, adapter.Tag, adapter.ComponentName)); continue; } } //CHECK InstrumentComponentTypeProperty Exists InstrumentComponentTypeProperty equipmentComponentTypeProperty = null; if (mExistingEquipmentComponentTypeProperty.Any()) { equipmentComponentTypeProperty = (from x in mExistingEquipmentComponentTypeProperty where x.InstrumentComponentType.Name.ToLower() == componentIn.InstrumentComponentType.Name.ToLower() && x.InstrumentProperty.Name.ToLower() == property.Name.ToLower() select x).FirstOrDefault(); } if (equipmentComponentTypeProperty == null) { if (CanCreateProperties) { //CREATE JOIN ROW equipmentComponentTypeProperty = new InstrumentComponentTypeProperty { InstrumentComponentType = componentIn.InstrumentComponentType, InstrumentProperty = property }; mExistingEquipmentComponentTypeProperty.Add(equipmentComponentTypeProperty);//update cache } else { //ERROR! RaiseMessage(CommonUtils.MessageType.Warning, string.Format("WorkSheet '{0}' Row '{1} Tag {2} Component Type {3}' : The property {4} does not belong to the Component Type.", WorkSheetName, adapter.RowNumber, adapter.Tag, componentIn.InstrumentComponentType.Name, property.Name)); continue; } } property.InstrumentComponentTypeProperties.Add(equipmentComponentTypeProperty); //CHECK PROPERTYVALUE EXISTS InstrumentPropertyValue propertyValue = null; //if (mCee.InstrumentPropertyValues.Any()) //{ propertyValue = (from x in Cee.InstrumentPropertyValues where x.InstrumentComponent.Name.ToLower() == componentIn.Name.ToLower() && x.InstrumentProperty.Name.ToLower() == property.Name.ToLower() select x).FirstOrDefault(); //} if (propertyValue == null) { propertyValue = new InstrumentPropertyValue { InstrumentComponent = componentIn, InstrumentProperty = property }; //mExistingPropertyValues.Add(propertyValue);//update cache } //set value if (!string.IsNullOrEmpty(pair.Value)) { propertyValue.Value = pair.Value.ChangeNullToEmptyString(); } componentIn.InstrumentPropertyValues.Add(propertyValue); } }