Comment ajouter un nouveau chef de file et mettre à jour une avance existant dans Salesforce

StackOverflow https://stackoverflow.com/questions/3775654

  •  04-10-2019
  •  | 
  •  

Question

Je suis nouveau au développement Apex et je commence à travailler sur mon projet Apex. Je voudrais faire ce qui suit:


en utilisant un service de messagerie // je me suis dit cette partie
obtenir emailAddress à partir d'un e-mail // savoir comment faire
s'il y a déjà exisiting plomb ou contact avec la même emailAddress
  mettre à jour ses informations
autre
  créer un nouveau plomb


Je voudrais kow comment je peux chercher ma base de données (les fils de Salesforce et contacts) et mettre à jour les informations de l'utilisateur existant.

Était-ce utile?

La solution

Vous devez exécuter une requête sur le plomb et le contact avec l'adresse e-mail que les critères pour vous interroger. Si elle retourne 0 enregistrements pour le plomb et 0 enregistrements pour le contact, vous créez un nouveau responsable.

Votre requête pourrait revenir plus de 1 record pour plomb ou contact, de sorte que vous devrez élaborer une stratégie pour gérer ce cas. Adresse e-mail n'a pas à être unique.

public class StackOverflowExample {

public static void test(String email) {
    handleNewEmail(email);
}

private static void handleNewEmail(String email) {
    List<Lead> leads = [select id, email from Lead where email = :email];
    List<Contact> contacts = [select id, email from Contact where email = :email];
    if (leads.size() == 0 && contacts.size() == 0) {
        //Create new lead
        insert new Lead(Company = 'Lead Company', FirstName = 'firstname', LastName = 'lastname', Email = email);
    } else if (leads.size() == 1) {
        // Update this lead
        leads[0].FirstName = 'newfirstname';
        update leads;
    } else if (contacts.size() == 1) {
        // Update this contact
        contacts[0].FirstName = 'newfirstname';
        update contacts;
    } else {
        // Must be more than 1 contact or lead
        System.debug('\nMore than 1 contact or lead.');
    }
}

}

L'autre option consiste à exécuter une recherche limiter la portée aux champs e-mail.

public class StackOverflowExample {

public static void test(String email) {
    handleNewEmail(email);
}

private static void handleNewEmail(String email) {
    List<List<SObject>> searchResults = [FIND :email IN Email Fields RETURNING 
                Lead(Id, FirstName, LastName), 
                Contact(Id, FirstName, LastName)];
    List<Lead> leads = ((List<Lead>)searchResults[0]);
    List<Contact> contacts = ((List<Contact>)searchResults[1]);
    if (leads.size() == 0 && contacts.size() == 0) {
        //Create new lead
        insert new Lead(Company = 'Lead Company', FirstName = 'firstname', LastName = 'lastname', Email = email);
    } else if (leads.size() == 1) {
        // Update this lead
        leads[0].FirstName = 'newfirstname';
        update leads;
    } else if (contacts.size() == 1) {
        // Update this contact
        contacts[0].FirstName = 'newfirstname';
        update contacts;
    } else {
        // Must be more than 1 contact or lead
        System.debug('\nMore than 1 contact or lead.');
    }
}

}

Autres conseils

Dans Salesforce intégré vous aide peut trouver un info sur le objet InboundEmail. La page contient également des exemples 2 sur le travail avec les contacts et leads fonction de l'adresse e-mail extraite du message.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top