Ejemplo n.º 1
0
        public async Task <KnowledgeTestModel> Execute(ExecuteTestModel model)
        {
            var template = await testTemplateRepository.GetQuery().FirstOrDefaultAsync(x => x.Id == model.Id);

            if (!template.IsActive)
            {
                throw new ApplicationException();
            }

            var user = await currentUser.GetCurrentUserAsync();

            var knowledgeTest = new KnowledgeTest
            {
                UserId         = user.Id,
                TestTemplateId = template.Id,
                ExpiredAt      = DateTime.UtcNow.AddMinutes(10),
                Questions      = template.Questions.Select(x => new KnowledgeTestQuestion
                {
                    QuestionTemplateId = x.Id,
                }).ToList(),
            };

            knowledgeTestRepository.Add(knowledgeTest);
            await dataContext.SaveChangesAsync();

            return(new KnowledgeTestModel
            {
                Id = knowledgeTest.Id,
                Name = knowledgeTest.TestTemplate.Name,
                Questions = knowledgeTest.Questions.Select(x => new KnowledgeQuestionModel
                {
                    Id = x.Id,
                    Name = x.QuestionTemplate.Name,
                    ControlType = x.QuestionTemplate.ControlType,
                    Answers = x.QuestionTemplate.Answers.Select(f => new KnowledgeAnswerModel
                    {
                        Id = f.Id,
                        Answer = x.QuestionTemplate.ControlType == ControlType.Text ? null : f.Answer
                    }).ToList()
                }).ToList()
            });
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> Execute(ExecuteTestModel model)
        {
            var test = await testTemplatesService.Execute(model);

            return(Ok(test));
        }