using RecruitmentDAL.DTO.Application; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace RecruitmentBLL.Application { public interface IApplicationBLL { #region Application Task GetApplication(int ApplicationId, LoginDTO LoginDTO, CancellationToken ct); Task SaveApplication(ApplicationDTO ApplicationDTO, LoginDTO LoginDTO, CancellationToken ct); Task GetSelectListApplication(CriteriaDTO criteriaDTO, LoginDTO LoginDTO, CancellationToken ct); Task DeleteApplication(int ApplicationId, LoginDTO LoginDTO, CancellationToken ct); // Candidate-scoped application history — see ApplicationDAL.GetApplicationsByCandidate. // Added for the candidate self-service portal (Phase 3); CandidateId always comes from a // verified CandidatePortal JWT claim server-side, never client input. Task GetApplicationsByCandidate(int CandidateId, LoginDTO LoginDTO, CancellationToken ct); #endregion #region ApplicationStageHistory Task GetApplicationStageHistory(int ApplicationStageHistoryId, LoginDTO LoginDTO, CancellationToken ct); // Saving a new stage-history row is the "advance the pipeline" operation: on success this // also syncs the parent Application's CURRENTSTAGEID to the new SelectionProcessStageId. Task SaveApplicationStageHistory(ApplicationStageHistoryDTO ApplicationStageHistoryDTO, LoginDTO LoginDTO, CancellationToken ct); Task GetSelectListApplicationStageHistory(CriteriaDTO criteriaDTO, LoginDTO LoginDTO, CancellationToken ct); Task DeleteApplicationStageHistory(int ApplicationStageHistoryId, LoginDTO LoginDTO, CancellationToken ct); #endregion #region Quiz Screening (cross-module read against TMS's shared Quiz engine) // Resolves the current title/definition of the Quiz a Screening/Assessment stage // optionally requires (MSELECTIONPROCESSSTAGE.QuizId), by calling TMS's IQuizBLL // directly (BLL-to-BLL, same HRFinanceHost — mirrors EnablementBLL.ShowContentLinkBLL's // reference pattern against the same interface). Returns a "no quiz required" shape // when the stage has no QuizId set. // // Deliberately does NOT create/read a TQUIZATTEMPT row: TQUIZATTEMPT.EMPLOYEEID is a // NOT NULL column with a real FK to MEMPLOYEE (FK_TQUIZATTEMPT_EMPLOYEEID), and a // Recruitment Candidate has only an MCANDIDATE row, never an MEMPLOYEE row, before an // Offer is accepted. See ApplicationBLL.SaveApplicationStageHistory and // Docs/Quiz-Assessment-Feature-Guide.md for the full explanation of this limitation. Task GetRequiredQuizForStage(int SelectionProcessStageId, LoginDTO LoginDTO, CancellationToken ct); #endregion #region ECP Comment Thread Integration // Thin passthroughs to EcpIntegrationService — see RecruitmentBLL.Integration. // IEcpIntegrationService's class doc comment for the cross-host HTTP contract. Task PostApplicationComment(int ApplicationId, string CommentText, List MentionedUserIds, LoginDTO LoginDTO, CancellationToken ct); Task GetApplicationComments(int ApplicationId, LoginDTO LoginDTO, CancellationToken ct); #endregion } }