This commit is contained in:
Zeeshaun
2026-03-25 14:50:13 -05:00
parent 883009770f
commit b690921fd7
592 changed files with 46618 additions and 0 deletions
@@ -0,0 +1,54 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using LCU.Library.Internal.ApiResponse.Models;
using LCU.Library.Internal.DocumentIngestorModels.Enums;
using LCU.Library.Internal.FileOperationsModels.Models.NameSettings;
namespace LCU.Library.Internal.DocumentIngestorModels.Models
{
public class BatchIngestionRequest : ReturnResponse
{
[Required(ErrorMessage = "Ingestor Type is required")]
public IngestorTypes IngestorType { get; set; }
[Required(ErrorMessage = "Root Base Path is required")]
public string RootBasePath { get; set; }
public int DaysIngestionDate { get; set; }
public DateTime? IngestionDate { get; set; }
public DynamicIngestionDate DynamicIngestionDate { get; set; } = new();
public bool UseDynamicIngestionDate { get; set; } = false;
public string ParentDynamicDirectory { get; set; } = "";
public string SubDirectoryPath { get; set; } = "";
[Required(ErrorMessage = "Dynamic Index File Name is required")]
public string DynamicIndexFileName { get; set; }
public DynamicNameSetting DynamicFileSettings { get; set; }
public DynamicNameSetting ParentDynamicDirectorySettings { get; set; }
[NotMapped]
public DateTime FinalIngestionDate
{
get
{
if (UseDynamicIngestionDate)
{
return new DateTime(DynamicIngestionDate.Year ?? DateTime.Now.Year,
DynamicIngestionDate.Month ?? DateTime.Now.Month,
DynamicIngestionDate.Day ?? DateTime.Now.Day);
}
return (IngestionDate ?? DateTime.Now).AddDays(DaysIngestionDate);
}
}
[NotMapped]
public string FinalRootBasePath
{
get
{
var rootBasePath = RootBasePath.EndsWith("\\") ? RootBasePath : $"{RootBasePath}\\";
return $"{rootBasePath}{FinalIngestionDate:MMddyyyy}\\";
}
}
}
}
@@ -0,0 +1,36 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
namespace LCU.Library.Internal.DocumentIngestorModels.Models
{
public class BatchIngestionResult
{
public List<string> Messages { get; set; } = new List<string>();
public int FailureCount { get; set; } = 0;
[NotMapped]
public bool IsSuccessfull
{
get
{
return FailureCount == 0;
}
}
[NotMapped]
public bool IsFailure
{
get
{
return FailureCount > 0;
}
}
public void AddToFailureCount(string message)
{
Messages.Add(message);
FailureCount++;
}
}
}
@@ -0,0 +1,18 @@
using LCU.Library.Internal.DocumentIngestorModels.Entities;
using System.Collections.Generic;
namespace LCU.Library.Internal.DocumentIngestorModels.Models;
public class BatchUpdateMemberNotificationDataRequest
{
public BatchUpdateMemberNotificationDataRequest() { }
public BatchUpdateMemberNotificationDataRequest(List<MemberNotificationInfo> memberNotificationInfos,
GatherMemberNotificationInfoRequest gatherMemberNotificationInfoRequest)
{
MemberNotificationInfos = memberNotificationInfos;
GatherMemberNotificationInfoRequest = gatherMemberNotificationInfoRequest;
}
public List<MemberNotificationInfo> MemberNotificationInfos { get; set; }
public GatherMemberNotificationInfoRequest GatherMemberNotificationInfoRequest { get; set; }
}
@@ -0,0 +1,11 @@
using LCU.Library.Internal.DocumentIngestorModels.Entities;
using System.Collections.Generic;
namespace LCU.Library.Internal.DocumentIngestorModels.Models;
public class BatchUploadCompletionRequest
{
public List<UploadCompletionRequest> SuccessfulUploadCompletions { get; set; }
public List<UploadCompletionRequest> UnsuccessfulUploadCompletions { get; set; }
public IEnumerable<DocumentProcessingInfo> DocumentProcessingInfos { get; set; }
}
@@ -0,0 +1,38 @@
using LCU.Library.Internal.DocumentIngestorModels.Enums;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using LCU.Library.Internal.DocumentIngestorModels.Models.Pagination;
namespace LCU.Library.Internal.DocumentIngestorModels.Models;
public class BulkNotificationStatusRequest : IValidatableObject
{
public BulkNotificationStatusRequest()
{
}
public BulkNotificationStatusRequest(Filter filter,
NotificationStatusTypes notificationStatus,
string reasonMessage)
{
Filter = filter;
NotificationStatus = notificationStatus;
ReasonMessage = reasonMessage;
}
public Filter Filter { get; set; }
public NotificationStatusTypes NotificationStatus { get; set; }
public string ReasonMessage { get; set; } = string.Empty;
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Filter == null)
{
yield return new ValidationResult("Filter cannot be null.");
}
if (string.IsNullOrWhiteSpace(ReasonMessage))
{
yield return new ValidationResult("Must provide a ReasonMessage explaining the reason for the update.");
}
}
}
@@ -0,0 +1,9 @@
using LCU.Library.Internal.DocumentIngestorModels.Entities;
namespace LCU.Library.Internal.DocumentIngestorModels.Models;
public class CompletionProcessingData
{
public DocumentProcessingInfo DocumentProcessingInfo { get; set; }
public CompletionRequest CompletionRequest { get; set; }
}
@@ -0,0 +1,9 @@
namespace LCU.Library.Internal.DocumentIngestorModels.Models
{
public class CompletionRequest
{
public ProcessResult ProcessResult { get; set; }
public ProcessingRequest ProcessingRequest { get; set; }
public MemberNotificationInfoRequest MemberNotificationInfoRequest { get; set; }
}
}
@@ -0,0 +1,46 @@
using LCU.Library.Internal.DocumentIngestorModels.Enums;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace LCU.Library.Internal.DocumentIngestorModels.Models;
public class DocumentProcessingInfoStatusRequest : IValidatableObject
{
public DocumentProcessingInfoStatusRequest()
{
}
public DocumentProcessingInfoStatusRequest(int documentProcessingInfoId,
ProcessStatusTypes processStatus,
string reasonMessage,
string username)
{
DocumentProcessingInfoId = documentProcessingInfoId;
ProcessStatus = processStatus;
ReasonMessage = reasonMessage;
Username = username;
}
public int DocumentProcessingInfoId { get; set; }
public ProcessStatusTypes ProcessStatus { get; set; }
public string ReasonMessage { get; set; } = string.Empty;
public string Username { get; set; } = string.Empty;
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (DocumentProcessingInfoId == 0 || DocumentProcessingInfoId == null)
{
yield return new ValidationResult("DocumentProcessingInfoId cannot be 0 or null.");
}
if (string.IsNullOrWhiteSpace(ReasonMessage))
{
yield return new ValidationResult("Must provide a ReasonMessage explaining the reason for the update.");
}
if (string.IsNullOrWhiteSpace(Username))
{
yield return new ValidationResult("Must provide a Username.");
}
}
}
@@ -0,0 +1,10 @@
using System;
namespace LCU.Library.Internal.DocumentIngestorModels.Models;
public class DynamicIngestionDate
{
public int? Month { get; set; }
public int? Day { get; set; }
public int? Year { get; set; }
}
@@ -0,0 +1,34 @@
using LCU.Library.Internal.DocumentIngestorModels.Enums;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace LCU.Library.Internal.DocumentIngestorModels.Models;
public class EntityUnknownRequest : IValidatableObject
{
public EntityUnknownRequest()
{
}
public EntityUnknownRequest(string userName, List<int> documentProcessingInfoIds)
{
UserName = userName;
DocumentProcessingInfoIds = documentProcessingInfoIds;
}
public string UserName { get; set; }
public List<int> DocumentProcessingInfoIds { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (string.IsNullOrWhiteSpace(UserName))
{
yield return new ValidationResult("UserName cannot be null.");
}
if (!DocumentProcessingInfoIds.Any())
{
yield return new ValidationResult("DocumentProcessingInfoIds cannot be empty.");
}
}
}
@@ -0,0 +1,31 @@
#nullable enable
namespace LCU.Library.Internal.DocumentIngestorModels.Models;
public class ErrorCaptureResult<T> where T : class
{
private ErrorCaptureResult(bool success, string? message, T payload, bool? entityIsUnknown = null)
{
Success = success;
Message = message;
Payload = payload;
EntityIsUnknown = entityIsUnknown;
}
public bool Success { get; }
public string? Message { get; }
public T Payload { get; }
public bool? EntityIsUnknown { get; }
public static ErrorCaptureResult<T> CreateErrorPayload(string? message, T payload, bool? entityIsUnknown = null)
{
return new ErrorCaptureResult<T>(false, message, payload, entityIsUnknown);
}
public static ErrorCaptureResult<T> CreateSuccessPayload(T payload)
{
return new ErrorCaptureResult<T>(true, null, payload);
}
}
@@ -0,0 +1,6 @@
namespace LCU.Library.Internal.DocumentIngestorModels.Models;
public class GatherMemberNotificationInfoRequest
{
public CompletionRequest CompletionRequest { get; set; }
}
@@ -0,0 +1,18 @@
using CsvHelper.Configuration.Attributes;
namespace LCU.Library.Internal.DocumentIngestorModels.Models.IndexFileDocuments
{
public class FosDnaDocument
{
[Index(0)]
public string AccountNumber { get; set; }
[Index(1)]
public string EntityName { get; set; }
[Index(2)]
public string CreationDate { get; set; }
[Index(3)]
public string DocType { get; set; }
[Index(4)]
public string DocName { get; set; }
}
}
@@ -0,0 +1,24 @@
using CsvHelper.Configuration.Attributes;
namespace LCU.Library.Internal.DocumentIngestorModels.Models.IndexFileDocuments
{
public class FosLoanStatement
{
[Index(0)]
public string DocType { get; set; }
[Index(4)]
public string AccountNumber { get; set; }
[Index(5)]
public string EntityName { get; set; }
[Index(6)]
public string EmailAddress { get; set; }
[Index(7)]
public string CreationDate { get; set; }
[Index(8)]
public string StartingPage { get; set; }
[Index(9)]
public string NumberOfPages { get; set; }
[Index(10)]
public string DocName { get; set; }
}
}
@@ -0,0 +1,24 @@
using CsvHelper.Configuration.Attributes;
namespace LCU.Library.Internal.DocumentIngestorModels.Models.IndexFileDocuments
{
/// <summary>
/// NOTE: The index annotation denotes the index location of each record in the csv row being processed.
/// The Index record 3 is the tax year identical for each row in a file and not used in the ingestor
/// </summary>
public class FosTaxStatementDocument
{
[Index(0)]
public string FileName { get; set; }
[Index(1)]
public string PrimaryTIN { get; set; }
[Index(2)]
public string FullName { get; set; }
[Index(3)]
public int TaxYear { get; set; }
[Index(4)]
public string AccountNumber { get; set; }
[Index(5)]
public string PDF { get; set; }
}
}
@@ -0,0 +1,40 @@
using CsvHelper.Configuration.Attributes;
namespace LCU.Library.Internal.DocumentIngestorModels.Models.IndexFileDocuments
{
public class OsgDnaNoticeSplit
{
[Index(0)]
public string SequenceNumber { get; set; }
[Index(1)]
public string NoticeId { get; set; }
[Index(2)]
public string AccountNumber { get; set; }
[Index(3)]
public string MemberNumber { get; set; }
[Index(4)]
public string UserId { get; set; }
[Index(5)]
public string RecipientName { get; set; }
[Index(6)]
public string SSN { get; set; }
[Index(7)]
public string NoticeName { get; set; }
[Index(8)]
public string ApplicationNumber { get; set; }
[Index(9)]
public string CreationDate { get; set; }
[Index(10)]
public string PdfName { get; set; }
}
}
@@ -0,0 +1,28 @@
using CsvHelper.Configuration.Attributes;
namespace LCU.Library.Internal.DocumentIngestorModels.Models.IndexFileDocuments
{
/// <summary>
/// Note: Index record 0 is the SequenceNumber. Created by OSG during creation of documents / Index file - means nothing to our process
/// </summary>
public class OsgDnaNoticesDocument
{
[Index(1)]
public string DocType { get; set; }
[Index(2)]
public string AccountNumber { get; set; }
[Index(3)]
public string MemberNumberOrUserId { get; set; }
[Index(4)]
public string CreationDate { get; set; }
[Index(5)]
public string StartingPage { get; set; }
[Index(6)]
public string NumberOfPages { get; set; }
}
}
@@ -0,0 +1,28 @@
using CsvHelper.Configuration.Attributes;
namespace LCU.Library.Internal.DocumentIngestorModels.Models.IndexFileDocuments
{
/// <summary>
/// Note: Index record 0 is the SequenceNumber. Created by OSG during creation of documents / Index file - means nothing to our process
/// </summary>
public class OsgHistoricalDocument
{
[Index(1)]
public string DocType { get; set; }
[Index(2)]
public string EntityName { get; set; }
[Index(3)]
public string MemberNumberOrUserId { get; set; }
[Index(4)]
public string CreationDate { get; set; }
[Index(5)]
public string StartingPage { get; set; }
[Index(6)]
public string NumberOfPages { get; set; }
}
}
@@ -0,0 +1,40 @@
using CsvHelper.Configuration.Attributes;
namespace LCU.Library.Internal.DocumentIngestorModels.Models.IndexFileDocuments
{
public class OsgTaxStatement
{
[Index(0)]
public string SequenceNumber { get; set; }
[Index(1)]
public string NoticeId { get; set; }
[Index(2)]
public string AccountNumber { get; set; }
[Index(3)]
public string MemberNumber { get; set; }
[Index(4)]
public string UserId { get; set; }
[Index(5)]
public string RecipientName { get; set; }
[Index(6)]
public string SSN { get; set; }
[Index(7)]
public string NoticeName { get; set; }
[Index(8)]
public string ApplicationNumber { get; set; }
[Index(9)]
public string CreationDate { get; set; }
[Index(10)]
public string PdfName { get; set; }
}
}
@@ -0,0 +1,31 @@
using CsvHelper.Configuration.Attributes;
namespace LCU.Library.Internal.DocumentIngestorModels.Models.IndexFileDocuments
{
/// <summary>
/// Note: Index record 6 is the same as index record 5 (The DocType is repeated from the vendor index)
/// </summary>
public class OsgTemenosNoticesDocument
{
[Index(0)]
public string Sequence { get; set; }
[Index(2)]
public string AccountNumber { get; set; }
[Index(3)]
public string LoanNumber { get; set; }
[Index(5)]
public string EntityName { get; set; }
[Index(7)]
public string DocumentType { get; set; }
[Index(9)]
public string CreationDate { get; set; }
[Index(10)]
public string PDF { get; set; }
}
}
@@ -0,0 +1,28 @@
using CsvHelper.Configuration.Attributes;
namespace LCU.Library.Internal.DocumentIngestorModels.Models.IndexFileDocuments
{
public class OsgWeilandStatement
{
[Index(0)]
public string Date { get; set; }
[Index(1)]
public string Family { get; set; }
[Index(2)]
public string AccountNumber { get; set; }
[Index(3)]
public string AccountTitle { get; set; }
[Index(4)]
public string PdfDate { get; set; }
[Index(5)]
public string PdfName { get; set; }
[Index(6)]
public string DocCode { get; set; }
}
}
@@ -0,0 +1,28 @@
using CsvHelper.Configuration.Attributes;
namespace LCU.Library.Internal.DocumentIngestorModels.Models.IndexFileDocuments
{
public class XdiActionNoticesDocument
{
[Index(0)]
public string CreationDate { get; set; }
[Index(1)]
public string ApplicationNumber { get; set; }
[Index(2)]
public string LoanNumber { get; set; }
[Index(3)]
public string EntityName { get; set; }
[Index(4)]
public int PageCount { get; set; }
[Index(5)]
public string DocumentType { get; set; }
[Index(7)]
public string DocumentName { get; set; }
}
}
@@ -0,0 +1,31 @@
using CsvHelper.Configuration.Attributes;
namespace LCU.Library.Internal.DocumentIngestorModels.Models.IndexFileDocuments
{
/// <summary>
/// Note: Index record 6 is the same as index record 5 (The DocType is repeated from the vendor index)
/// </summary>
public class XdiDnaNoticesDocument
{
[Index(0)]
public string CreationDate { get; set; }
[Index(1)]
public string AccountNumber { get; set; }
[Index(2)]
public string LoanNumber { get; set; }
[Index(3)]
public string EntityName { get; set; }
[Index(4)]
public int PageCount { get; set; }
[Index(5)]
public string DocumentType { get; set; }
[Index(7)]
public string PDF { get; set; }
}
}
@@ -0,0 +1,35 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using LCU.Library.Internal.ApiResponse.Models;
namespace LCU.Library.Internal.DocumentIngestorModels.Models
{
public class IngestionFolderCleanUpRequest : ReturnResponse
{
public DateTime? IngestionEndedDate { get; set; }
public int DaysFromIngestionEndedDate { get; set; } = 0;
public DateTime? ArchiveDate { get; set; }
public int DaysFromArchiveDate { get; set; } = 0;
[Required] public string ArchiveRootPath { get; set; }
[NotMapped]
public DateTime FinalIngestionEndedDate => IngestionEndedDate ?? DateTime.Today.AddDays(1).AddTicks(-1);
[NotMapped]
public DateTime FinalArchiveDate => ArchiveDate ?? DateTime.Today.AddDays(1).AddTicks(-1);
[NotMapped]
public DateTime CleanUpIngestionFoldersUntilDate => FinalIngestionEndedDate.AddDays(DaysFromIngestionEndedDate).Date.AddDays(1).AddTicks(-1);
[NotMapped]
public string ArchiveFolderName => FinalArchiveDate.AddDays(DaysFromArchiveDate).ToString("yyyy-MM-dd");
[NotMapped]
public string ArchiveRootPathAndFolder => (ArchiveRootPath.EndsWith("\\") ? ArchiveRootPath : $"{ArchiveRootPath}\\") + ArchiveFolderName;
}
}
@@ -0,0 +1,24 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
namespace LCU.Library.Internal.DocumentIngestorModels.Models
{
public class IngestionFolderCleanUpResult
{
public List<string> Messages { get; set; } = new List<string>();
public int FailureCount { get; set; } = 0;
[NotMapped]
public bool IsSuccessful => FailureCount == 0;
[NotMapped]
public bool IsFailure => FailureCount > 0;
public void AddToFailureCount(string message)
{
Messages.Add(message);
FailureCount++;
}
}
}
@@ -0,0 +1,44 @@
using System.ComponentModel.DataAnnotations.Schema;
using LCU.Library.Internal.ApiResponse.Models;
using LCU.Library.Internal.DocumentIngestorModels.Enums;
namespace LCU.Library.Internal.DocumentIngestorModels.Models
{
public class IngestorRequest : ReturnResponse
{
private string rootPath;
private const string ArchiveFolder = "Archived";
public IngestorTypes IngestorType { get; set; }
public string RootPath
{
get
{
return rootPath;
}
set
{
rootPath = value.EndsWith("\\") ? value : $"{value}\\";
}
}
public string IndexFileName { get; set; }
[NotMapped]
public string ArchivePath
{
get
{
return $"{RootPath}{ArchiveFolder}\\";
}
}
[NotMapped]
public string FinalIndexFilePath
{
get
{
return RootPath + IndexFileName;
}
}
}
}
@@ -0,0 +1,23 @@
using System.Collections.Generic;
using LCU.Library.Internal.DocumentIngestorModels.Entities;
namespace LCU.Library.Internal.DocumentIngestorModels.Models
{
public class IngestorResult
{
public IngestorResult()
{
MessageStack = new List<string>();
}
public IngestorResult(bool fatalFailure, string message)
{
FatalFailure = fatalFailure;
MessageStack = new List<string>() { message };
}
public bool FatalFailure { get; set; }
public List<string> MessageStack { get; set; }
public IngestorRunInfo IngestorRunInfo { get; set; }
public List<ProcessingRequest> ProcessingRequests { get; set; }
}
}
@@ -0,0 +1,7 @@
using LCU.Library.Internal.ApiResponse.Models;
namespace LCU.Library.Internal.DocumentIngestorModels.Models;
public class MemberDocumentNotificationRequest : ReturnResponse
{
public bool RunCriticalFailureNotifications { get; set; } = false;
}
@@ -0,0 +1,34 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
namespace LCU.Library.Internal.DocumentIngestorModels.Models;
public class MemberDocumentNotificationResult
{
public List<string> Messages { get; set; } = new List<string>();
public int FailureCount { get; set; } = 0;
[NotMapped]
public bool IsSuccessful
{
get
{
return FailureCount == 0;
}
}
[NotMapped]
public bool IsFailure
{
get
{
return FailureCount > 0;
}
}
public void AddToFailureCount(string message)
{
Messages.Add(message);
FailureCount++;
}
}
@@ -0,0 +1,8 @@
using System.Collections.Generic;
namespace LCU.Library.Internal.DocumentIngestorModels.Models;
public class MemberNotificationCompletionRequest
{
public List<int> MemberNotificationInfoIds { get; set; }
}
@@ -0,0 +1,10 @@
using LCU.Library.Internal.DocumentIngestorModels.Enums;
namespace LCU.Library.Internal.DocumentIngestorModels.Models;
public class MemberNotificationInfoRequest
{
public int DocumentProcessingInfoId { get; set; }
public DocumentOwnerTypes DocumentOwnerType { get; set; }
public string DocumentEntityNumber { get; set; }
public EntityTypes EntityType { get; set; }
}
@@ -0,0 +1,54 @@
using System;
using System.ComponentModel.DataAnnotations;
namespace LCU.Library.Internal.DocumentIngestorModels.Models;
[Obsolete("06/02/2023 - Used to prepare historical documents for ingestion. No longer in use.")]
public class OsgPreprocessorRequest
{
private string workingBasePath;
private string outputBasePath;
private string incompleteOutputBasePath;
[Required(ErrorMessage = "Archive Start Date is required")]
public DateTime ArchiveStartDate { get; set; }
public bool SaveXmlOutput { get; set; } = false;
[Required(ErrorMessage = "Source Base Path is required")]
public string SourceBasePath { get; set; }
[Required(ErrorMessage = "Working Base Path is required")]
public string WorkingBasePath
{
get
{
return workingBasePath;
}
set
{
workingBasePath = value.EndsWith("\\") ? value : $"{value}\\";
}
}
[Required(ErrorMessage = "Output Base Path is required")]
public string OutputBasePath
{
get
{
return outputBasePath;
}
set
{
outputBasePath = value.EndsWith("\\") ? value : $"{value}\\";
}
}
[Required(ErrorMessage = "Incomplete Output Base Path is required")]
public string IncompleteOutputBasePath
{
get
{
return incompleteOutputBasePath;
}
set
{
incompleteOutputBasePath = value.EndsWith("\\") ? value : $"{value}\\";
}
}
}
@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
namespace LCU.Library.Internal.DocumentIngestorModels.Models;
[Obsolete("06/02/2023 - Used to prepare historical documents for ingestion. No longer in use.")]
public class OsgPreprocessorResult
{
public string OutputFile { get; set; }
public bool Success { get; set; }
public List<string> MessageStack { get; set; } = new List<string>();
public void AddFailureAndMessage(string message)
{
MessageStack.Add(message);
Success = false;
}
}
@@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
namespace LCU.Library.Internal.DocumentIngestorModels.Models;
[Obsolete("06/02/2023 - Used to prepare historical documents for ingestion. No longer in use.")]
public class OsgPreprocessorRunInfo
{
public OsgPreprocessorRunInfo(OsgPreprocessorRequest request)
{
OsgPreprocessorRequest = request;
OsgPreprocessorResults = new List<OsgPreprocessorResult>();
Messages = new List<string>();
}
public OsgPreprocessorRequest OsgPreprocessorRequest { get; set; }
public List<OsgPreprocessorResult> OsgPreprocessorResults { get; set; }
public string UnZippedFolder { get; set; }
public string DirectoryDate { get; set; }
public string IndexFile { get; set; }
public bool Incomplete { get; set; } = false;
public bool HasStatements { get; set; } = true;
public List<string> Messages { get; set; }
[NotMapped]
public string FinalWorkingDirectory
{
get
{
return $"{OsgPreprocessorRequest.WorkingBasePath}{UnZippedFolder}\\";
}
}
[NotMapped]
public string IndexFilePath
{
get
{
return FinalWorkingDirectory + IndexFile;
}
}
[NotMapped]
public string FinalOutputDirectory
{
get
{
return Incomplete ? OsgPreprocessorRequest.IncompleteOutputBasePath : $"{OsgPreprocessorRequest.OutputBasePath}{DirectoryDate}\\";
}
}
}
@@ -0,0 +1,57 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using LCU.Library.Internal.ApiResponse.Models;
using LCU.Library.Internal.DocumentIngestorModels.Enums;
using LCU.Library.Internal.FileOperationsModels.Models.NameSettings;
namespace LCU.Library.Internal.DocumentIngestorModels.Models
{
public class PdfPartitionerRequest : ReturnResponse
{
[Required(ErrorMessage = "Pdf Parser Types is required")]
public PdfParserTypes PdfParserType { get; set; }
[Required(ErrorMessage = "Root Base Path is required")]
public string RootBasePath { get; set; }
public int DaysIngestionDate { get; set; }
public DateTime? IngestionDate { get; set; }
public DynamicIngestionDate DynamicIngestionDate { get; set; } = new();
public bool UseDynamicIngestionDate { get; set; } = false;
public string ParentDynamicDirectory { get; set; } = "";
public string SubDirectoryPath { get; set; } = "";
[Required(ErrorMessage = "Dynamic Index File Name is required")]
public string DynamicIndexFileName { get; set; }
public string DynamicPdfName { get; set; }
public bool SkipParseIfCountsMatch { get; set; }
public DynamicNameSetting ParentDynamicDirectorySettings { get; set; }
public DynamicNameSetting DynamicFileSettings { get; set; }
public DynamicNameSetting DynamicPdfSettings { get; set; }
[NotMapped]
public DateTime FinalIngestionDate
{
get
{
if (UseDynamicIngestionDate)
{
return new DateTime(DynamicIngestionDate.Year ?? DateTime.Now.Year,
DynamicIngestionDate.Month ?? DateTime.Now.Month,
DynamicIngestionDate.Day ?? DateTime.Now.Day);
}
return (IngestionDate ?? DateTime.Now).AddDays(DaysIngestionDate);
}
}
[NotMapped]
public string FinalRootBasePath
{
get
{
var rootBasePath = RootBasePath.EndsWith("\\") ? RootBasePath : $"{RootBasePath}\\";
return $"{rootBasePath}{FinalIngestionDate.ToString("MMddyyyy")}\\";
}
}
}
}
@@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
namespace LCU.Library.Internal.DocumentIngestorModels.Models
{
public class PdfPartitionerResult
{
public PdfPartitionerResult(Guid pdfPartitionerRunInfoId, PdfPartitionerRequest pdfPartitionerRequest)
{
PdfPartitionerRunInfoId = pdfPartitionerRunInfoId;
PdfPartitionerRequest = pdfPartitionerRequest;
MessageStack = new List<string>();
FailedToQueueToParse = false;
}
public Guid PdfPartitionerRunInfoId { get; set; }
public PdfPartitionerRequest PdfPartitionerRequest { get; set; }
public List<string> MessageStack { get; set; }
public bool FailedToQueueToParse { get; set; }
public void AddFailureAndMessage(string message)
{
MessageStack.Add(message);
FailedToQueueToParse = true;
}
}
}
@@ -0,0 +1,78 @@
using LCU.Library.Internal.DocumentIngestorModels.Enums;
using System.Collections.Generic;
namespace LCU.Library.Internal.DocumentIngestorModels.Models
{
public class ProcessResult
{
public ProcessResult()
{
Success = true;
MessageStack = new List<string>();
}
public ProcessResult(bool success, string message)
{
Success = success;
MessageStack = new List<string>() { message };
}
public bool Success { get; set; }
public bool AttemptToArchive { get; set; }
public List<string> MessageStack { get; set; }
public ProcessStatusTypes ProcessStatusType { get; set; }
public bool? EntityIsUnknown { get; set; }
public static ProcessResult ProcessCriticalFailure(ProcessResult processResult, string message)
{
return ProcessCriticalFailure(processResult, new List<string> { message });
}
public static ProcessResult ProcessCriticalFailure(ProcessResult processResult, List<string> messages)
{
processResult.ProcessStatusType = ProcessStatusTypes.CriticalFailure;
return ProcessFailure(processResult, messages, false);
}
public static ProcessResult ProcessDataMappingFailure(ProcessResult processResult, string message)
{
processResult.ProcessStatusType = ProcessStatusTypes.DataMappingFailure;
return ProcessFailure(processResult, message, null);
}
public static ProcessResult ProcessNotificationDataFailure(ProcessResult processResult, string message)
{
processResult.ProcessStatusType = ProcessStatusTypes.NotificationDataFailure;
return ProcessFailure(processResult, message, false);
}
public static ProcessResult ProcessCompleted(ProcessResult processResult, string message)
{
processResult.ProcessStatusType = ProcessStatusTypes.Completed;
return ProcessSuccess(processResult, new List<string> { message }, false);;
}
private static ProcessResult ProcessFailure(ProcessResult processResult, string message, bool? entityIsUnknown)
{
return ProcessFailure(processResult, new List<string> { message }, entityIsUnknown);
}
private static ProcessResult ProcessFailure(ProcessResult processResult, List<string> messages, bool? entityIsUnknown)
{
processResult.Success = false;
processResult.MessageStack.AddRange(messages);
processResult.EntityIsUnknown = entityIsUnknown;
return processResult;
}
private static ProcessResult ProcessSuccess(ProcessResult processResult, List<string> messages, bool? entityUnknown)
{
processResult.Success = true;
processResult.MessageStack.AddRange(messages);
processResult.EntityIsUnknown = entityUnknown;
return processResult;
}
}
}
@@ -0,0 +1,35 @@
using LCU.Library.Internal.ApiResponse.Models;
using LCU.Library.Internal.DocumentIngestorModels.Enums;
using System.Collections.Generic;
using System.Linq;
namespace LCU.Library.Internal.DocumentIngestorModels.Requests
{
public class ProcessStatusTypeEmailRequest : ReturnResponse
{
private List<ProcessStatusTypes> NotAllowedStatuses => new() { Enums.ProcessStatusTypes.Completed, Enums.ProcessStatusTypes.Processing };
public ProcessStatusTypeEmailRequest()
{
}
public ProcessStatusTypeEmailRequest(List<string> emailAddresses, List<ProcessStatusTypes> processStatusTypes, string processStatusTypeEmailUrl)
{
this.EmailAddresses = emailAddresses;
this.ProcessStatusTypes = processStatusTypes;
this.ProcessStatusTypeEmailUrl = processStatusTypeEmailUrl;
}
public List<string> EmailAddresses { get; set; }
public List<ProcessStatusTypes> ProcessStatusTypes { get; set; }
public string ProcessStatusTypeEmailUrl { get; set; }
public bool HasInvalidStatuses(out List<ProcessStatusTypes> invalid)
{
invalid = ProcessStatusTypes
.Where(x => NotAllowedStatuses.Contains(x))
.ToList();
return invalid.Any();
}
}
}
@@ -0,0 +1,17 @@
using System;
using LCU.Library.Internal.DocumentIngestorModels.Entities;
namespace LCU.Library.Internal.DocumentIngestorModels.Models
{
public class ProcessingRequest
{
public int DocumentProcessingInfoId { get; set; }
public Guid IngestorRunInfoId { get; set; }
public IngestorRequest IngestorRequest { get; set; }
public string DocumentFileName { get; set; }
public string DocumentTypeDisplayName { get; set; }
public string DocumentValuePayload { get; set; }
public OwnerOverrideInfo OwnerOverrideInfo { get; set; }
public int RetryCount { get; set; } = 0;
}
}
@@ -0,0 +1,7 @@
namespace LCU.Library.Internal.DocumentIngestorModels.Models.QueueResult;
public class QueueCompletionResult
{
public bool Success { get; set; }
public CompletionRequest CompletionRequest { get; set; }
}
@@ -0,0 +1,7 @@
namespace LCU.Library.Internal.DocumentIngestorModels.Models.QueueResult;
public class QueueGatherMemberNotificationInfoResult
{
public bool Success { get; set; }
public UploadCompletionRequest OriginalRequest { get; set; }
}
@@ -0,0 +1,16 @@
using LCU.Library.Internal.ApiResponse.Models;
namespace LCU.Library.Internal.DocumentIngestorModels.Models;
public class UploadCompletionRequest
{
public UploadCompletionRequest() { }
public UploadCompletionRequest(CompletionRequest completionRequest, Response response)
{
CompletionRequest = completionRequest;
Response = response;
}
public CompletionRequest CompletionRequest { get; set; }
public Response Response { get; set; }
}
@@ -0,0 +1,55 @@
using System;
using System.ComponentModel;
using System.Xml.Serialization;
namespace LCU.Library.Internal.DocumentIngestorModels.Models.XmlParser;
[Serializable]
[XmlType(AnonymousType = true)]
[XmlRoot(ElementName = "DOCUMENT", Namespace = "", IsNullable = false)]
public class XmlOsgHistoricalDocument
{
[XmlAttribute("accountNumber")]
public string MemberNumberOrUserId { get; set; }
[XmlAttribute("documentDate")]
public string CreationDate { get; set; }
[XmlAttribute("documentType")]
public string DocumentType { get; set; }
[XmlElement("ArchiveOutput")]
public XmlOsgArchiveOutput ArchiveOutput { get; set; }
[XmlElement("OriginalAddress")]
public XmlOsgOriginalAddress OriginalAddress { get; set; }
public string XmlOutput { get; set; }
}
[Serializable]
[DesignerCategory("code")]
[XmlType(AnonymousType = true)]
[XmlRoot("ArchiveOutput", IsNullable = false)]
public class XmlOsgArchiveOutput
{
[XmlAttribute("startPage")]
public int StartingPage { get; set; }
[XmlAttribute("numberOfPages")]
public int NumberOfPages { get; set; }
[XmlAttribute("fileSeq")]
public int PdfIndex { get; set; }
}
[Serializable]
[DesignerCategory("code")]
[XmlType(AnonymousType = true)]
[XmlRoot("OriginalAddress", IsNullable = false)]
public class XmlOsgOriginalAddress
{
[XmlAttribute("addr1")]
public string EntityName { get; set; }
}