68 lines
2.8 KiB
C#
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;
|
|
}
|
|
}
|
|
} |