/// <summary> /// Return the next Question object and his Answer Options based on the actual question sequence. /// Get the next questionId from Question Order after the question sequence provided. /// </summary> /// <param name="sessionCurrentQuestionSequence">int sessionCurrentQuestionSequence</param> /// <returns>Question</returns> /// <exception cref="AppControlException">AppControlException</exception> public Question getNextQuestionBySequence(int currentQuestionSequence) { try { QuestionOrderDAO questionOrderDAO = new QuestionOrderDAO(); //Get the next questionId from Question Order after the question sequence provided. QuestionOrder nextQuestionOrder = questionOrderDAO.getNextQuestionOrder(currentQuestionSequence); QuestionDAO questionDAO = new QuestionDAO(); //Get the Question record by questionId. Question nextQuestion = getQuestionAndAnswersByIQuestionID(nextQuestionOrder.SurveyQuestionId); nextQuestion.QuestionSequence = nextQuestionOrder.QuestionOrderSequence; return(nextQuestion); } catch (AppDAOException ex) { //Error log simulated Console.WriteLine(ex.ToString()); Console.WriteLine(ex.GetBaseException().ToString()); throw new AppControlException(ex.Message); } catch (Exception ex) { //Error log simulated Console.WriteLine(ex.ToString()); Console.WriteLine(ex.GetBaseException().ToString()); throw; } }
/// <summary> /// Returns the Question Order by Question Sequence. /// </summary> /// <param name="questionId">int questionId</param> /// <returns>QuestionOrder</returns> /// <exception cref="Exception">Exception</exception> public QuestionOrder getNextQuestionOrder(int currentQuestionSequence) { try { QuestionOrder nextQuestionOrder = new QuestionOrder(); // Fill query parameters SqlCommand command = new SqlCommand(AppDAOConstants.getNextQuestionOrder, databaseConnector.connection); command.Parameters.AddWithValue(AppDAOConstants.questionOrderSequence, currentQuestionSequence); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { //Fill Question object with the correspondent values nextQuestionOrder.SurveyQuestionId = Convert.ToInt32(reader[AppDAOConstants.questionId].ToString()); nextQuestionOrder.QuestionOrderSequence = Convert.ToInt32(reader[AppDAOConstants.questionOrderSequence].ToString()); } databaseConnector.connection.Close(); return(nextQuestionOrder); } catch (Exception ex) { //Error log simulated Console.WriteLine(ex.ToString()); Console.WriteLine(ex.GetBaseException().ToString()); throw; } }
/// <summary> /// Method to find question by it's type and order number /// </summary> /// <param name="orderNumber">question's order number</param> /// <param name="type">question's type</param> /// <returns>question</returns> public async Task <Question> FindByTypeAndOrderNumberAsync(int orderNumber, int type) { BotQuestionType typeValue = (BotQuestionType)type; QuestionOrder orderNumberValue = (QuestionOrder)orderNumber; Question question = await _questionRepository.FirstOrDefaultAsync(x => x.OrderNumber == orderNumberValue && x.Type == typeValue); return(question); }
/// <summary> /// Method to get the next question of task mail by previous question order /// </summary> /// <param name="previousQuestionOrder">previous question order</param> /// <returns>question</returns> private async Task <Question> NextQuestionForTaskMailAsync(QuestionOrder previousQuestionOrder) { _logger.Info("Task mail module NextQuestionForTaskMailAsync start"); var orderValue = (int)previousQuestionOrder; var typeValue = (int)BotQuestionType.TaskMail; orderValue++; // getting question by order number and question type as task mail var nextQuestion = await _botQuestionRepository.FindByTypeAndOrderNumberAsync(orderValue, typeValue); _logger.Info("Task mail module NextQuestionForTaskMailAsync end"); return(nextQuestion); }