Skip to content

Commit 03993ce

Browse files
committed
Update the ReadMappingsValue function to work on workflow retries.
1 parent 66e2ec4 commit 03993ce

File tree

2 files changed

+22
-22
lines changed

2 files changed

+22
-22
lines changed

src/Umbraco.Forms.Integrations.Crm.ActiveCampaign/ActiveCampaignContactsWorkflow.cs

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -60,24 +60,7 @@ public override async Task<WorkflowExecutionStatus> ExecuteAsync(WorkflowExecuti
6060
{
6161
var mappings = JsonSerializer.Deserialize<List<ContactMappingDto>>(ContactMappings);
6262

63-
string email = string.Empty;
64-
var mappedEmailGuid = Guid.Parse(mappings.First(p => p.ContactField == "email").FormField.Id);
65-
66-
if (context.Record.RecordFields.ContainsKey(mappedEmailGuid) == false)
67-
{
68-
// Get email when retrying workflow
69-
var matchedField = context.Record.RecordFields.FirstOrDefault(x => x.Value.FieldId == mappedEmailGuid);
70-
if (matchedField.Value != null)
71-
{
72-
email = matchedField.Value.ValuesAsString();
73-
}
74-
}
75-
else
76-
{
77-
// Get email when executing workflow for the first time
78-
email = context.Record.RecordFields[mappedEmailGuid]
79-
.ValuesAsString();
80-
}
63+
string email = ReadMappingValue(context.Record, mappings, "email");
8164

8265
if (string.IsNullOrEmpty(email))
8366
{
@@ -175,10 +158,27 @@ private ContactDto Build(Record record)
175158

176159
private string ReadMappingValue(Record record, List<ContactMappingDto> mappings, string name)
177160
{
161+
string value = string.Empty;
162+
178163
var mappingItem = mappings.FirstOrDefault(p => p.ContactField == name);
179164

180-
return mappingItem != null
181-
? record.RecordFields[Guid.Parse(mappingItem.FormField.Id)].ValuesAsString()
182-
: string.Empty;
165+
if (mappingItem != null)
166+
{
167+
var key = Guid.Parse(mappingItem.FormField.Id);
168+
if (!record.RecordFields.ContainsKey(key))
169+
{
170+
var matchedField = record.RecordFields.FirstOrDefault(x => x.Value.FieldId == key);
171+
if (matchedField.Value != null)
172+
{
173+
value = matchedField.Value.ValuesAsString();
174+
}
175+
}
176+
else
177+
{
178+
value = record.RecordFields[key].ValuesAsString();
179+
}
180+
}
181+
182+
return value;
183183
}
184184
}

src/Umbraco.Forms.Integrations.Crm.ActiveCampaign/Umbraco.Forms.Integrations.Crm.ActiveCampaign.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<PackageIconUrl></PackageIconUrl>
1414
<PackageProjectUrl>https://github.com/umbraco/Umbraco.Forms.Integrations/tree/main-v10/src/Umbraco.Forms.Integrations.Crm.ActiveCampaign</PackageProjectUrl>
1515
<RepositoryUrl>https://github.com/umbraco/Umbraco.Forms.Integrations</RepositoryUrl>
16-
<Version>2.0.0</Version>
16+
<Version>2.0.1</Version>
1717
<Authors>Umbraco HQ</Authors>
1818
<Company>Umbraco</Company>
1919
<PackageTags>Umbraco;Umbraco-Marketplace</PackageTags>

0 commit comments

Comments
 (0)