public ObservableCollection<dynamic> GetDefaultMapping() { _currentMapping = new ObservableCollection<object>(); var hideProperties = new List<string> { "ContactID", "CompanyId", "Company", "CompanyReference", "HasErrors", "Item", "Error", "EntityState", "EntityKey" }; ObservableCollection<string> fileFields = GetColumns(_currentTable); var emptyContact = new Contact(); PropertyInfo[] contactMembers = emptyContact.GetType().GetProperties(); foreach (PropertyInfo contactMember in contactMembers) { if (hideProperties.Contains(contactMember.Name)) continue; dynamic field = new ExpandoObject(); field.CrmField = contactMember.Name; field.FileField = ""; field.FileFields = fileFields; _currentMapping.Add(field); } return _currentMapping; }
private void onImportWorkerOnDoWork(object sender, DoWorkEventArgs e) { var fields = _currentMapping.Where(f => !string.IsNullOrEmpty(f.FileField)); if (fields.Count() == 0) { _importWorker.ReportProgress(100); return; } var records = GetRecords(_currentTable); var contactsToSave = new List<Contact>(); for (int i = 0; i < records.Count; i++) { var record = records[i]; var contact = new Contact(); foreach (var field in fields) { var value = (object)((IDictionary<string, object>) record)[field.FileField]; value = value is DBNull? "": value; contact.GetType().GetProperty((string) field.CrmField).SetValue(contact,value, null); } //ContactsManager.Current.Save(contact); if (contact.Title == null) contact.Title = string.Empty; if (contact.Suffix == null) contact.Suffix = string.Empty; if (contact.FirstName == null) contact.FirstName = string.Empty; if (contact.LastName == null) contact.LastName = string.Empty; contactsToSave.Add(contact); _importWorker.ReportProgress(Convert.ToInt32(Math.Round((double) (i + 1)/records.Count*80.0, 0))); } ContactsManager.Current.Save(contactsToSave); _importWorker.ReportProgress(100); }