71 lines
3.0 KiB
C#
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
|
|
});
|
|
}
|
|
}
|