171 lines
8.8 KiB
OpenEdge ABL
171 lines
8.8 KiB
OpenEdge ABL
public class BrevoContactTrigger_Handler {
|
|
/*Method to create contact in Brevo when created in SF*/
|
|
|
|
@future(callout=true)
|
|
public static void createContactInBrevo(String email, String firstName, String lastName, String phone, Id contactId) {
|
|
|
|
try {
|
|
// Fetch the contact record
|
|
Contact con = [SELECT Brevo_Status__c, Brevo_List__c FROM Contact WHERE Id = :contactId];
|
|
|
|
// Map the Brevo_List__c values to list IDs
|
|
Map<String, Integer> listMap = new Map<String, Integer>{
|
|
'Salesforce Contact'=> 7,
|
|
'Test List' => 8,
|
|
'Identified Contacts' => 6
|
|
};
|
|
|
|
// Get the list IDs from the Brevo_List__c field
|
|
List<Integer> listIds = new List<Integer>();
|
|
for (String listName : con.Brevo_List__c.split(';')) {
|
|
if (listMap.containsKey(listName)) {
|
|
listIds.add(listMap.get(listName));
|
|
}
|
|
}
|
|
HttpRequest req = new HttpRequest();
|
|
Http http = new Http();
|
|
|
|
req.setEndpoint('https://api.brevo.com/v3/contacts');
|
|
req.setMethod('POST');
|
|
req.setHeader('Content-Type', 'application/json');
|
|
req.setHeader('api-key', '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');
|
|
Map<String, Object> brevoContact = new Map<String, Object>();
|
|
brevoContact.put('email', email);
|
|
Map<String, Object> brevoAttributes = new Map<String, Object>();
|
|
brevoAttributes.put('FIRSTNAME', firstName);
|
|
brevoAttributes.put('LASTNAME', lastName);
|
|
brevoAttributes.put('SMS', phone);
|
|
brevoContact.put('attributes', brevoAttributes);
|
|
String brevoBody = JSON.serialize(brevoContact);
|
|
req.setBody(brevoBody);
|
|
|
|
try {
|
|
HttpResponse res = http.send(req);
|
|
if (res.getStatusCode() != 201) {
|
|
System.debug('Failed to create contact in Brevo with status code: ' + res.getStatusCode());
|
|
con.Brevo_Status__c = 'Error: ' + res.getStatusCode();
|
|
}else{
|
|
Map<String, Object> responseMap = (Map<String, Object>) JSON.deserializeUntyped(res.getBody());
|
|
String brevoId = String.valueOf(responseMap.get('id'));
|
|
//String successMessage = String.valueOf(responseMap.get('message'));
|
|
System.debug('Created Successfully in Brevo with ID: '+ brevoId);
|
|
con.Brevo_Status__c = 'Contact created in Brevo successfully: ' + ', Brevo ID: ' + brevoId;
|
|
}
|
|
database.update(con);
|
|
} catch(Exception ex) {
|
|
System.debug('API call failed with message: ' + ex.getMessage());
|
|
}
|
|
|
|
} catch(Exception ex) {
|
|
System.debug('API call failed with message: ' + ex.getMessage());
|
|
}
|
|
}
|
|
|
|
/*Method to update contact in Brevo when updated in SF Also, if update contact not exist in Brevo create new one*/
|
|
|
|
@future(callout=true)
|
|
public static void updateContactInBrevo(String email, String firstName, String lastName, String phone, Id contactId) {
|
|
|
|
try {
|
|
HttpRequest req = new HttpRequest();
|
|
Http http = new Http();
|
|
|
|
// GET request to check if the contact exists
|
|
req.setEndpoint('https://api.brevo.com/v3/contacts/' + email);
|
|
req.setMethod('GET');
|
|
req.setHeader('Content-Type', 'application/json');
|
|
req.setHeader('api-key', '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');
|
|
|
|
HttpResponse res = http.send(req);
|
|
Contact con = [SELECT Brevo_Status__c FROM Contact WHERE Id = :contactId];
|
|
if (res.getStatusCode() == 200) {
|
|
// contact exists, sending a PUT request to update the contact
|
|
req.setMethod('PUT');
|
|
Map<String, Object> brevoContact = new Map<String, Object>();
|
|
brevoContact.put('email', email);
|
|
Map<String, Object> brevoAttributes = new Map<String, Object>();
|
|
brevoAttributes.put('FIRSTNAME', firstName);
|
|
brevoAttributes.put('LASTNAME', lastName);
|
|
brevoAttributes.put('SMS', phone);
|
|
brevoContact.put('attributes', brevoAttributes);
|
|
String brevoBody = JSON.serialize(brevoContact);
|
|
req.setBody(brevoBody);
|
|
|
|
HttpResponse updateRes = http.send(req);
|
|
if (updateRes.getStatusCode() == 204) {
|
|
System.debug('Record successfully updated in Brevo with status code: ' + updateRes.getStatusCode());
|
|
con.Brevo_Status__c = 'Update Successfully, Brevo Email: ' + email;
|
|
} else {
|
|
System.debug('Failed to update contact in Brevo with status code: ' + updateRes.getStatusCode());
|
|
con.Brevo_Status__c = 'Update Error: ' + updateRes.getStatusCode();
|
|
}
|
|
database.update(con);
|
|
} else {
|
|
System.debug('Contact does not exist in Brevo creating new');
|
|
HttpRequest req1 = new HttpRequest();
|
|
Http http1 = new Http();
|
|
|
|
req1.setEndpoint('https://api.brevo.com/v3/contacts');
|
|
req1.setMethod('POST');
|
|
req1.setHeader('Content-Type', 'application/json');
|
|
req1.setHeader('api-key', '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');
|
|
Map<String, Object> brevoContact = new Map<String, Object>();
|
|
brevoContact.put('email', email);
|
|
Map<String, Object> brevoAttributes = new Map<String, Object>();
|
|
brevoAttributes.put('FIRSTNAME', firstName);
|
|
brevoAttributes.put('LASTNAME', lastName);
|
|
brevoAttributes.put('SMS', phone);
|
|
brevoContact.put('attributes', brevoAttributes);
|
|
String brevoBody = JSON.serialize(brevoContact);
|
|
req1.setBody(brevoBody);
|
|
|
|
HttpResponse res1 = http.send(req1);
|
|
if (res1.getStatusCode() != 201) {
|
|
System.debug('Failed to create contact in Brevo with status code: ' + res.getStatusCode());
|
|
con.Brevo_Status__c = 'Create Error: ' + res.getStatusCode();
|
|
}else{
|
|
Map<String, Object> responseMap = (Map<String, Object>) JSON.deserializeUntyped(res1.getBody());
|
|
String brevoId = String.valueOf(responseMap.get('id'));
|
|
System.debug('Created Successfully in Brevo with ID: '+ brevoId);
|
|
con.Brevo_Status__c = 'Create Success, Brevo ID: ' + brevoId;
|
|
}
|
|
database.update(con);
|
|
}
|
|
|
|
} catch(Exception ex) {
|
|
System.debug('API call failed with message: ' + ex.getMessage());
|
|
}
|
|
}
|
|
|
|
/*Method to delete contact from Brevo when deleted from SF*/
|
|
|
|
@future(callout=true)
|
|
public static void deleteContactInBrevo(String email) {
|
|
HttpRequest req = new HttpRequest();
|
|
Http http = new Http();
|
|
|
|
// GET request to check if the contact exists
|
|
req.setEndpoint('https://api.brevo.com/v3/contacts/' + email);
|
|
req.setMethod('GET');
|
|
req.setHeader('Content-Type', 'application/json');
|
|
req.setHeader('api-key', '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');
|
|
|
|
try {
|
|
HttpResponse res = http.send(req);
|
|
if (res.getStatusCode() == 200) {
|
|
// contact exists, sending a DELETE request to delete the contact
|
|
req.setMethod('DELETE');
|
|
HttpResponse deleteRes = http.send(req);
|
|
if (deleteRes.getStatusCode() == 204) {
|
|
System.debug('Record successfully deleted from Brevo with status code: ' + deleteRes.getStatusCode());
|
|
|
|
} else {
|
|
System.debug('Failed to delete contact in Brevo with status code: ' + deleteRes.getStatusCode());
|
|
}
|
|
}
|
|
} catch(Exception ex) {
|
|
System.debug('API call failed with message: ' + ex.getMessage());
|
|
}
|
|
}
|
|
|
|
} |