Esempio n. 1
0
        /// <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;
            }
        }
Esempio n. 2
0
        /// <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);
        }