using GB5Shared.DTO.Framework.Login; using RecruitmentDAL.DTO.Career; using System.Threading; using System.Threading.Tasks; namespace RecruitmentBLL.Career { public interface ICareerBLL { // Public career-site job list — Published+Active requisitions only, for the tenant. Task GetPublishedJobs(int FirstNumber, int MaxResult, LoginDTO LoginDTO, CancellationToken ct); // Single published job's public detail. Throws when the id is not a genuine // Published+Active requisition for the tenant (unknown vs. not-published are // deliberately indistinguishable — see CareerQB.GET_PUBLISHED_JOB_DETAIL). Task GetPublishedJobDetail(int JobRequisitionId, LoginDTO LoginDTO, CancellationToken ct); // Public apply flow — validates input (including required GDPR consent), reuses an // existing Candidate by email or creates a new one, resolves the target requisition's // pipeline first stage, and creates the Application. Routes both the Candidate and // Application writes through the existing ICandidateBLL/IApplicationBLL save pipelines // (ExecuteSaveAsync, event-publish, cache invalidation) rather than hand-rolling a // second save path. Task SubmitApplication(CareerApplicationSubmissionDTO Submission, LoginDTO LoginDTO, CancellationToken ct); } }