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