private int CalculateAndSaveTestResults(string emploeeNumber, TestContext context) { var test = DbContext.Tests.Where(x => x.Id == context.TestId).First(); var emploee = DbContext.Employes.Where(x => x.Name == emploeeNumber).First(); var testResult = new Result { EmployeeId = emploee.Id, Date = DateTime.Now, TestId = test.Id }; int score = 0; var questionList = new List <QuestionInformation>(); var questionData = test.Questions.ToList(); for (int i = 0; i < questionData.Count; i++) { var questionInformation = new QuestionInformation(); var rightAnswer = questionData[i].PossibleAnswers.Where(x => x.Correct).First(); if (context.UserAnswers[i] == rightAnswer.Id) { score++; questionInformation.UserAnswer = rightAnswer.Answer; questionInformation.IsRightAnswer = true; } else { if (context.UserAnswers[i] != 0) { var userAnswer = questionData[i].PossibleAnswers.Where(x => x.Id == context.UserAnswers[i]).First(); questionInformation.UserAnswer = userAnswer.Answer; } else { questionInformation.UserAnswer = "Пользователь не ответил"; } questionInformation.RightAnswer = rightAnswer.Answer; questionInformation.IsRightAnswer = false; } questionList.Add(questionInformation); } var testResultMetadata = new TestResultsInformation { TestOriginalName = test.Name, Score = score, Questions = questionList }; testResult.Metadata = JsonConvert.SerializeObject(testResultMetadata); DbContext.Results.Add(testResult); DbContext.SaveChanges(); return(testResult.Id); }
public async Task <IActionResult> PutQuestionInformation([FromRoute] int id, [FromBody] QuestionInformation questionInformation) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != questionInformation.InfoId) { return(BadRequest()); } _context.Entry(questionInformation).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!QuestionInformationExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public async Task <IActionResult> PostQuestionInformation([FromBody] QuestionInformation questionInformation) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } _context.QuestionInformation.Add(questionInformation); await _context.SaveChangesAsync(); return(CreatedAtAction("GetQuestionInformation", new { id = questionInformation.InfoId }, questionInformation)); }
private static IEnumerable <QuestionInformation> ParseQuestions(this IEnumerable <Question> questions) { List <QuestionInformation> qi = new List <QuestionInformation>(); QuestionInformation q; int[] rank = new int[questions.Count()]; foreach (var item in questions) { q = new QuestionInformation(); q.Question = item; q.TotalWords = PostMethods.GetTotalWords(item.Body); q.Errors = PostMethods.CheckSpelling(item.Body); qi.Add(q); } return(qi); }