Files
monorepo/LCU.API.Operations.IncentiveAPI/LCU.API.Internal.Operations.IncentiveApi/Services/ExternalActivity/ExternalActivityService.cs
T
2026-03-17 09:53:09 -05:00

29 lines
1.0 KiB
C#

using LCU.Library.Internal.IncentiveApiModels.Entities;
using LCU.API.Internal.Operations.IncentiveApi.Models.ExternalActivities;
namespace LCU.API.Internal.Operations.IncentiveApi.Services.ExternalActivity;
public class ExternalActivityService : IExternalActivityService
{
private readonly IEnumerable<IExternalActivityStrategy> _strategies;
public ExternalActivityService(IEnumerable<IExternalActivityStrategy> strategies)
{
_strategies = strategies;
}
public async Task<Activity> TryMapExternalActivity(IExternalActivity externalActivity)
{
var strategy = _strategies.FirstOrDefault(x => x.CanMapActivity(externalActivity));
if (strategy != null)
{
return await strategy.MapToActivityManagerActivity(externalActivity);
}
Log.Error($"Failed to find strategy for External Activity for product {externalActivity.GetProductType()}. Falling back to basic method. Some data may be missing.");
var activity = externalActivity.MapToActivity();
return activity;
}
}