Files
2026-03-17 09:53:09 -05:00

57 lines
2.0 KiB
C#

using LCU.Library.Internal.IncentiveApiModels.Entities;
using LCU.Library.Internal.IncentiveApiModels.Enums;
namespace LCU.API.Internal.Operations.IncentiveApi.Services.AutoDecision;
public class VehicleDecisionStrategy : IDecisionStrategy
{
public bool CanDecideActivity(Activity activity)
{
return activity.Product.Equals(Product.Vehicle) && activity.Type == ActivityType.Sale;
}
public async Task<ActivityStateChange> DecideActivity(Activity activity)
{
if (activity.Detail.AccountStatus == null)
{
return await Task.FromResult(new ActivityStateChange()
{
AcceptedDate = activity.Accepted.Date.AddHours(12),
ActivityId = activity.Id,
Note = "Could Not Determine Account Status.",
State = ActivityState.Rejected
});
}
if (activity.Detail.AccountStatus.Equals("ACT", StringComparison.InvariantCultureIgnoreCase))
{
return await Task.FromResult(new ActivityStateChange
{
AcceptedDate = activity.Accepted.Date.AddHours(12),
ActivityId = activity.Id,
Note = "Vehicle Loan is Active.",
State = ActivityState.Accepted
});
}
if (activity.Detail.AccountStatus.Equals("CLS", StringComparison.CurrentCultureIgnoreCase))
{
return await Task.FromResult(new ActivityStateChange
{
AcceptedDate = activity.Accepted.Date.AddHours(12),
ActivityId = activity.Id,
Note = "Vehicle Loan is closed.",
State = ActivityState.Rejected
});
}
return await Task.FromResult(new ActivityStateChange
{
AcceptedDate = activity.Accepted.Date.AddHours(12),
ActivityId = activity.Id,
Note = "Vehicle Loan is not Active or Closed. Waiting for Manual Review or Status Update.",
State = ActivityState.ManualReview
});
}
}