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

71 lines
3.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 ReferralDecisionStrategy : IDecisionStrategy
{
public bool CanDecideActivity(Activity activity)
{
return activity.Type == ActivityType.Referral &&
(activity.Product == Product.ATMCard ||
activity.Product == Product.CheckCard ||
activity.Product == Product.NewChecking ||
activity.Product == Product.Mortgage ||
activity.Product == Product.DirectDeposit ||
activity.Product == Product.CreditCardBalanceTransfer ||
activity.Product == Product.LIC ||
activity.Product == Product.FirstMortgageReferral ||
activity.Product == Product.eStatement);
}
public async Task<ActivityStateChange> DecideActivity(Activity activity)
{
if (activity.Product == Product.LIC)
{
if (!string.IsNullOrWhiteSpace(activity.Detail.StationName))
{
if (activity.Detail.StationName.Equals("LIC Referral-Qualified", StringComparison.InvariantCultureIgnoreCase))
{
return await Task.FromResult(new ActivityStateChange()
{
AcceptedDate = activity.Accepted.Date.AddHours(12),
ActivityId = activity.Id,
Note = "LIC Referral In Station 'LIC Referral-Qualified'.",
State = ActivityState.Accepted
});
}
if (activity.Detail.StationName.Equals("LIC Referral- Not Qualified", StringComparison.InvariantCultureIgnoreCase))
{
return await Task.FromResult(new ActivityStateChange()
{
AcceptedDate = activity.Accepted.Date.AddHours(12),
ActivityId = activity.Id,
Note = "LIC Referral In Station 'LIC Referral- Not Qualified'.",
State = ActivityState.Rejected
});
}
}
return await Task.FromResult(new ActivityStateChange
{
AcceptedDate = activity.Accepted.Date.AddHours(12),
ActivityId = activity.Id,
Note = "LIC Referral Not In Final Station. Waiting for Manual Review or Station Update.",
State = ActivityState.ManualReview
});
}
var daysBeforeExpiration = activity.Product != Product.FirstMortgageReferral ? "60" : "120";
return await Task.FromResult(new ActivityStateChange
{
AcceptedDate = activity.Accepted.Date.AddHours(12),
ActivityId = activity.Id,
Note = $"Waiting for Matching Sale. Expires in {daysBeforeExpiration} days from creation.",
State = ActivityState.PendingReferral
});
}
}