1public class AddEligibleInsuranceClausesInvoke {
2 private static final String ACTION_NAME = 'addEligibleInsuranceClauses';
3
4 public static Boolean invokeMethod(Map<String, Object> inputs, Map<String, Object> output) {
5 if (output == null) {
6 output = new Map<String, Object>();
7 }
8
9 try {
10 Invocable.Action action = Invocable.Action.createStandardAction(ACTION_NAME);
11
12 // Either quoteId or contextId is required
13 setInvocationParameter(action, inputs, 'quoteId', false);
14 setInvocationParameter(action, inputs, 'contextId', false);
15
16 // Either quoteLineItemId or instanceKey is required
17 setInvocationParameter(action, inputs, 'quoteLineItemId', false);
18 setInvocationParameter(action, inputs, 'instanceKey', false);
19
20 // insuranceProductClauses expects JSON
21 setInvocationParameter(action, inputs, 'insuranceProductClauses', true);
22
23 // Optional optionFlags map
24 if (inputs != null && inputs.containsKey('optionFlags')) {
25 Map<String, Object> addClauseOptions =
26 (Map<String, Object>) inputs.get('optionFlags');
27 if (addClauseOptions != null) {
28 runtime_industries_insurance.AddEligibleInsuranceClausesOptions apexOptions =
29 new runtime_industries_insurance.AddEligibleInsuranceClausesOptions();
30 if (addClauseOptions.containsKey('saveContext')) {
31 apexOptions.SaveContext =
32 (Boolean) addClauseOptions.get('saveContext');
33 }
34 action.setInvocationParameter('addClauseOptions', apexOptions);
35 }
36 }
37
38 List<Invocable.Action.Result> results = action.invoke();
39 if (results != null && !results.isEmpty() && results[0].isSuccess()) {
40 output.put('output', results[0].getOutputParameters());
41 output.put('success', true);
42 return true;
43 }
44
45 output.put('success', false);
46 if (results != null && !results.isEmpty()) {
47 output.put('errors', results[0].getErrors());
48 }
49 return false;
50 } catch (Exception e) {
51 output.put('success', false);
52 output.put('errorMessage', e.getMessage());
53 return false;
54 }
55 }
56
57 private static void setInvocationParameter(
58 Invocable.Action action,
59 Map<String, Object> payload,
60 String attribute,
61 Boolean serializeJson
62 ) {
63 if (payload != null && payload.containsKey(attribute) && payload.get(attribute) != null) {
64 if (serializeJson) {
65 action.setInvocationParameter(attribute, JSON.serialize(payload.get(attribute)));
66 } else {
67 action.setInvocationParameter(attribute, payload.get(attribute));
68 }
69 }
70 }
71}