예제 #1
0
        /// <summary>
        /// Constructor.
        /// </summary>
        public UserQuestionDataUpdaterImplFactory(
            DatabaseContext dbContext,
            IQuestionStatusCalculator questionStatusCalculator,
            IQuestionGenerator questionGenerator,
            IGeneratedQuestionSeedGenerator seedGenerator,
            IRandomlySelectedQuestionSelector questionSelector,
            ITimeProvider timeProvider)
        {
            _generatedUserQuestionDataUpdater = new GeneratedUserQuestionDataUpdater
                                                (
                questionStatusCalculator,
                questionGenerator,
                seedGenerator,
                timeProvider
                                                );

            _randomlySelectedUserQuestionDataUpdater = new RandomlySelectedUserQuestionDataUpdater
                                                       (
                dbContext,
                questionStatusCalculator,
                questionSelector
                                                       );

            _defaultUserQuestionDataUpdater = new DefaultUserQuestionDataUpdater();
        }
예제 #2
0
        private void WireLogicInjector(ILogicInjector injector, IQuestionGenerator generator)
        {
            IQuestion question = generator.GetNextQuestion();

            Answer[] answers = generator.GetNextAnswers();

            injector.Wire(question, answers);
        }
 /// <summary>
 /// Constructor.
 /// </summary>
 public QuestionUpdaterFactory(
     DatabaseContext dbContext,
     IQuestionGenerator questionGenerator,
     ITimeProvider timeProvider)
 {
     _dbContext         = dbContext;
     _questionGenerator = questionGenerator;
     _timeProvider      = timeProvider;
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 public GeneratedQuestionUpdater(
     DatabaseContext dbContext,
     GeneratedQuestionTemplate question,
     IModelErrorCollection errors,
     IQuestionGenerator questionGenerator,
     ITimeProvider timeProvider)
     : base(dbContext, question, errors)
 {
     _questionGenerator = questionGenerator;
     _timeProvider      = timeProvider;
 }
예제 #5
0
 public QuestionViewModel(IQuestionGenerator questionGenerator, IEventAggregator ea)
 {
     _questionGenerator = questionGenerator;
     _ea = ea;
     _ea.GetEvent <GameControlEvent>().Subscribe(HandleGameControlEvent);
     Icon                = MaterialDesignIcons.PointingDown;
     CanStartGame        = true;
     StartNewGameCommand = new DelegateCommand(ExecuteNewGame).ObservesCanExecute(() => CanStartGame);
     //CheckAnswerCommand = new DelegateCommand(ExecuteCheckAnswer).ObservesCanExecute(() => IsGameRunning);
     SubmitAnswerCommand = new DelegateCommand(ExecuteSubmitAnswer).ObservesCanExecute(() => IsGameRunning);
     NextQuestionCommand = new DelegateCommand(ExecuteNextQuestion).ObservesCanExecute(() => IsGameRunning);
 }
 /// <summary>
 /// Constructor.
 /// </summary>
 public GeneratedUserQuestionDataUpdater(
     IQuestionStatusCalculator questionStatusCalculator,
     IQuestionGenerator questionGenerator,
     IGeneratedQuestionSeedGenerator seedGenerator,
     ITimeProvider timeProvider)
 {
     _questionStatusCalculator = questionStatusCalculator;
     _questionGenerator        = questionGenerator;
     _seedGenerator            = seedGenerator;
     _timeProvider             = timeProvider;
     _regenerateJobs           = new List <RegenerateQuestionJob>();
 }
예제 #7
0
 public Assessment(IAnswerPlacer answ_placer,
                   IQuestionPlacer question_placer,
                   IQuestionGenerator question_generator,
                   ILogicInjector logic_injector,
                   IAssessmentConfiguration game_conf,
                   AssessmentAudioManager dialogues)
 {
     AnswerPlacer      = answ_placer;
     QuestionGenerator = question_generator;
     QuestionPlacer    = question_placer;
     LogicInjector     = logic_injector;
     Configuration     = game_conf;
     Dialogues         = dialogues;
 }
예제 #8
0
 /// <summary>
 /// Constructor.
 /// </summary>
 public UserQuestionDataUpdaterFactory(
     DatabaseContext dbContext,
     IQuestionStatusCalculator questionStatusCalculator,
     IQuestionGenerator questionGenerator,
     IGeneratedQuestionSeedGenerator seedGenerator,
     IRandomlySelectedQuestionSelector questionSelector,
     ITimeProvider timeProvider)
 {
     _dbContext = dbContext;
     _questionStatusCalculator = questionStatusCalculator;
     _questionGenerator        = questionGenerator;
     _seedGenerator            = seedGenerator;
     _questionSelector         = questionSelector;
     _timeProvider             = timeProvider;
 }
예제 #9
0
 /// <summary>
 /// Constructor.
 /// </summary>
 public QuestionService(
     DatabaseContext dbContext,
     IQuestionValidator questionValidator,
     IQuestionLoaderFactory questionLoaderFactory,
     IQuestionUpdaterFactory questionUpdaterFactory,
     IQuestionDuplicatorFactory questionDuplicatorFactory,
     IQuestionGenerator questionGenerator,
     IJsonSerializer jsonSerializer)
 {
     _dbContext                 = dbContext;
     _questionValidator         = questionValidator;
     _questionLoaderFactory     = questionLoaderFactory;
     _questionUpdaterFactory    = questionUpdaterFactory;
     _questionDuplicatorFactory = questionDuplicatorFactory;
     _questionGenerator         = questionGenerator;
     _jsonSerializer            = jsonSerializer;
 }
 public DefaultAssessment(IAnswerPlacer answ_placer,
                          IQuestionPlacer question_placer,
                          IQuestionGenerator question_generator,
                          ILogicInjector logic_injector,
                          IAssessmentConfiguration game_conf,
                          IGameContext game_context,
                          IDialogueManager dialogues,
                          Db.LocalizationDataId gameDescription)
 {
     AnswerPlacer      = answ_placer;
     QuestionGenerator = question_generator;
     QuestionPlacer    = question_placer;
     LogicInjector     = logic_injector;
     Configuration     = game_conf;
     GameContext       = game_context;
     Dialogues         = dialogues;
     GameDescription   = gameDescription;
 }
예제 #11
0
        /// <summary>
        /// Creates a new GeneratedUserQuestionDataUpdater.
        /// </summary>
        private GeneratedUserQuestionDataUpdater CreateUserQuestionDataUpdater(
            IQuestionStatusCalculator questionStatusCalculator = null,
            IQuestionGenerator questionGenerator          = null,
            IGeneratedQuestionSeedGenerator seedGenerator = null)
        {
            var mockTimeProvider = new Mock <ITimeProvider>();

            mockTimeProvider
            .Setup(m => m.UtcNow)
            .Returns(GenerationTime);

            return(new GeneratedUserQuestionDataUpdater
                   (
                       questionStatusCalculator,
                       questionGenerator,
                       seedGenerator,
                       mockTimeProvider.Object
                   ));
        }
 /// <summary>
 /// Creates a question service.
 /// </summary>
 private QuestionService CreateQuestionService(
     DatabaseContext dbContext,
     IQuestionValidator questionValidator                 = null,
     IQuestionLoaderFactory questionLoaderFactory         = null,
     IQuestionUpdaterFactory questionUpdaterFactory       = null,
     IQuestionDuplicatorFactory questionDuplicatorFactory = null,
     IQuestionGenerator questionGenerator                 = null,
     IJsonSerializer jsonSerializer = null)
 {
     return(new QuestionService
            (
                dbContext,
                questionValidator,
                questionLoaderFactory,
                questionUpdaterFactory,
                questionDuplicatorFactory,
                questionGenerator,
                jsonSerializer
            ));
 }
예제 #13
0
		/// <summary>
		/// Constructor.
		/// </summary>
		public QuestionService(
			DatabaseContext dbContext, 
			QuestionLoaderFactory questionLoaderFactory, 
			QuestionUpdaterFactory questionUpdaterFactory,
			QuestionGraderFactory questionGraderFactory,
			QuestionDuplicatorFactory questionDuplicatorFactory,
			IQuestionGenerator questionGenerator,
			IJsonSerializer jsonSerializer,
			IRandomNumberProvider randomNumberProvider,
			ITimeProvider timeProvider)
		{
			_dbContext = dbContext;
			_questionLoaderFactory = questionLoaderFactory;
			_questionUpdaterFactory = questionUpdaterFactory;
			_questionGraderFactory = questionGraderFactory;
			_questionDuplicatorFactory = questionDuplicatorFactory;
			_questionGenerator = questionGenerator;
			_jsonSerializer = jsonSerializer;
			_randomNumberProvider = randomNumberProvider;
			_timeProvider = timeProvider;
		}
        private IActionResult GenerateDefaultWorksheet(BasicWorksheetGeneratorparameters parameters, IQuestionGenerator <IQuestion> generator)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            return(ControllerTryCatchBlocks.LoggingAllExceptions(logger, () =>
            {
                var generators = Enumerable.Range(0, parameters.NumberOfQuestions)
                                 .Select(t => generator)
                                 .ToList();

                BuildAndSendPdf(generators, parameters.EmailAddress.Address);
                return Ok(ModelState);
            }, new { parameters, generator }));
        }
		/// <summary>
		/// Creates a question service.
		/// </summary>
		private QuestionService CreateQuestionService(
			DatabaseContext dbContext,
			QuestionLoaderFactory questionLoaderFactory = null,
			QuestionUpdaterFactory questionUpdaterFactory = null,
			QuestionGraderFactory questionGraderFactory = null,
			QuestionDuplicatorFactory questionDuplicatorFactory = null,
			IQuestionGenerator questionGenerator = null,
			IJsonSerializer jsonSerializer = null,
			IRandomNumberProvider randomNumberProvider = null,
			ITimeProvider timeProvider = null)
		{
			return new QuestionService
			(
				dbContext,
				questionLoaderFactory,
				questionUpdaterFactory,
				questionGraderFactory,
				questionDuplicatorFactory,
				questionGenerator,
				jsonSerializer,
				randomNumberProvider,
				timeProvider
			);
		}