public FinishedPoolVue EvaluatePool(PoolVue poolVue) { List <AnsweredQuestionVue> answeredQuestionVues = new List <AnsweredQuestionVue>(); Pool pool = new Pool() { SubmitDate = DateTime.Now, Submiter = poolVue.Name }; foreach (var q in poolVue.Questions) { Question question = unitOfWork.QuestionRepository.GetByID(q.Id); PoolQuestion poolQuestion = new PoolQuestion() { Pool = pool, Question = question }; unitOfWork.PoolQuestionRepository.Insert(poolQuestion); Answer answer = unitOfWork.AnswerRepository.GetByID(q.Result); AnsweredQuestion answeredQuestion = new AnsweredQuestion() { Answer = answer, Pool = pool, Question = question }; unitOfWork.AnsweredQuestionRepository.Insert(answeredQuestion); Answer correctAnswer = unitOfWork.AnswerRepository.Get(x => x.QuestionId == q.Id && x.IsCorrect, null, "").FirstOrDefault(); AnsweredQuestionVue aqv = new AnsweredQuestionVue() { QuestionId = q.Id, CorrectAnswerId = correctAnswer != null ? correctAnswer.Id : 0, GivenAnswerId = q.Result, IsCorrect = ((correctAnswer != null ? correctAnswer.Id : 0) == q.Result) }; answeredQuestionVues.Add(aqv); } unitOfWork.PoolRepository.Insert(pool); unitOfWork.Save(); double result = (double)answeredQuestionVues.Where(x => x.IsCorrect).Count() / answeredQuestionVues.Count; return(new FinishedPoolVue() { FinalResult = Math.Round(result, 2) * 100, AnsweredQuestions = answeredQuestionVues }); }
public JsonResult EvaluatePool([FromBody] PoolVue pool) { var finishedPool = poolManager.EvaluatePool(pool); return(Json(finishedPool)); }