diff --git a/AsbCloudApp/Comparators/TelemetryUserDtoComparer.cs b/AsbCloudApp/Comparators/TelemetryUserDtoComparer.cs new file mode 100644 index 00000000..48b497a9 --- /dev/null +++ b/AsbCloudApp/Comparators/TelemetryUserDtoComparer.cs @@ -0,0 +1,20 @@ +using AsbCloudApp.Data; +using System.Collections.Generic; + +namespace AsbCloudApp.Comparators +{ + public class TelemetryUserDtoComparer : IEqualityComparer + { + public bool Equals(TelemetryUserDto prevUser, TelemetryUserDto nextUser) + { + if (prevUser is null || nextUser is null) + return false; + else if (prevUser.Id == nextUser.Id) + return true; + else + return false; + } + + public int GetHashCode(TelemetryUserDto user) => user.Id.GetHashCode(); + } +} diff --git a/AsbCloudInfrastructure/Services/TelemetryUserService.cs b/AsbCloudInfrastructure/Services/TelemetryUserService.cs index 21e7e924..17e46196 100644 --- a/AsbCloudInfrastructure/Services/TelemetryUserService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryUserService.cs @@ -1,5 +1,6 @@ using AsbCloudApp.Data; using AsbCloudApp.Services; +using AsbCloudApp.Comparators; using AsbCloudDb.Model; using AsbCloudInfrastructure.Services.Cache; using System.Collections.Generic; @@ -25,6 +26,8 @@ namespace AsbCloudInfrastructure.Services if (!dtos.Any()) return; + dtos = dtos.Distinct(new TelemetryUserDtoComparer()); + var telemetryId = telemetryService.GetOrCreateTemetryIdByUid(uid); var ids = dtos.Select(e => e.Id).ToList();