public async Task <IEnumerable <UserOfferedAnswer> > SolveExam(ExamApiSolveInputModel model, string userId) { var exam = this.Context.Exams .Include(x => x.UserAnswers) .Include(x => x.Questions) .ThenInclude(x => x.PossibleAnswers) .FirstOrDefault(x => x.Id == model.ExamId); //TODO: make some validations to exam ; var selectedAnswers = this.Context.Questions .SelectMany(x => x.PossibleAnswers) .Where(x => model.SelectedAnswers.Any(ans => ans.Id == x.Id)) .ToList(); foreach (var answer in selectedAnswers) { var userAnswer = new UserAnswer() { ExamId = model.ExamId, UserId = userId }; var userOfferedAnswer = new UserOfferedAnswer() { UserAnswer = userAnswer, OfferedAnswer = answer }; this.Context.UserAnswers.Add(userAnswer); this.Context.UserOfferedAnswers.Add(userOfferedAnswer); } await this.Context.SaveChangesAsync(); var result = this.Context.UserOfferedAnswers .Include(x => x.OfferedAnswer) .Include(x => x.UserAnswer) .ToList(); return(result); }
public IActionResult Solve(ExamApiSolveInputModel model) { if (!this.ModelState.IsValid) { return(this.BadRequest()); } //TODO: fix the userid is null try { var userId = User.FindFirstValue(ClaimTypes.NameIdentifier); var result = this.ApiService.SolveExam(model, userId); //TODO: check if need to evaluate return(this.Ok()); } catch (Exception e) { return(this.BadRequest(e.Message)); } }