Note: This release is in preview. Features described here don’t become generally available until the latest general availability date that Salesforce announces for this release. Before then, and where features are noted as beta, pilot, or developer preview, we can’t guarantee general availability within any particular time frame or at all. Make your purchase decisions only on the basis of generally available products and features.
Example Implementation to Associate SurveySubjects with SurveyInvitation and SurveyResponses
If no survey responses are populated, create a custom code to associate
SurveySubjects with SurveyInvitation and SurveyResponses.
This example shows how to associate SurveySubjects with SurveyInvitation and SurveyResponses.
1public class CreateEntriesInSurveyInvitationRespRL {
2 // Utility to create SurveyInvitation and SurveySubject record
3 public static void addEntry(String associatedRecordId, String surveyId, String participantId) {
4 String invitationId = createSurveyInvitation(surveyId, participantId);
5
6 createSurveySubject(invitationId, associatedRecordId);
7 }
8
9 // Create an unauthenticated invitation by setting the surveyId and participantId
10 private static String createSurveyInvitation(String surveyId, String participantId) {
11 SurveyInvitation surveyInv = new SurveyInvitation();
12 surveyInv.Name = 'SurveyInvitationForCase'; // add your survey invitation name here
13 surveyInv.ParticipantId = participantId;
14 surveyInv.CommunityId = '0DBRM0000004n4y'; //add your community id here
15 surveyInv.OptionsAllowGuestUserResponse = true;
16 surveyInv.SurveyId = surveyId;
17
18 // Insert the SurveyInvitation Record
19 insert surveyInv;
20
21 return surveyInv.Id;
22 }
23
24 // Associate the above invitation to the required record (eg: Case, Opportunity...)
25 private static void createSurveySubject(String invitationId, String associatedRecordId) {
26 SurveySubject subj = new SurveySubject();
27 subj.Name = 'Sur_Subject_for_invitation';
28 subj.ParentId = invitationId; // similary you can use survey response id to associate survey subject to a response record.
29 subj.SubjectId = associatedRecordId;
30
31 // Insert the SurveySubject Record
32 insert subj;
33 }
34}
35
36
37
38//Use this trigger to create a survey subject record associated to
39//the Survey Response record
40
41trigger SurveyResponseForCaseTrigger on SurveyResponse (after insert) {
42
43 System.debug('Inside Survey response trigger ');
44 for(SurveyResponse sr: Trigger.New)
45 {
46 SurveySubject subj = new SurveySubject();
47 subj.Name = 'Sur_Subject_for_response';
48 subj.ParentId = sr.id; //Associating survey response id
49
50 //Get the associatedRecordId recordId (like Case, Opportunity etc) using the SurveyInvitation Id and
51 //assigning it to SubjectId, assuming we inserted SurveySubject record for the associated invitation
52 //using the previous code
53
54 List<SurveySubject> SurSubj=[select subjectid from SurveySubject where parentid = :sr.invitationId];
55 for(SurveySubject sub:SurSubj){
56 String ids=String.valueOf(sub.subjectid).substring(0,3);
57 if('500'.equals(ids)){
58
59 subj.SubjectId =sub.subjectid;
60 // Insert the SurveySubject Record
61 insert subj;
62 break;
63
64 }
65
66}