private void saveButton_click(object sender, EventArgs e) { var crmId = contactItem.GetCrmId().ToString(); string selectedId = resultsTree.GetAllNodes().FirstOrDefault(x => x.Checked)?.Name; EntryValue selectedItem = searchResults.ContainsKey(selectedId) ? searchResults[selectedId] : null; List <string> problems = new List <string>(); if (contactItem.Sensitivity == OlSensitivity.olPrivate) { problems.Add($"Contact {contactItem.FullName} is marked 'private'. Are you sure?"); } if (resultsTree.Nodes["create"].Checked && IsPreviouslySyncedItem(crmId)) { problems.Add($"A record for contact {contactItem.FullName} already exists in CRM. Are you sure you want to create a new record?"); } if (selectedItem != null && !IsProbablySameItem(selectedItem, contactItem)) { problems.Add($"The record for {selectedItem.GetValueAsString("first_name")} {selectedItem.GetValueAsString("last_name")} will be overwritten with the details of {contactItem.FullName}."); } if (IsPreviouslySyncedItem(crmId) && selectedItem != null) { problems.Add($"Contact {selectedItem.GetValueAsString("first_name")} {selectedItem.GetValueAsString("last_name")} has previously been synced and will be overwritten."); } if (resultsTree.Nodes["create"].Checked && IsPreviouslySyncedItem(crmId)) { problems.Add($"Contact {contactItem.FullName} has previously been synced. Are you sure you want to create another copy?"); } if (problems.Count == 0 || MessageBox.Show( string.Join("\n", problems.Select(p => $"• {p}\n").ToArray()), "Problems found: are you sure?", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK) { if (resultsTree.Nodes["create"].Checked) { contactItem.ClearCrmId(); contactItem.SetManualOverride(); } else { try { contactItem.ChangeCrmId(resultsTree.GetAllNodes().FirstOrDefault(x => x.Checked).Name); } finally { contactItem.SetManualOverride(); } } } else { dontClose = true; } }