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