@InvocableMethod(label='Create Jira Issue' description='Create Jira Issue from Salesforce.')
public static void createJiraIssue(List ids) {
try{
createIssue(ids);
}
catch(Exception ex){
System.debug('ERROR:' + ex.getMessage());
}
}
@Future(callout=true)
public static void createIssue(List ids){
List caseList = [SELECT Subject,Summary__c, Assignee__c, Reporter__c,Priority FROM Case WHERE id = :ids LIMIT 1];
System.debug('caseList::::::'+caseList);
if(caseList.size()>0){
String isssueSummary = caseList[0].Summary__c;
String issueAssignee = caseList[0].Assignee__c;
String issueReporter = caseList[0].Reporter__c;
Jira_Credential__c jiraCreds = [Select id, Jira_API_Token__c,Jira_Password__c,Jira_URL__c,Jira_UserName__c from Jira_Credential__c Limit 1];
HttpRequest req = new HttpRequest();
HttpResponse res = new HttpResponse();
Http http = new Http();
//Construct Authorization and Content header
Blob headerValue = Blob.valueOf(jiraCreds.Jira_UserName__c+':'+jiraCreds.Jira_API_Token__c);
String authorizationHeader = 'Basic ' + EncodingUtil.base64Encode(headerValue);
req.setHeader('Authorization', authorizationHeader);
req.setHeader('content-type','application/json');
req.setHeader('accept','application/json');
//Set Method and Endpoint and Body
req.setMethod('POST');
//req.setHeader('cache-control','no-cache');
//Construct Endpoint
req.setBody('{ "fields": { "project": { "id": "10000" }, "summary": "'+isssueSummary+'", "issuetype": { "id": "10001" }, "assignee": { "id": "'+issueAssignee+'" }, "reporter": { "id": "'+issueReporter+'" }, "priority": { "id": "1" }, "labels": [ "bugfix", "blitz_test" ], "description": "description", "duedate": "2021-08-11" } }'); req.setEndpoint(jiraCreds.DemoNa__Jira_URL__c+'/rest/api/2/issue');
res = http.send(req);
System.debug('ResponseBody::'+res.getBody());
}
}
}