-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchallenge-4.cls
58 lines (49 loc) · 2.35 KB
/
challenge-4.cls
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
public class ProjectCalloutService {
//Complete the implementation for business and callout logic
@InvocableMethod(label='Make REST Callout' description='Inserts' category= 'Opportunity')
public static void PostOpportunityToPMS(List<id> opId){
Opportunity opp = [
select id, name, Account.Name, closeDate, amount, StageName
from Opportunity
where id =: opId[0]];
ID jobID = System.enqueueJob(new QueueablePMSCall(opp));
}
public class QueueablePMSCall implements System.Queueable, Database.AllowsCallouts {
private String jsonBody;
private Opportunity opp;
public QueueablePMSCall(Opportunity oppObj){
opp = oppObj;
JSONGenerator gen = JSON.createGenerator(true);
gen.writeStartObject();
gen.writeStringField('opportunityId', opp.Id);
gen.writeStringField('opportunityName', opp.Name);
gen.writeStringField('accountName', opp.account.Name);
gen.writeDateField('closeDate', opp.closeDate);
gen.writeNumberField('amount', opp.amount);
gen.writeEndObject();
jsonBody = gen.getAsString();
}
public void execute(QueueableContext context) {
//List<ServiceTokens_c> mcs = ServiceTokens_c.getall().values();
ServiceTokens__c token = ServiceTokens__c.getValues('ProjectServiceToken');
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint('callout:ProjectService/'+ token.Token__c);
//request.setEndpoint('https://sb-integration-pms-2.herokuapp.com/projects');
request.setMethod('POST');
request.setHeader('token', token.Token__c);
request.setHeader('Content-Type', 'application/json;charset=UTF-8');
// Set the body as a JSON object
request.setBody(jsonBody);
HttpResponse response = http.send(request);
// Parse the JSON response
if(response.getStatusCode() == 201) {
opp.StageName = 'Submitted Project';
update opp;
} else if(response.getStatusCode() == 500) {
opp.StageName = 'Resubmit Project';
update opp;
}
}
}
}