From 87e79f602a097340f14c8cf7514d36fc96ba5d1e Mon Sep 17 00:00:00 2001 From: Shruti Suryawanshi Date: Tue, 10 Sep 2024 01:39:11 -0400 Subject: [PATCH] added test cases --- .../data-source.tf | 3 + .../apis.md | 0 .../resource.tf | 23 +++ .../data-source.tf | 0 .../resource.tf | 0 ...ce_genesyscloud_outbound_digitalruleset.go | 1 + ...syscloud_outbound_digitalruleset_schema.go | 19 ++- ...nesyscloud_outbound_digitalruleset_test.go | 142 +++++++++++++++--- ...esyscloud_outbound_digitalruleset_utils.go | 92 +++++++++--- 9 files changed, 225 insertions(+), 55 deletions(-) create mode 100644 examples/data-sources/genesyscloud_outbound_digitalruleset/data-source.tf rename {genesyscloud/outbound_digitalruleset/examples => examples}/resources/genesyscloud_outbound_digitalruleset/apis.md (100%) create mode 100644 examples/resources/genesyscloud_outbound_digitalruleset/resource.tf delete mode 100644 genesyscloud/outbound_digitalruleset/examples/data-sources/genesyscloud_outbound_digitalruleset/data-source.tf delete mode 100644 genesyscloud/outbound_digitalruleset/examples/resources/genesyscloud_outbound_digitalruleset/resource.tf diff --git a/examples/data-sources/genesyscloud_outbound_digitalruleset/data-source.tf b/examples/data-sources/genesyscloud_outbound_digitalruleset/data-source.tf new file mode 100644 index 000000000..9ad388f28 --- /dev/null +++ b/examples/data-sources/genesyscloud_outbound_digitalruleset/data-source.tf @@ -0,0 +1,3 @@ +data "genesyscloud_outbound_digitalruleset" "digital-ruleset" { + name = "Digital RuleSet Test" +} \ No newline at end of file diff --git a/genesyscloud/outbound_digitalruleset/examples/resources/genesyscloud_outbound_digitalruleset/apis.md b/examples/resources/genesyscloud_outbound_digitalruleset/apis.md similarity index 100% rename from genesyscloud/outbound_digitalruleset/examples/resources/genesyscloud_outbound_digitalruleset/apis.md rename to examples/resources/genesyscloud_outbound_digitalruleset/apis.md diff --git a/examples/resources/genesyscloud_outbound_digitalruleset/resource.tf b/examples/resources/genesyscloud_outbound_digitalruleset/resource.tf new file mode 100644 index 000000000..144cca725 --- /dev/null +++ b/examples/resources/genesyscloud_outbound_digitalruleset/resource.tf @@ -0,0 +1,23 @@ +resource "genesyscloud_outbound_digitalruleset" "test_ruleset_sample" { + name = "Test Digital RuleSet - 13" + version = 1 + contact_list_id = "c2406f62-63e3-4826-a6f9-ae635bd731e0" + rules { + name = "Rule-1" + order = 0 + category = "PreContact" + conditions { + inverted = true + contact_column_condition_settings { + column_name = "Work" + operator = "Equals" + value = "\"XYZ\"" + value_type = "String" + } + } + actions { + do_not_send_action_settings = jsonencode({}) + } + + } +} \ No newline at end of file diff --git a/genesyscloud/outbound_digitalruleset/examples/data-sources/genesyscloud_outbound_digitalruleset/data-source.tf b/genesyscloud/outbound_digitalruleset/examples/data-sources/genesyscloud_outbound_digitalruleset/data-source.tf deleted file mode 100644 index e69de29bb..000000000 diff --git a/genesyscloud/outbound_digitalruleset/examples/resources/genesyscloud_outbound_digitalruleset/resource.tf b/genesyscloud/outbound_digitalruleset/examples/resources/genesyscloud_outbound_digitalruleset/resource.tf deleted file mode 100644 index e69de29bb..000000000 diff --git a/genesyscloud/outbound_digitalruleset/resource_genesyscloud_outbound_digitalruleset.go b/genesyscloud/outbound_digitalruleset/resource_genesyscloud_outbound_digitalruleset.go index 696ae202a..ad7dd6a27 100644 --- a/genesyscloud/outbound_digitalruleset/resource_genesyscloud_outbound_digitalruleset.go +++ b/genesyscloud/outbound_digitalruleset/resource_genesyscloud_outbound_digitalruleset.go @@ -81,6 +81,7 @@ func readOutboundDigitalruleset(ctx context.Context, d *schema.ResourceData, met resourcedata.SetNillableValue(d, "name", digitalRuleSet.Name) resourcedata.SetNillableReference(d, "contact_list_id", digitalRuleSet.ContactList) resourcedata.SetNillableValueWithInterfaceArrayWithFunc(d, "rules", digitalRuleSet.Rules, flattenDigitalRules) + resourcedata.SetNillableValue(d, "version", digitalRuleSet.Version) log.Printf("Read outbound digitalruleset %s %s", d.Id(), *digitalRuleSet.Name) return cc.CheckState(d) diff --git a/genesyscloud/outbound_digitalruleset/resource_genesyscloud_outbound_digitalruleset_schema.go b/genesyscloud/outbound_digitalruleset/resource_genesyscloud_outbound_digitalruleset_schema.go index 2d90227bf..93a5a90fc 100644 --- a/genesyscloud/outbound_digitalruleset/resource_genesyscloud_outbound_digitalruleset_schema.go +++ b/genesyscloud/outbound_digitalruleset/resource_genesyscloud_outbound_digitalruleset_schema.go @@ -96,9 +96,10 @@ var ( Type: schema.TypeString, }, `operator`: { - Description: `The operator to use when comparing values.`, - Required: true, - Type: schema.TypeString, + Description: `The operator to use when comparing values.`, + Required: true, + Type: schema.TypeString, + ValidateFunc: validation.StringInSlice([]string{"Before", "After"}, false), }, `value`: { Description: `The period value to compare against the contact's data.`, @@ -115,11 +116,13 @@ var ( Required: true, Type: schema.TypeList, Elem: &schema.Schema{Type: schema.TypeString}, + //ValidateFunc: validation.StringInSlice([]string{"Voice", "Sms", "Email"}, false), }, `operator`: { - Description: `The operator to use when comparing values.`, - Required: true, - Type: schema.TypeString, + Description: `The operator to use when comparing values.`, + Required: true, + Type: schema.TypeString, + ValidateFunc: validation.StringInSlice([]string{"Before", "After"}, false), }, `value`: { Description: `The period value to compare against the contact's data.`, @@ -141,6 +144,7 @@ var ( Optional: true, Type: schema.TypeList, Elem: &schema.Schema{Type: schema.TypeString}, + //ValidateFunc: validation.StringInSlice([]string{"OUTBOUND-MESSAGE-SENT", "OUTBOUND-RULE-SKIPPED"}, false), }, `sms_column_name`: { Description: `The name of the contact column to evaluate for SMS.`, @@ -152,6 +156,7 @@ var ( Optional: true, Type: schema.TypeList, Elem: &schema.Schema{Type: schema.TypeString}, + //ValidateFunc: validation.StringInSlice([]string{"OUTBOUND-MESSAGE-SENT", "OUTBOUND-RULE-SKIPPED"}, false), }, }, } @@ -163,12 +168,14 @@ var ( Optional: true, Type: schema.TypeList, Elem: &schema.Schema{Type: schema.TypeString}, + //ValidateFunc: validation.StringInSlice([]string{"OUTBOUND-MESSAGE-SENT", "OUTBOUND-RULE-SKIPPED"}, false), }, `sms_wrapup_codes`: { Description: `A list of wrapup code identifiers to match for SMS.`, Optional: true, Type: schema.TypeList, Elem: &schema.Schema{Type: schema.TypeString}, + //ValidateFunc: validation.StringInSlice([]string{"OUTBOUND-MESSAGE-SENT", "OUTBOUND-RULE-SKIPPED"}, false), }, }, } diff --git a/genesyscloud/outbound_digitalruleset/resource_genesyscloud_outbound_digitalruleset_test.go b/genesyscloud/outbound_digitalruleset/resource_genesyscloud_outbound_digitalruleset_test.go index adead828a..bc629180c 100644 --- a/genesyscloud/outbound_digitalruleset/resource_genesyscloud_outbound_digitalruleset_test.go +++ b/genesyscloud/outbound_digitalruleset/resource_genesyscloud_outbound_digitalruleset_test.go @@ -29,6 +29,8 @@ func TestAccResourceOutboundDigitalruleset(t *testing.T) { name1 = "Terraform Digital RuleSet1" resourceId = "digital-rule-set" ruleName = "RuleWork" + name2 = "Terraform Digital RuleSet2" + version1 = "1" ruleOrder = "0" ruleCategory = "PreContact" contactColumnName = "Work" @@ -45,6 +47,10 @@ func TestAccResourceOutboundDigitalruleset(t *testing.T) { previewModeAcceptedValues = []string{} columnNames = []string{strconv.Quote("Cell"), strconv.Quote("Work")} automaticTimeZoneMapping = util.FalseValue + + lastAttemptOverallOperator = "Before" + lastAttemptOverallValue = "P-1DT-1H-1M" + outboundMessageSent = "OUTBOUND-MESSAGE-SENT" ) contactListResourceGenerate := obContactList.GenerateOutboundContactList( @@ -87,12 +93,13 @@ func TestAccResourceOutboundDigitalruleset(t *testing.T) { resourceId, name1, "genesyscloud_outbound_contact_list."+contactListResourceId1+".id", + GenerateDigitalRuleSetVersion(version1), GenerateDigitalRules( ruleName, ruleOrder, ruleCategory, GenerateDigitalRuleSetConditions( - util.TrueValue, + GenerateInvertedConditionAttr(util.FalseValue), GenerateContactColumnConditionSettings( contactColumnName, columnOperator, @@ -109,9 +116,6 @@ func TestAccResourceOutboundDigitalruleset(t *testing.T) { GenerateDigitalRuleSetActions( GenerateDoNotSendActionSettings(), ), - // GenerateDigitalRuleSetActions( - // GenerateMarkContactUncontactableActionSettings(strconv.Quote("Email")), - // ), ), ), @@ -121,11 +125,87 @@ func TestAccResourceOutboundDigitalruleset(t *testing.T) { resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.name", ruleName), resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.order", ruleOrder), resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.category", ruleCategory), + resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.conditions.0.inverted", util.FalseValue), + resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.conditions.0.contact_column_condition_settings.0.column_name", contactColumnName), + resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.conditions.0.contact_column_condition_settings.0.operator", columnOperator), + resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.conditions.0.contact_column_condition_settings.0.value", columnValue), + resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.conditions.0.contact_column_condition_settings.0.value_type", columnValueType), + util.ValidateValueInJsonAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.actions.0.update_contact_column_action_settings.0.properties", updatePropertiesWork, updatePropertiesWork), + resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.actions.0.update_contact_column_action_settings.0.update_option", updateOption), + ), + }, + { + + Config: contactListResourceGenerate + + GenerateOutboundDigitalRuleSetResource( + resourceId, + name2, + "genesyscloud_outbound_contact_list."+contactListResourceId1+".id", + GenerateDigitalRuleSetVersion(version1), + GenerateDigitalRules( + ruleName, + ruleOrder, + ruleCategory, + GenerateDigitalRuleSetConditions( + GenerateInvertedConditionAttr(util.TrueValue), + GenerateContactColumnConditionSettings( + contactColumnName, + columnOperator, + columnValue, + columnValueType, + ), + ), + GenerateDigitalRuleSetConditions( + GenerateLastAttemptOverallConditionSettings( + []string{strconv.Quote("Email")}, + lastAttemptOverallOperator, + lastAttemptOverallValue, + ), + ), + GenerateDigitalRuleSetConditions( + GenerateLastResultByColumnConditionSettings( + contactColumnName, + []string{strconv.Quote(outboundMessageSent)}, + "", + []string{}, + ), + ), + GenerateDigitalRuleSetConditions( + GenerateLastResultOverallConditionSettings( + []string{strconv.Quote(outboundMessageSent)}, + []string{}, + ), + ), + GenerateDigitalRuleSetActions( + GenerateUpdateContactColumnActionSettings( + updateOption, + GeneratePropertiesForUpdateContactColumnSettings(updatePropertiesWork, updatePropertiesWork), + ), + ), + GenerateDigitalRuleSetActions( + GenerateDoNotSendActionSettings(), + ), + ), + ), + + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "name", name2), + resource.TestCheckResourceAttrPair("genesyscloud_outbound_digitalruleset."+resourceId, "contact_list_id", "genesyscloud_outbound_contact_list."+contactListResourceId1, "id"), + resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.name", ruleName), + resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.order", ruleOrder), + resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.category", ruleCategory), resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.conditions.0.inverted", util.TrueValue), resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.conditions.0.contact_column_condition_settings.0.column_name", contactColumnName), resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.conditions.0.contact_column_condition_settings.0.operator", columnOperator), resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.conditions.0.contact_column_condition_settings.0.value", columnValue), resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.conditions.0.contact_column_condition_settings.0.value_type", columnValueType), + resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.conditions.1.last_attempt_overall_condition_settings.0.media_types.0", "Email"), + resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.conditions.1.last_attempt_overall_condition_settings.0.operator", lastAttemptOverallOperator), + resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.conditions.1.last_attempt_overall_condition_settings.0.value", lastAttemptOverallValue), + resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.conditions.2.last_result_by_column_condition_settings.0.email_column_name", contactColumnName), + resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.conditions.2.last_result_by_column_condition_settings.0.email_wrapup_codes.0", outboundMessageSent), + resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.conditions.2.last_result_by_column_condition_settings.0.sms_column_name", ""), + resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.conditions.3.last_result_overall_condition_settings.0.email_wrapup_codes.0", outboundMessageSent), util.ValidateValueInJsonAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.actions.0.update_contact_column_action_settings.0.properties", updatePropertiesWork, updatePropertiesWork), resource.TestCheckResourceAttr("genesyscloud_outbound_digitalruleset."+resourceId, "rules.0.actions.0.update_contact_column_action_settings.0.update_option", updateOption), ), @@ -170,13 +250,13 @@ func GenerateMarkContactAddressUncontactableActionSettings() string { } func GenerateMarkContactUncontactableActionSettings( - mediaTypes string, + mediaTypes []string, ) string { return fmt.Sprintf(` mark_contact_uncontactable_action_settings { media_types = [%s] } - `, mediaTypes) + `, strings.Join(mediaTypes, ",")) } func GenerateAppendToDncActionSettings( @@ -271,45 +351,45 @@ func GenerateDataActionConditionSettings( } func GenerateLastResultOverallConditionSettings( - emailCodes string, - smsCodes string, + emailCodes []string, + smsCodes []string, ) string { return fmt.Sprintf(` last_result_overall_condition_settings { email_wrapup_codes = [%s] sms_wrapup_codes = [%s] } - `, emailCodes, smsCodes) + `, strings.Join(emailCodes, ","), strings.Join(smsCodes, ",")) } func GenerateLastResultByColumnConditionSettings( emailColumnName string, - emailCodes string, + emailCodes []string, smsColumnName string, - smsCodes string, + smsCodes []string, ) string { return fmt.Sprintf(` last_result_by_column_condition_settings { - email_column_name = %s + email_column_name = "%s" email_wrapup_codes = [%s] - sms_column_name = %s + sms_column_name = "%s" sms_wrapup_codes = [%s] } - `, emailColumnName, emailCodes, smsColumnName, smsCodes) + `, emailColumnName, strings.Join(emailCodes, ","), smsColumnName, strings.Join(smsCodes, ",")) } func GenerateLastAttemptOverallConditionSettings( - mediaTypes string, + mediaTypes []string, operator string, value string, ) string { return fmt.Sprintf(` last_attempt_overall_condition_settings { media_types = [%s] - operator = %s - value = %s + operator = "%s" + value = "%s" } - `, mediaTypes, operator, value) + `, strings.Join(mediaTypes, ","), operator, value) } func GenerateLastAttemptByColumnConditionSettings( @@ -320,10 +400,10 @@ func GenerateLastAttemptByColumnConditionSettings( ) string { return fmt.Sprintf(` last_attempt_by_column_condition_settings { - email_column_name = %s - sms_column_name = %s - operator = %s - value = %s + email_column_name = "%s" + sms_column_name = "%s" + operator = "%s" + value = "%s" } `, emailColumnName, smsColumnName, operator, value) } @@ -369,15 +449,20 @@ func GenerateContactColumnConditionSettings( } func GenerateDigitalRuleSetConditions( - inverted string, nestedBlocks ...string, ) string { return fmt.Sprintf(` conditions { - inverted = %s %s } - `, inverted, strings.Join(nestedBlocks, "\n")) + `, strings.Join(nestedBlocks, "\n")) +} + +func GenerateInvertedConditionAttr( + inverted string, +) string { + return fmt.Sprintf(` + inverted = %s`, inverted) } func GenerateDigitalRules( @@ -396,6 +481,13 @@ func GenerateDigitalRules( `, name, order, category, strings.Join(nestedBlocks, "\n")) } +func GenerateDigitalRuleSetVersion( + version string, +) string { + return fmt.Sprintf(` + version = %s`, version) +} + func GenerateOutboundDigitalRuleSetResource( resourceId string, name string, diff --git a/genesyscloud/outbound_digitalruleset/resource_genesyscloud_outbound_digitalruleset_utils.go b/genesyscloud/outbound_digitalruleset/resource_genesyscloud_outbound_digitalruleset_utils.go index 71e1127d3..aa0fe62d6 100644 --- a/genesyscloud/outbound_digitalruleset/resource_genesyscloud_outbound_digitalruleset_utils.go +++ b/genesyscloud/outbound_digitalruleset/resource_genesyscloud_outbound_digitalruleset_utils.go @@ -4,6 +4,7 @@ import ( "encoding/json" "log" "terraform-provider-genesyscloud/genesyscloud/util" + "terraform-provider-genesyscloud/genesyscloud/util/lists" "terraform-provider-genesyscloud/genesyscloud/util/resourcedata" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -21,6 +22,7 @@ func getOutboundDigitalrulesetFromResourceData(d *schema.ResourceData) platformc Name: platformclientv2.String(d.Get("name").(string)), ContactList: util.BuildSdkDomainEntityRef(d, "contact_list_id"), Rules: buildDigitalRules(d.Get("rules").([]interface{})), + Version: platformclientv2.Int(d.Get("version").(int)), } } @@ -153,8 +155,9 @@ func buildLastAttemptOverallConditionSettings(lastAttemptOverallConditionSetting if len(lastAttemptOverallConditionSettingsList) > 0 { lastAttemptOverallConditionSettingsMap := lastAttemptOverallConditionSettingsList[0].(map[string]interface{}) - if mediaTypes := lastAttemptOverallConditionSettingsMap["media_types"].([]string); len(mediaTypes) > 0 { - sdkLastAttemptOverallConditionSettings.MediaTypes = &mediaTypes + if mediaTypes := lastAttemptOverallConditionSettingsMap["media_types"].([]interface{}); len(mediaTypes) > 0 { + listMediaTypes := lists.InterfaceListToStrings(mediaTypes) + sdkLastAttemptOverallConditionSettings.MediaTypes = &listMediaTypes } if operator := lastAttemptOverallConditionSettingsMap["operator"].(string); operator != "" { @@ -190,12 +193,14 @@ func buildLastResultByColumnConditionSettings(lastResultByColumnConditionSetting sdkLastResultByColumnConditionSettings.SmsColumnName = &smsColumnName } - if emailWrapupCodes := lastResultByColumnConditionSettingsMap["email_wrapup_codes"].([]string); len(emailWrapupCodes) > 0 { - sdkLastResultByColumnConditionSettings.EmailWrapupCodes = &emailWrapupCodes + if emailWrapupCodes := lastResultByColumnConditionSettingsMap["email_wrapup_codes"].([]interface{}); len(emailWrapupCodes) > 0 { + listEmailCodes := lists.InterfaceListToStrings(emailWrapupCodes) + sdkLastResultByColumnConditionSettings.EmailWrapupCodes = &listEmailCodes } - if smsWrapupCodes := lastResultByColumnConditionSettingsMap["sms_wrapup_codes"].([]string); len(smsWrapupCodes) > 0 { - sdkLastResultByColumnConditionSettings.SmsWrapupCodes = &smsWrapupCodes + if smsWrapupCodes := lastResultByColumnConditionSettingsMap["sms_wrapup_codes"].([]interface{}); len(smsWrapupCodes) > 0 { + listSmsCodes := lists.InterfaceListToStrings(smsWrapupCodes) + sdkLastResultByColumnConditionSettings.SmsWrapupCodes = &listSmsCodes } return &sdkLastResultByColumnConditionSettings } @@ -215,12 +220,14 @@ func buildLastResultOverallConditionSettings(lastResultOverallConditionSettings if len(lastResultOverallConditionSettingsList) > 0 { lastResultOverallConditionSettingsMap := lastResultOverallConditionSettingsList[0].(map[string]interface{}) - if emailWrapupCodes := lastResultOverallConditionSettingsMap["email_wrapup_codes"].([]string); len(emailWrapupCodes) > 0 { - sdkLastResultOverallConditionSettings.EmailWrapupCodes = &emailWrapupCodes + if emailWrapupCodes := lastResultOverallConditionSettingsMap["email_wrapup_codes"].([]interface{}); len(emailWrapupCodes) > 0 { + listEmailCodes := lists.InterfaceListToStrings(emailWrapupCodes) + sdkLastResultOverallConditionSettings.EmailWrapupCodes = &listEmailCodes } - if smsWrapupCodes := lastResultOverallConditionSettingsMap["sms_wrapup_codes"].([]string); len(smsWrapupCodes) > 0 { - sdkLastResultOverallConditionSettings.SmsWrapupCodes = &smsWrapupCodes + if smsWrapupCodes := lastResultOverallConditionSettingsMap["sms_wrapup_codes"].([]interface{}); len(smsWrapupCodes) > 0 { + listSmsCodes := lists.InterfaceListToStrings(smsWrapupCodes) + sdkLastResultOverallConditionSettings.SmsWrapupCodes = &listSmsCodes } return &sdkLastResultOverallConditionSettings } @@ -238,16 +245,27 @@ func buildDigitalDataActionConditionPredicates(digitalDataActionConditionPredica continue } - resourcedata.BuildSDKStringValueIfNotNil(&sdkDigitalDataActionConditionPredicate.OutputField, digitalDataActionConditionPredicatesMap, "output_field") - resourcedata.BuildSDKStringValueIfNotNil(&sdkDigitalDataActionConditionPredicate.OutputOperator, digitalDataActionConditionPredicatesMap, "output_operator") - resourcedata.BuildSDKStringValueIfNotNil(&sdkDigitalDataActionConditionPredicate.ComparisonValue, digitalDataActionConditionPredicatesMap, "comparison_value") + if outputField := digitalDataActionConditionPredicatesMap["output_field"].(string); outputField != "" { + sdkDigitalDataActionConditionPredicate.OutputField = &outputField + } + + if outputOperator := digitalDataActionConditionPredicatesMap["output_operator"].(string); outputOperator != "" { + sdkDigitalDataActionConditionPredicate.OutputOperator = &outputOperator + } + + if comparisonValue := digitalDataActionConditionPredicatesMap["comparison_value"].(string); comparisonValue != "" { + sdkDigitalDataActionConditionPredicate.ComparisonValue = &comparisonValue + } + sdkDigitalDataActionConditionPredicate.Inverted = platformclientv2.Bool(digitalDataActionConditionPredicatesMap["inverted"].(bool)) sdkDigitalDataActionConditionPredicate.OutputFieldMissingResolution = platformclientv2.Bool(digitalDataActionConditionPredicatesMap["output_field_missing_resolution"].(bool)) digitalDataActionConditionPredicatesSlice = append(digitalDataActionConditionPredicatesSlice, sdkDigitalDataActionConditionPredicate) + + return &digitalDataActionConditionPredicatesSlice } - return &digitalDataActionConditionPredicatesSlice + return nil } // buildDataActionContactColumnFieldMappings maps an []interface{} into a Genesys Cloud *[]platformclientv2.Dataactioncontactcolumnfieldmapping @@ -260,13 +278,20 @@ func buildDataActionContactColumnFieldMappings(dataActionContactColumnFieldMappi continue } - resourcedata.BuildSDKStringValueIfNotNil(&sdkDataActionContactColumnFieldMapping.ContactColumnName, dataActionContactColumnFieldMappingsMap, "contact_column_name") - resourcedata.BuildSDKStringValueIfNotNil(&sdkDataActionContactColumnFieldMapping.DataActionField, dataActionContactColumnFieldMappingsMap, "data_action_field") + if contactColumnName := dataActionContactColumnFieldMappingsMap["contact_column_name"].(string); contactColumnName != "" { + sdkDataActionContactColumnFieldMapping.ContactColumnName = &contactColumnName + } + + if dataActionField := dataActionContactColumnFieldMappingsMap["data_action_field"].(string); dataActionField != "" { + sdkDataActionContactColumnFieldMapping.DataActionField = &dataActionField + } dataActionContactColumnFieldMappingsSlice = append(dataActionContactColumnFieldMappingsSlice, sdkDataActionContactColumnFieldMapping) + + return &dataActionContactColumnFieldMappingsSlice } - return &dataActionContactColumnFieldMappingsSlice + return nil } // buildDataActionConditionSettingss maps an []interface{} into a Genesys Cloud *[]platformclientv2.Dataactionconditionsettings @@ -292,8 +317,14 @@ func buildDataActionConditionSettings(dataActionConditionSettings *schema.Set) * dataNotFoundResolution := dataActionConditionSettingsMap["data_not_found_resolution"].(bool) sdkDataActionConditionSettings.DataNotFoundResolution = &dataNotFoundResolution - sdkDataActionConditionSettings.Predicates = buildDigitalDataActionConditionPredicates(dataActionConditionSettingsMap["predicates"].([]interface{})) - sdkDataActionConditionSettings.ContactColumnToDataActionFieldMappings = buildDataActionContactColumnFieldMappings(dataActionConditionSettingsMap["contact_column_to_data_action_field_mappings"].([]interface{})) + if dataActionCondition := buildDigitalDataActionConditionPredicates(dataActionConditionSettingsMap["predicates"].([]interface{})); dataActionCondition != nil { + sdkDataActionConditionSettings.Predicates = dataActionCondition + } + + if contactColumnField := buildDataActionContactColumnFieldMappings(dataActionConditionSettingsMap["contact_column_to_data_action_field_mappings"].([]interface{})); contactColumnField != nil { + sdkDataActionConditionSettings.ContactColumnToDataActionFieldMappings = contactColumnField + } + return &sdkDataActionConditionSettings } @@ -611,7 +642,9 @@ func flattenLastAttemptOverallConditionSettings(lastAttemptOverallConditionSetti lastAttemptOverallConditionSettingsSet := schema.NewSet(schema.HashResource(lastAttemptOverallConditionSettingsResource), []interface{}{}) lastAttemptOverallConditionSettingsMap := make(map[string]interface{}) - resourcedata.SetMapStringArrayValueIfNotNil(lastAttemptOverallConditionSettingsMap, "media_types", lastAttemptOverallConditionSettings.MediaTypes) + if mediaTypes := lastAttemptOverallConditionSettings.MediaTypes; mediaTypes != nil { + lastAttemptOverallConditionSettingsMap["media_types"] = lists.StringListToInterfaceList(*mediaTypes) + } resourcedata.SetMapValueIfNotNil(lastAttemptOverallConditionSettingsMap, "operator", lastAttemptOverallConditionSettings.Operator) resourcedata.SetMapValueIfNotNil(lastAttemptOverallConditionSettingsMap, "value", lastAttemptOverallConditionSettings.Value) @@ -629,10 +662,16 @@ func flattenLastResultByColumnConditionSettings(lastResultByColumnConditionSetti lastResultByColumnConditionSettingsMap := make(map[string]interface{}) resourcedata.SetMapValueIfNotNil(lastResultByColumnConditionSettingsMap, "email_column_name", lastResultByColumnConditionSettings.EmailColumnName) - resourcedata.SetMapStringArrayValueIfNotNil(lastResultByColumnConditionSettingsMap, "email_wrapup_codes", lastResultByColumnConditionSettings.EmailWrapupCodes) + + if emailWrapupCodes := lastResultByColumnConditionSettings.EmailWrapupCodes; emailWrapupCodes != nil { + lastResultByColumnConditionSettingsMap["email_wrapup_codes"] = lists.StringListToInterfaceList(*emailWrapupCodes) + } + resourcedata.SetMapValueIfNotNil(lastResultByColumnConditionSettingsMap, "sms_column_name", lastResultByColumnConditionSettings.SmsColumnName) - resourcedata.SetMapStringArrayValueIfNotNil(lastResultByColumnConditionSettingsMap, "sms_wrapup_codes", lastResultByColumnConditionSettings.SmsWrapupCodes) + if smsWrapupCodes := lastResultByColumnConditionSettings.SmsWrapupCodes; smsWrapupCodes != nil { + lastResultByColumnConditionSettingsMap["sms_wrapup_codes"] = lists.StringListToInterfaceList(*smsWrapupCodes) + } lastResultByColumnConditionSettingsSet.Add(lastResultByColumnConditionSettingsMap) return lastResultByColumnConditionSettingsSet } @@ -646,8 +685,13 @@ func flattenLastResultOverallConditionSettings(lastResultOverallConditionSetting lastResultOverallConditionSettingsSet := schema.NewSet(schema.HashResource(lastResultOverallConditionSettingsResource), []interface{}{}) lastResultOverallConditionSettingsMap := make(map[string]interface{}) - resourcedata.SetMapStringArrayValueIfNotNil(lastResultOverallConditionSettingsMap, "email_wrapup_codes", lastResultOverallConditionSettings.EmailWrapupCodes) - resourcedata.SetMapStringArrayValueIfNotNil(lastResultOverallConditionSettingsMap, "sms_wrapup_codes", lastResultOverallConditionSettings.SmsWrapupCodes) + if emailWrapupCodes := lastResultOverallConditionSettings.EmailWrapupCodes; emailWrapupCodes != nil { + lastResultOverallConditionSettingsMap["email_wrapup_codes"] = lists.StringListToInterfaceList(*emailWrapupCodes) + } + + if smsWrapupCodes := lastResultOverallConditionSettings.SmsWrapupCodes; smsWrapupCodes != nil { + lastResultOverallConditionSettingsMap["sms_wrapup_codes"] = lists.StringListToInterfaceList(*smsWrapupCodes) + } lastResultOverallConditionSettingsSet.Add(lastResultOverallConditionSettingsMap) return lastResultOverallConditionSettingsSet