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 _strategies; public ExternalActivityService(IEnumerable strategies) { _strategies = strategies; } public async Task 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; } }