58 lines
2.2 KiB
C#
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
|
|
});
|
|
}
|
|
}
|