private bool ChangeManufacturerModel(ElectricalComponentDataAdapter adapter, ElectricalEquipmentComponent 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.CreateElectricalComponent && MetaData.ImportType != CommonUtils.ImportType.UpdateElectricalComponent) { DbImportResult.ErrorMessages.Add(IMPORT_TYPE_NOT_COMPATIBLE); return DbImportResult; } mExistingEquipments = Cee.ElectricalEquipments.ToList(); mExistingComponents = (from x in Cee.ElectricalEquipmentComponents .Include("ElectricalEquipmentComponentType") select x).ToList(); mExistingEquipmentProperties = Cee.ElectricalEquipmentProperties.ToList(); mExistingEquipmentComponentTypes = Cee.ElectricalEquipmentComponentTypes.ToList(); mExistingEquipmentComponentTypeProperty = (from x in Cee.ElectricalEquipmentComponentTypeProperties.Include("ElectricalEquipmentComponentType") select x).ToList(); mExistingPropertyValues = Cee.ElectricalPropertyValues.ToList(); mExistingManufacturers = (from x in Cee.Manufacturers.Include("Models") where x.EquipmentTypeId == (int) CommonUtils.EquipmentTypeCode.ELECT 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<ElectricalComponentDataAdapter> importData = new List<ElectricalComponentDataAdapter>(); 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.Read()) { rowNumber++; ElectricalComponentDataAdapter adapter = new ElectricalComponentDataAdapter(dr, mExistingEquipmentProperties, 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(); } } if (importData.Count == 0) { RaiseMessage(CommonUtils.MessageType.Warning, NoDataFoundForWorkSheetMessage()); } var operation = "Addded"; if (MetaData.ImportType == CommonUtils.ImportType.CreateElectricalComponent) { InsertData(importData); } else if (MetaData.ImportType == CommonUtils.ImportType.UpdateElectricalComponent) { UpdateData(importData); operation = "Updated"; } foreach (ElectricalEquipmentComponent result in mSavedResults) { RaiseMessage(CommonUtils.MessageType.Added, string.Format("{0} Component '{1}' from worksheet {2}.", operation, result.Name, WorkSheetName)); } ImportedCount = mSavedResults.Count; DbImportResult.ImportedCount = ImportedCount; return DbImportResult; } catch (Exception ex) { DbImportResult.ErrorMessages.Add(ex.ToString()); return DbImportResult; } finally { if (excelConn.State == ConnectionState.Open) { excelConn.Close(); } } } }
private void BuildPropertyValues(ElectricalEquipmentComponent componentIn, ElectricalComponentDataAdapter adapter) { foreach (KeyValuePair<string, string> pair in adapter.PropertyValues) { //DOES PROPERTY EXIST? ElectricalEquipmentProperty property = (from x in mExistingEquipmentProperties where x.Name.ToLower() == pair.Key.ToLower() select x).FirstOrDefault(); if (property == null) { if (CanCreateProperties) { property = new ElectricalEquipmentProperty { Name = pair.Key, DefaultValue = pair.Value, Description = " (created by importer)." }; mExistingEquipmentProperties.Add(property);//update cache } else { //ERROR! RaiseMessage(CommonUtils.MessageType.Error, string.Format("WorkSheet '{0}' Row '{1} Tag {2} Component Name {3}' : The property does not exist.", WorkSheetName, adapter.RowNumber, adapter.Tag, adapter.ComponentName)); continue; } } //CHECK ElectricalEquipmentComponentTypeProperty Exists ElectricalEquipmentComponentTypeProperty equipmentComponentTypeProperty = null; if (mExistingEquipmentComponentTypeProperty.Any()) { equipmentComponentTypeProperty = (from x in mExistingEquipmentComponentTypeProperty where x.ElectricalEquipmentComponentType.Name.ToLower() == componentIn.ElectricalEquipmentComponentType.Name.ToLower() && x.ElectricalEquipmentProperty.Name.ToLower() == property.Name.ToLower() select x).FirstOrDefault(); } if (equipmentComponentTypeProperty == null) { if (CanCreateProperties) { //CREATE JOIN ROW equipmentComponentTypeProperty = new ElectricalEquipmentComponentTypeProperty(); equipmentComponentTypeProperty.ElectricalEquipmentComponentType = componentIn.ElectricalEquipmentComponentType; //note: set the object! equipmentComponentTypeProperty.ElectricalEquipmentProperty = property; //not set the object! 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.ElectricalEquipmentComponentType.Name, property.Name)); continue; } } property.ElectricalEquipmentComponentTypeProperties.Add(equipmentComponentTypeProperty); //CHECK PROPERTYVALUE EXISTS ElectricalPropertyValue propertyValue = null; if (mExistingPropertyValues.Any()) { propertyValue = (from x in mExistingPropertyValues where x.ElectricalEquipmentComponent.Name.ToLower() == componentIn.Name.ToLower() && x.ElectricalEquipmentProperty.Name.ToLower() == property.Name.ToLower() select x).FirstOrDefault(); } if (propertyValue == null) { propertyValue = new ElectricalPropertyValue(); propertyValue.ElectricalEquipmentComponent = componentIn; propertyValue.ElectricalEquipmentProperty = property; mExistingPropertyValues.Add(propertyValue);//update cache } //set value if (!string.IsNullOrEmpty(pair.Value)) { propertyValue.Value = pair.Value.ChangeNullToEmptyString(); } componentIn.ElectricalPropertyValues.Add(propertyValue); } }