Skip to content

Commit 2da8dc5

Browse files
authored
Не переносить выбранные удаленные варианты (#3312)
1 parent f132b58 commit 2da8dc5

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

src/JoinRpg.Services.Impl/Projects/CloneProjectHelper.cs

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -273,13 +273,7 @@ private async Task CopyCharacter(Character originalChar)
273273
continue; // Это поле было удалено, следовательно его значение мы не переносим.
274274
}
275275

276-
var value = originalFieldValue.Value;
277-
278-
if (originalFieldValue.Field.HasValueList)
279-
{
280-
// Нам нужно смеппить старые значения на новые
281-
value = string.Join(",", originalFieldValue.GetDropdownValues().Select(x => VariantMapping[x.Id].ProjectFieldVariantId.ToString()));
282-
}
276+
var value = MapFieldValue(originalFieldValue);
283277
setFieldsRequest.Add(newFieldId.ProjectFieldId, value);
284278
}
285279
List<CharacterGroupIdentification> parentCharacterGroupIds = [..
@@ -304,6 +298,27 @@ private async Task CopyCharacter(Character originalChar)
304298

305299
}
306300

301+
private string? MapFieldValue(FieldWithValue originalFieldValue)
302+
{
303+
if (!originalFieldValue.Field.HasValueList)
304+
{
305+
return originalFieldValue.Value;
306+
}
307+
308+
// Нам нужно смеппить старые значения на новые
309+
List<ProjectFieldVariantIdentification> values = [];
310+
foreach (var originalValue in originalFieldValue.GetDropdownValues())
311+
{
312+
var newFieldValue = VariantMapping.GetValueOrDefault(originalValue.Id);
313+
if (newFieldValue is not null) // Если не нашли, значит этот вариант удалили, следовательно мы его не переносим
314+
{
315+
values.Add(newFieldValue);
316+
}
317+
}
318+
319+
return string.Join(",", values.Select(x => x.ProjectFieldVariantId.ToString()));
320+
}
321+
307322
private async Task CopyPlot()
308323
{
309324
foreach (var originalFolder in originalEntity.PlotFolders.Where(c => c.IsActive))

0 commit comments

Comments
 (0)