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

58 lines
2.2 KiB
C#

using LCU.Library.Internal.IncentiveApiModels.Entities;
using LCU.Library.Internal.IncentiveApiModels.Enums;
namespace LCU.API.Internal.Operations.IncentiveApi.Services.AutoDecision;
public class DebtProtectionDecisionStrategy : IDecisionStrategy
{
private const Product DecidableProduct = Product.DebtProtection;
public bool CanDecideActivity(Activity activity)
{
return activity.Product == DecidableProduct;
}
public async Task<ActivityStateChange> DecideActivity(Activity activity)
{
if (
activity.MatchingDpAccessoryActivityId != 0
&& activity.Detail.DebtProtectionAddDate != null
&& activity.Detail.DebtProtectionRemoveDate == null
)
{
return await Task.FromResult(new ActivityStateChange
{
AcceptedDate = activity.Detail.DebtProtectionAddDate?.AddHours(12),
ActivityId = activity.Id,
ActivityMatchId = activity.MatchingDpAccessoryActivityId,
Note = $"{DecidableProduct} Added From Activity Id: {activity.MatchingDpAccessoryActivityId}, Auto-Decision: {ActivityState.Accepted}",
State = ActivityState.Accepted
});
}
if (
activity.MatchingDpAccessoryActivityId != 0
&& activity.Detail.DebtProtectionAddDate != null
&& activity.Detail.DebtProtectionRemoveDate != null
)
{
return await Task.FromResult(new ActivityStateChange
{
AcceptedDate = activity.Detail.DebtProtectionRemoveDate?.AddHours(12),
ActivityId = activity.Id,
ActivityMatchId = activity.MatchingDpAccessoryActivityId,
Note = $"Debt Protection Removed From Activity Id: {activity.MatchingDpAccessoryActivityId}, Auto-Decision: {ActivityState.Rejected}",
State = ActivityState.Rejected
});
}
return await Task.FromResult(new ActivityStateChange
{
AcceptedDate = activity.Accepted.Date.AddHours(12),
ActivityId = activity.Id,
Note = $"Unable To Auto-Decision: {ActivityState.ManualReview}",
State = ActivityState.ManualReview
});
}
}