Files
2026-03-17 09:53:09 -05:00

29 lines
1.0 KiB
C#

using LCU.API.Internal.Operations.IncentiveApi.Exceptions;
using LCU.Library.Internal.IncentiveApiModels.Entities;
using LCU.API.Internal.Operations.IncentiveApiLib.Repositories;
namespace LCU.API.Internal.Operations.IncentiveApi.Services.DuplicateDetection;
public class DuplicateDetectionService : IDuplicateDetectionService
{
private readonly IEnumerable<IDuplicateDetectionStrategy> _strategies;
public DuplicateDetectionService(IEnumerable<IDuplicateDetectionStrategy> strategies, IActivityRepository activityRepository)
{
_strategies = strategies;
}
public async Task<IReadOnlyCollection<Activity>> TryFindDuplicates(Activity activity)
{
var strategy = _strategies.FirstOrDefault(x => x.CanDecideActivity(activity));
if (strategy != null)
{
return await strategy.FindDuplicates(activity);
}
throw new NoAvailableStrategy(
$"No Duplicate Detection Strategy available, {activity.Id} - {activity.Product}:{activity.Type}");
}
}