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 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 }); } }