using System; namespace RecruitmentDAL.DTO.BgVerification { // TBGVERIFICATION — one row per (Application, CheckType). An Application can have several // concurrent rows (e.g. Education + Employment + Criminal + Reference all in flight at // once), which is why this is its own child table rather than a single field/sub-status on // ApplicationDTO — see the Phase 6 migration header for the full rationale, incl. why the // reference-check *human questionnaire* rides the existing Phase 3 FLS bridge // (RecruitmentFlsActionType.ReferenceCheck = 2) rather than a new/duplicate action type, and // why the vendor-API side (Education/Employment/Criminal) is a GOP Target Operation stub // (RecruitmentBLL.Integration.IBgVerificationVendorService) rather than bespoke vendor code. public class BgVerificationDTO { #region PrivateMembers private int bgverificationid; private int applicationid = -1; // FK TAPPLICATION (parent) private byte checktype = BgVerificationCheckType.Education; private byte checkstatus = BgVerificationCheckStatus.Pending; private string? vendorreference; // Third-party vendor's own case/reference id; null until a real vendor integration sets it private int reportattachmentid = -1; // FK-by-convention -> TATTACHMENT.ATTACHMENTID (not enforced, same polymorphic pattern as OBJECTRECRUITMENTCANDIDATEDOC) private DateTime? initiatedon; private DateTime? completedon; #region Standard private byte status = 1; private short version; private int tenantid; #endregion #region Base private int createdbyid; private DateTime createdon; private string? createdbyname; private int modifiedbyid; private DateTime modifiedon; private string? modifiedbyname; #endregion #endregion #region PublicMembers public int BgVerificationId { get { return bgverificationid; } set { bgverificationid = value; } } public int ApplicationId { get { return applicationid; } set { applicationid = value; } } public byte CheckType { get { return checktype; } set { checktype = value; } } public byte CheckStatus { get { return checkstatus; } set { checkstatus = value; } } public string? VendorReference { get { return vendorreference; } set { vendorreference = value; } } public int ReportAttachmentId { get { return reportattachmentid; } set { reportattachmentid = value; } } public DateTime? InitiatedOn { get { return initiatedon; } set { initiatedon = value; } } public DateTime? CompletedOn { get { return completedon; } set { completedon = value; } } #region Standard public byte Status { get { return status; } set { status = value; } } public short Version { get { return version; } set { version = value; } } public int TenantId { get { return tenantid; } set { tenantid = value; } } #endregion #region Base public int CreatedById { get { return createdbyid; } set { createdbyid = value; } } public DateTime CreatedOn { get { return createdon; } set { createdon = value; } } public string? CreatedByName { get { return createdbyname; } set { createdbyname = value; } } public int ModifiedById { get { return modifiedbyid; } set { modifiedbyid = value; } } public DateTime ModifiedOn { get { return modifiedon; } set { modifiedon = value; } } public string? ModifiedByName { get { return modifiedbyname; } set { modifiedbyname = value; } } #endregion #endregion } // CHECKTYPE — a byte "enum" per this module's established convention (documented via header // comments/static classes rather than a real C# enum — e.g. RecruitmentFlsActionType, // ApplicationDTO.ApplicationSource). public static class BgVerificationCheckType { public const byte Education = 1; public const byte Employment = 2; public const byte Criminal = 3; public const byte Reference = 4; } // CHECKSTATUS — independent of the entity's own soft-delete STATUS column. public static class BgVerificationCheckStatus { public const byte Pending = 1; public const byte InProgress = 2; public const byte Passed = 3; public const byte Failed = 4; public const byte Delayed = 5; } }