Files
2026-04-20 14:47:24 -05:00

68 lines
2.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using LCU.API.Collections.RepoApi.Domain.Extensions;
using LCU.API.Collections.RepoApi.Domain.Processing;
using LCU.API.Collections.RepoApi.Extensions;
using LCU.Shared.Collections.RepoApiLib.Models;
namespace LCU.API.Collections.RepoApi.Domain.AlertChecker
{
public class RepoNotMovedChecker : IAlertChecker
{
private readonly int _dayCount;
private const string RepoStatus = "REPO";
private const int DaysBeforeSendEmail = 14;
private const string EmailDestination = "[email protected]";
public RepoNotMovedChecker(int dayCount = 30)
{
_dayCount = dayCount;
}
public List<EventAlert> CheckForAlert(RepoAccountProcessingSlip slip)
{
var daysInStatus = slip.UpdatedRepoAccount.GetDaysInStatus(RepoStatus);
if (slip.UpdatedRepoAccount.Status.ToUpper() != RepoStatus ||
slip.UpdatedRepoAccount.Collaterals == null || !slip.UpdatedRepoAccount.Collaterals.Any()
|| daysInStatus < _dayCount)
{
return null;
}
foreach (var collateral in slip.UpdatedRepoAccount.Collaterals)
{
if (collateral.AuctionAssignmentToCollaterals != null &&
collateral.AuctionAssignmentToCollaterals.Any())
{
var assignment = collateral.AuctionAssignmentToCollaterals
.Where(x => x.AuctionAssignment != null && x.AuctionAssignment.DateSubmitted == null)
.ToList();
if (assignment.Any() && daysInStatus >= _dayCount)
{
return new List<EventAlert>
{
new EventAlert()
{
RepoId = slip.UpdatedRepoAccount.RepoId,
AccountNo = slip.UpdatedRepoAccount.AccountNo,
Message = "Repo Not Moved",
CreatedBy = "Batch",
DateAdded = DateTime.Now,
EmailRecipient = daysInStatus == DaysBeforeSendEmail
? EmailDestination
: null,
EmailBody = daysInStatus == DaysBeforeSendEmail
? string.Format("{0} Account status REPO, Not Moved for extended time.", slip.UpdatedRepoAccount.AccountNo)
: null
}
};
}
}
}
return null;
}
}
}