1// Sample Apex call for createInsuranceQuote invocable action
2public class CreateInsuranceQuoteInvoke {
3 private static final String ACTION_NAME = 'createInsuranceQuote';
4
5 public static Boolean invokeMethod(Map<String, Object> inputs, Map<String, Object> output) {
6 if (output == null) {
7 output = new Map<String, Object>();
8 }
9
10 try {
11 Invocable.Action action = Invocable.Action.createStandardAction(ACTION_NAME);
12
13 // Required inputs (serialize where needed)
14 setInvocationParameter(action, inputs, 'quoteInputs', true);
15 setInvocationParameter(action, inputs, 'quoteName', false);
16 setInvocationParameter(action, inputs, 'priceBookId', false);
17 setInvocationParameter(action, inputs, 'accountId', false);
18 setInvocationParameter(action, inputs, 'effectiveDate', false);
19
20 // Optional inputs
21 setInvocationParameter(action, inputs, 'contextId', false);
22 setInvocationParameter(action, inputs, 'expirationDate', false);
23 setInvocationParameter(action, inputs, 'additionalFields', true);
24 setInvocationParameter(action, inputs, 'opportunityId', false);
25
26 // quoteOptions is optional but supported
27 if (inputs != null && inputs.containsKey('quoteOptions')) {
28 Map<String, Object> optionsFromInput =
29 (Map<String, Object>) inputs.get('quoteOptions');
30 if (optionsFromInput != null) {
31 runtime_industries_insurance.CreateInsuranceQuoteOptions quoteOptions =
32 new runtime_industries_insurance.CreateInsuranceQuoteOptions();
33 if (optionsFromInput.containsKey('executePricing')) {
34 quoteOptions.executePricing =
35 (Boolean) optionsFromInput.get('executePricing');
36 }
37 if (optionsFromInput.containsKey('validateProductCatalog')) {
38 quoteOptions.validateProductCatalog =
39 (Boolean) optionsFromInput.get('validateProductCatalog');
40 }
41 if (optionsFromInput.containsKey('executeConfigurationRules')) {
42 quoteOptions.executeConfigurationRules =
43 (Boolean) optionsFromInput.get('executeConfigurationRules');
44 }
45 if (optionsFromInput.containsKey('executeQualificationRules')) {
46 quoteOptions.executeQualificationRules =
47 (Boolean) optionsFromInput.get('executeQualificationRules');
48 }
49 if (optionsFromInput.containsKey('saveQuote')) {
50 quoteOptions.saveQuote =
51 (Boolean) optionsFromInput.get('saveQuote');
52 }
53 if (optionsFromInput.containsKey('productSellingModel')) {
54 quoteOptions.productSellingModel =
55 (String) optionsFromInput.get('productSellingModel');
56 }
57 action.setInvocationParameter('quoteOptions', quoteOptions);
58 }
59 }
60
61 List<Invocable.Action.Result> results = action.invoke();
62 if (results != null && !results.isEmpty() && results[0].isSuccess()) {
63 output.put('output', results[0].getOutputParameters());
64 output.put('success', true);
65 return true;
66 }
67
68 output.put('success', false);
69 if (results != null && !results.isEmpty()) {
70 output.put('errors', results[0].getErrors());
71 }
72 return false;
73 } catch (Exception e) {
74 output.put('success', false);
75 output.put('errorMessage', e.getMessage());
76 return false;
77 }
78 }
79
80 private static void setInvocationParameter(
81 Invocable.Action action,
82 Map<String, Object> payload,
83 String attribute,
84 Boolean serializeJson
85 ) {
86 if (payload != null && payload.containsKey(attribute) && payload.get(attribute) != null) {
87 if (serializeJson) {
88 action.setInvocationParameter(attribute, JSON.serialize(payload.get(attribute)));
89 } else {
90 action.setInvocationParameter(attribute, payload.get(attribute));
91 }
92 }
93 }
94}