extractRef
- Update the code in extractRef to check for null.
- Allow for more variations of Case in subject line
patternString = '.*case\\s*[;:=#]?\\s*([0-9]+).*';
private String extractRef(String emailSubject) { String itemRef = null; // add test for null if(emailSubject == null) return null; String target = emailSubject.toLowerCase(); String patternString; Pattern thePattern; Matcher matcher; /* Take the text between the period and ":ref" For example in the ref [ ref:00D7JFzw.5007H3Rh8:ref ] extract 5007H3Rh8 Take that text and remove the 5007. For example H3Rh8 Append H3Rh8 to https://na5.salesforce.com/5007000000 to produce https://na5.salesforce.com/5007000000H3Rh8. This is your link to get to the case. */ patternString = '.*ref:(.{8}).(.{4})(.+):ref.*'; thePattern = Pattern.compile(patternString); matcher = thePattern.matcher(emailSubject); // do not change to lower case for this test because Id's are case sensitive if (matcher.matches()) { String caseId = matcher.group(2) + '000000' + matcher.group(3); if(TRACE) system.debug(Logginglevel.ERROR,'extractRef "' + caseId + '"'); Case[] matchingCases = [Select CaseNumber from Case where Id = :caseId]; if(matchingCases.size() == 1) { Case theCase = matchingCases[0]; itemRef = theCase.CaseNumber; } } if(itemRef == null) { // extract the Case Number from the email Subject // Re: Test two numbers Case: 30088 and Case: 30089' // returns 30089, the last pattern matched // Change the pattern to allow for more variations: patternString = '.*case\\s*[;:=#]?\\s*([0-9]+).*'; thePattern = Pattern.compile(patternString); matcher = thePattern.matcher(target); if (matcher.matches()) { itemRef = matcher.group(1); if(TRACE) system.debug('Extracted case number ' + itemRef); } } return itemRef; }
No comments:
Post a Comment