Skip to content

Commit 551c491

Browse files
authored
Enhance deduplication logic for profile-only research activities in ResearchActivityService (#303)
1 parent 7113d3d commit 551c491

2 files changed

Lines changed: 50 additions & 1 deletion

File tree

aspnetcore/src/api.Tests/Services_Tests/Profiledata/Testdata/ResearchActivityServiceTestData.cs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -642,6 +642,51 @@ public static ResearchActivityServiceTestData Create()
642642
};
643643
data.FactFieldValues.Add(ffvDimProfileOnlyResearchActivity4);
644644

645+
/*
646+
* 5th DimProfileOnlyResearchActivity:
647+
* - Is identical to the 3rd DimProfileOnlyResearchActivity in all fields relevant for deduplication (same name and start year as the 3rd DimProfileOnlyResearchActivity).
648+
* - This should be deduplicated and not included in the results.
649+
*/
650+
FactFieldValue ffvDimProfileOnlyResearchActivity5 = userProfileService.GetEmptyFactFieldValue();
651+
ffvDimProfileOnlyResearchActivity5.DimProfileOnlyResearchActivityId = 1003;
652+
ffvDimProfileOnlyResearchActivity5.DimProfileOnlyResearchActivity = new DimProfileOnlyResearchActivity
653+
{
654+
Id = 1004,
655+
DescriptionFi = "DimProfileOnlyResearchActivity3 description",
656+
DescriptionSv = "",
657+
DescriptionEn = "",
658+
DimDateIdEnd = 4401,
659+
DimDateIdEndNavigation = new DimDate { Id = 4401, Year = 1955, Month = 9, Day = 19, SourceId = "Source1" },
660+
DimDateIdStart = 4402,
661+
DimDateIdStartNavigation = new DimDate { Id = 4402, Year = 1950, Month = 8, Day = 18, SourceId = "Source1" },
662+
DimOrganizationId = -1,
663+
DimOrganization = data.DimOrganizations[0],
664+
NameFi = "DimProfileOnlyResearchActivity3 name",
665+
NameEn = "",
666+
NameSv = "",
667+
SourceId = "Source1"
668+
};
669+
ffvDimProfileOnlyResearchActivity5.DimUserProfileId = data.UserProfile.Id;
670+
ffvDimProfileOnlyResearchActivity5.DimUserProfile = data.UserProfile;
671+
ffvDimProfileOnlyResearchActivity5.DimFieldDisplaySettingsId = dfdsResearchActivity.Id; // RESEARCH_ACTIVITY
672+
ffvDimProfileOnlyResearchActivity5.DimFieldDisplaySettings = dfdsResearchActivity;
673+
ffvDimProfileOnlyResearchActivity5.DimRegisteredDataSourceId = data.DimRegisteredDataSources[1].Id;
674+
ffvDimProfileOnlyResearchActivity5.DimRegisteredDataSource = data.DimRegisteredDataSources[1];
675+
ffvDimProfileOnlyResearchActivity5.Show = false;
676+
ffvDimProfileOnlyResearchActivity5.PrimaryValue = false;
677+
ffvDimProfileOnlyResearchActivity5.DimReferencedataActorRoleId = 4005;
678+
ffvDimProfileOnlyResearchActivity5.DimReferencedataActorRole = new DimReferencedatum {
679+
Id = 4005,
680+
CodeScheme = Constants.ReferenceDataCodeSchemes.ACTIVITIES_AND_ROLES,
681+
CodeValue = "DimProfileOnlyResearchActivity5 activity_type DimReferenceData CodeValue",
682+
NameFi = "DimProfileOnlyResearchActivity5 activity_type DimReferenceData",
683+
NameEn = "",
684+
NameSv = "",
685+
SourceId = "Source1",
686+
SourceDescription = ""
687+
};
688+
data.FactFieldValues.Add(ffvDimProfileOnlyResearchActivity5);
689+
645690
return data;
646691
}
647692

aspnetcore/src/api/Services/Profiledata/ResearchActivityService.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,11 @@ public async Task<List<ProfileEditorActivityAndReward>> GetProfileEditorActivies
385385
{
386386
// Duplicate found, mark profile only research activity as duplicate.
387387
profileOnlyResearchActivityDto.IsDuplicate = true;
388-
break;
388+
}
389+
else {
390+
// Add key to unique keys set for deduplication of next items.
391+
// This handles the case where there are multiple duplicates in profileOnlyResearchActivityDtos.
392+
uniqueKeys.Add(key);
389393
}
390394
}
391395
_logger.LogInformation($"GetProfileEditorResearchActivities. Deduplication took {stopwatch_deduplicateDtos.ElapsedMilliseconds}ms.");

0 commit comments

Comments
 (0)