29 lines
1.0 KiB
C#
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}");
|
|
}
|
|
}
|