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

51 lines
1.8 KiB
C#

using LCU.Library.Internal.IncentiveApiModels.Entities;
using LCU.Library.Internal.IncentiveApiModels.Enums;
namespace LCU.API.Internal.Operations.IncentiveApi.Services.AutoDecision;
public class MbpDecisionStrategy : IDecisionStrategy
{
public bool CanDecideActivity(Activity activity)
{
return activity.Product == Product.MechanicalBreakdownProtection;
}
public async Task<ActivityStateChange> DecideActivity(Activity activity)
{
if (
string.Equals(activity.Detail.AccountStatus, "Sold", StringComparison.CurrentCultureIgnoreCase)
|| string.Equals(activity.Detail.AccountStatus, "Flagged", StringComparison.CurrentCultureIgnoreCase)
)
{
return await Task.FromResult(new ActivityStateChange
{
AcceptedDate = activity.Accepted.Date.AddHours(12),
ActivityId = activity.Id,
Note = "Auto-Decision: MBP Accepted",
State = ActivityState.Accepted
});
}
if (
string.Equals(activity.Detail.AccountStatus, "Cancelled", StringComparison.CurrentCultureIgnoreCase)
|| string.Equals(activity.Detail.AccountStatus, "Cancelled/Re-Quoted", StringComparison.CurrentCultureIgnoreCase)
)
{
return await Task.FromResult(new ActivityStateChange
{
ActivityId = activity.Id,
Note = $"Auto-Decision: MBP {activity.Detail.AccountStatus}",
State = ActivityState.Rejected
});
}
return await Task.FromResult(new ActivityStateChange
{
AcceptedDate = activity.Accepted.Date.AddHours(12),
ActivityId = activity.Id,
Note = "Auto-Decision: MBP Accepted",
State = ActivityState.Accepted
});
}
}