using RecruitmentDAL.DTO.Application; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using System.Data.Common; using System.Threading; using System.Threading.Tasks; namespace RecruitmentDAL.CustomeCode.Application { public interface IApplicationDAL { #region Application Task GetApplication(int ApplicationId, LoginDTO LoginDTO, CancellationToken ct); Task GetSelectListApplication(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO, CancellationToken ct); // Candidate-scoped application history — see ApplicationQB.GET_APPLICATIONS_BY_CANDIDATE. // Added for the candidate self-service portal (Phase 3). Task GetApplicationsByCandidate(int CandidateId, LoginDTO LoginDTO, CancellationToken ct); // Transactional write overloads — called from BaseEntityAppService.ExecuteSaveAsync's // persistFunc so the save participates in the single pipeline transaction. Task SaveApplication(ApplicationDTO ApplicationDTO, LoginDTO LoginDTO, DbTransaction? transaction, CancellationToken ct); Task UpdateApplication(ApplicationDTO ApplicationDTO, LoginDTO LoginDTO, DbTransaction? transaction, CancellationToken ct); Task DeleteApplication(int ApplicationId, LoginDTO LoginDTO, CancellationToken ct); // Standalone follow-up call — NOT part of the stage-history's ExecuteSaveAsync // transaction. Fired sequentially, right after a stage-history row is committed, to // advance the parent Application's pipeline pointer. Worst case on failure here is a // stage-history row whose parent pointer hasn't caught up yet — recoverable, not // data corruption — so a plain follow-up call (no shared transaction) is acceptable. Task UpdateApplicationCurrentStage(int applicationId, int newStageId, LoginDTO LoginDTO, CancellationToken ct); #endregion #region ApplicationStageHistory Task GetApplicationStageHistory(int ApplicationStageHistoryId, LoginDTO LoginDTO, CancellationToken ct); Task GetSelectListApplicationStageHistory(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO, CancellationToken ct); Task SaveApplicationStageHistory(ApplicationStageHistoryDTO ApplicationStageHistoryDTO, LoginDTO LoginDTO, DbTransaction? transaction, CancellationToken ct); Task UpdateApplicationStageHistory(ApplicationStageHistoryDTO ApplicationStageHistoryDTO, LoginDTO LoginDTO, DbTransaction? transaction, CancellationToken ct); Task DeleteApplicationStageHistory(int ApplicationStageHistoryId, LoginDTO LoginDTO, CancellationToken ct); #endregion } }