using System.Collections.Generic; using GB5Shared.DTO.Framework.Login; using TMSDAL.DTO.Assessment; using TMSDAL.DTO.Quiz; namespace TMSDAL.CustomCode.Quiz { public interface IQuizAttemptDAL { Task GetQuizAttempt(int quizAttemptId, LoginDTO loginDTO); Task> GetQuizAttemptFullList(LoginDTO loginDTO); Task> GetQuizAttemptListByEmployee(int employeeId, LoginDTO loginDTO); /// Instant-mode question selection — random pick from MQUESTIONBANK, optionally /// scoped to a topic (topicId = -1 for no filter). Task> GetRandomQuestionsByTopic(int topicId, int questionCount, LoginDTO loginDTO); Task GetQuizAttemptCount(int quizId, int employeeId, LoginDTO loginDTO); Task SaveQuizAttempt(QuizAttemptDTO dto, LoginDTO loginDTO); Task UpdateQuizAttemptScore(QuizAttemptDTO dto, LoginDTO loginDTO); Task DeleteQuizAttempt(int quizAttemptId, LoginDTO loginDTO); Task> GetResponsesByAttempt(int quizAttemptId, LoginDTO loginDTO); Task SaveQuizAttemptResponse(QuizAttemptResponseDTO dto, LoginDTO loginDTO); Task UpdateQuizAttemptResponse(QuizAttemptResponseDTO dto, LoginDTO loginDTO); /// Latest passing attempt for (quizId, employeeId), or null if none — consumed by /// GB5Framework's IValidationCriteriaEvaluator (VALIDATIONTYPE=Quiz). Task GetLatestPassingAttempt(int quizId, int employeeId, LoginDTO loginDTO); } }