private void frmCustomModules_Load(object sender, EventArgs e) { using (new WaitCursor(this)) { try { RestAPIWrapper.EnsureLoggedIn(Globals.ThisAddIn.SuiteCRMUserSession); if (Globals.ThisAddIn.SuiteCRMUserSession.NotLoggedIn) { MessageBox.Show("Please enter SuiteCRM details in General tab and try again", "Invalid Authentication"); base.Close(); return; } PopulateCustomModulesListView(this.lstViewAvailableModules, this.IgnoreModules); } catch (Exception ex) { Log.Warn("frmCustomModules_Load error", ex); base.Close(); MessageBox.Show(ex.Message, ex.GetType().Name, MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
/// <summary> /// Get contact ids of all email addresses in my From, To, or CC fields which /// are known to CRM and not included in these excluded addresses. /// </summary> /// <param name="excludedAddresses">email addresses for which contact ids should /// not be returned.</param> /// <returns>A list of strings representing CRM contact ids.</returns> private List <string> GetValidContactIds(List <string> excludedAddresses) { RestAPIWrapper.EnsureLoggedIn(SuiteCRMUserSession); List <string> result = new List <string>(); List <string> checkedAddresses = new List <string>(); try { foreach (string address in ConstructAddressList($"{this.From};{this.To};{this.CC}")) { if (!checkedAddresses.Contains(address) && !excludedAddresses.Contains(address.ToUpper())) { var contactReturn = SuiteCRMUserSession.RestServer.GetCrmResponse <RESTObjects.Contacts>("get_entry_list", ConstructGetContactIdByAddressPacket(address)); if (contactReturn.entry_list != null && contactReturn.entry_list.Count > 0) { result.Add(contactReturn.entry_list[0].id); } } checkedAddresses.Add(address); } } catch (Exception ex) { log.Warn("GetValidContactIDs error", ex); throw; } return(result); }
/// <summary> /// Get contact ids of all email addresses in my From, To, or CC fields which /// are known to CRM and not included in these excluded addresses. /// </summary> /// <param name="moduleKeys">Keys (standardised names) of modules to search.</param> /// <param name="excludedAddresses">email addresses for which related ids should /// not be returned.</param> /// <returns>A list of strings representing CRM ids.</returns> private IEnumerable <CrmEntity> GetRelatedIds(IEnumerable <string> moduleKeys, IEnumerable <string> excludedAddresses) { RestAPIWrapper.EnsureLoggedIn(); List <CrmEntity> result = new List <CrmEntity>(); List <string> checkedAddresses = new List <string>(); try { foreach (string address in ConstructAddressList($"{this.From};{this.To};{this.CC}")) { if (!checkedAddresses.Contains(address) && !excludedAddresses.Contains(address.ToUpper())) { RESTObjects.IdsOnly contacts = null; foreach (string moduleKey in moduleKeys) { contacts = SuiteCRMUserSession.RestServer.GetCrmResponse <RESTObjects.IdsOnly>("get_entry_list", ConstructGetContactIdByAddressPacket(address, moduleKey)); if (contacts.entry_list != null && contacts.entry_list.Count > 0) { result.AddRange(contacts.entry_list.Select(x => new CrmEntity(moduleKey, x.id))); } } } checkedAddresses.Add(address); } } catch (Exception ex) { log.Warn("GetValidContactIDs error", ex); throw; } return(result); }