using FLSDAL.DTO.Survey; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; namespace FLSDAL.CustomCode.Survey; public interface ISurveyInstrumentDAL { Task> GetSelectListSurveyInstrumentType( int firstNumber, int maxResult, CriteriaDTO criteriaDTO, LoginDTO login); /// Returns the raw STATUS for one instrument type, or null if it doesn't exist. /// 0=Draft, 1=Active, 2=Archived/Retired (same convention as MSURVEYINSTRUMENTCONFIG.Status). Task GetInstrumentTypeStatusAsync(int instrumentTypeId, LoginDTO login, CancellationToken ct); Task> GetSelectListSurveyQuestionType( int firstNumber, int maxResult, CriteriaDTO criteriaDTO, LoginDTO login); // Single round trip, 4 result sets — Config, Sections, Questions (lang-resolved), Options (lang-resolved) Task<(SurveyInstrumentConfigRow? Config, List Sections, List Questions, List Options)> GetInstrumentAsync(int instrumentConfigId, string langCode, LoginDTO login, CancellationToken ct); Task GetConfigIdByRegistrationAsync(int flsRegistrationId, LoginDTO login, CancellationToken ct); Task LockInstrumentAsync(int instrumentConfigId, LoginDTO login, CancellationToken ct); Task InsertInstrumentConfigAsync(int instrumentConfigId, SaveSurveyInstrumentRequest req, LoginDTO login, CancellationToken ct); Task UpdateInstrumentConfigAsync(int instrumentConfigId, SaveSurveyInstrumentRequest req, LoginDTO login, CancellationToken ct); Task InsertSectionAsync(int instrumentSectionId, int instrumentConfigId, SaveSurveySectionRequest section, LoginDTO login, CancellationToken ct); Task UpdateSectionAsync(int instrumentSectionId, SaveSurveySectionRequest section, LoginDTO login, CancellationToken ct); Task DeactivateSectionsNotInAsync(int instrumentConfigId, List keepIds, LoginDTO login, CancellationToken ct); Task InsertSectionOnlyAsync(int instrumentSectionId, SaveSurveySectionOnlyRequest req, LoginDTO login, CancellationToken ct); Task UpdateSectionOnlyAsync(int instrumentSectionId, SaveSurveySectionOnlyRequest req, LoginDTO login, CancellationToken ct); Task DeleteSectionAsync(int instrumentSectionId, LoginDTO login, CancellationToken ct); Task GetSectionByIdAsync(int instrumentSectionId, LoginDTO login, CancellationToken ct); Task> GetSectionsByConfigAsync(int instrumentConfigId, LoginDTO login, CancellationToken ct); Task> GetSelectListSurveySection( int firstNumber, int maxResult, CriteriaDTO criteriaDTO, LoginDTO login); Task InsertInstQuestionAsync(int instQuestionId, int instrumentSectionId, int instrumentConfigId, SaveSurveyInstQuestionRequest question, LoginDTO login, CancellationToken ct); Task UpdateInstQuestionAsync(int instQuestionId, SaveSurveyInstQuestionRequest question, LoginDTO login, CancellationToken ct); Task DeactivateInstQuestionsNotInAsync(int instrumentSectionId, List keepIds, LoginDTO login, CancellationToken ct); Task InsertQuestionBankAsync(int questionId, SaveSurveyQuestionRequest req, LoginDTO login, CancellationToken ct); Task UpdateQuestionBankAsync(int questionId, SaveSurveyQuestionRequest req, LoginDTO login, CancellationToken ct); Task UpsertQuestionTransAsync(int questionId, int questionTransId, string langCode, string questionText, LoginDTO login, CancellationToken ct); Task InsertOptionAsync(int optionId, int questionId, SaveSurveyOptionRequest option, LoginDTO login, CancellationToken ct); Task UpdateOptionAsync(int optionId, SaveSurveyOptionRequest option, LoginDTO login, CancellationToken ct); Task DeactivateOptionsNotInAsync(int questionId, List keepIds, LoginDTO login, CancellationToken ct); Task UpsertOptionTransAsync(int optionId, int optionTransId, string langCode, string optionText, LoginDTO login, CancellationToken ct); Task> GetQuestionBankListAsync( string searchText, string langCode, int firstNumber, int maxResult, LoginDTO login, CancellationToken ct); Task<(SurveyQuestionCoreRow? Question, List Options)> GetQuestionByIdAsync( int questionId, string langCode, LoginDTO login, CancellationToken ct); Task> GetSelectListSurveyQuestion( int firstNumber, int maxResult, string langCode, CriteriaDTO criteriaDTO, LoginDTO login); Task> GetSelectListSurveyInstrument( int firstNumber, int maxResult, CriteriaDTO criteriaDTO, LoginDTO login); Task DeactivateQuestionBankAsync(int questionId, LoginDTO login, CancellationToken ct); }