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() }); }
public async Task <ActionResult> Execute(ExecuteTestModel model) { var test = await testTemplatesService.Execute(model); return(Ok(test)); }