using GB5Shared.DTO.Framework.Login; using RecruitmentDAL.DTO.FlsBridge; using System.Threading; using System.Threading.Tasks; namespace RecruitmentBLL.FlsBridge { // The actual FLS bridge logic — mirrors TMSBLL.AssessmentFlsBridge.IAssessmentFlsCoordinatorBLL's // shape exactly (Prepare/Get/Submit), generalized to Recruitment's 5 candidate/referee-facing // action types instead of TMS's single assessment-attempt case. public interface IRecruitmentFlsBridgeBLL { // Authenticated, internal-caller — mints an FLS respondent link + a TRECRUITMENTFLSACTION // row for one of the 5 action types. Called right after the triggering event (e.g. an // offer save, a reference-check dispatch, a shortlist decision, an interview being // scheduled). Task PrepareActionAsync(PrepareRecruitmentFlsActionDTO dto, LoginDTO loginDTO, CancellationToken ct); // Public, token-scoped — validates via FLS's own token lookup (mirrors // AssessmentFlsCoordinatorBLL.GetFlsAttemptAsync's identical pattern), then returns // enough context for the FE to render the right UI for the resolved ActionType. Task GetActionAsync(string token, CancellationToken ct); // Public, token-scoped — validates token not expired/already used, records // ResponsePayload + RespondedOn, and per ActionType performs the real side effect // (OfferResponse -> MJOBOFFER; ReferenceCheck/ShortlistAck -> TAPPLICATIONSTAGEHISTORY; // InterviewSlotConfirm/DetailedApplication -> captured on this row only). Task SubmitActionAsync(string token, string responsePayloadJson, CancellationToken ct); } }