public Result <TestEndOutput> TestEnd([FromBody] ExaminationIntput examinationIntput) { return(_iExaminationService.TestEnd(long.Parse(User.Identity.Name), examinationIntput)); }
/// <summary> /// 交卷 /// </summary> /// <param name="userId"></param> /// <param name="examinationIntput"></param> /// <returns></returns> public Result <TestEndOutput> TestEnd(long userId, ExaminationIntput examinationIntput) { Score score = new Score(); if (string.IsNullOrEmpty(examinationIntput.ExaminationId)) { return(Result <TestEndOutput> .Fail("该考试不存在")); } var has = false; var thisExamination = _examination.Get(long.Parse(examinationIntput.ExaminationId)); DateTime timeNow = DateTime.Now.Date; if (_score.Any(s => s.UserId == userId && s.ExaminationId == thisExamination.Id)) { has = true; score = _score.GetAll().FirstOrDefault(s => s.UserId == userId && s.ExaminationId == thisExamination.Id); } score.UserId = userId; score.ExaminationId = thisExamination.Id; score.DayOrWeek = thisExamination.DayOrWeek; string scoreContent = "["; double totalScore = 0; var types = _questionType.GetAll().ToList(); var error = 0; List <QuestionStringId> ErrorQuestion = new List <QuestionStringId>(); ExaminationOutPut questionsResult = new ExaminationOutPut(); var single = _questionType.FirstOrDefault(q => q.Name == "单选"); //单选题数量 var multiple = _questionType.FirstOrDefault(q => q.Name == "多选"); //多选题数量 var judge = _questionType.FirstOrDefault(q => q.Name == "判断"); //判断题数量 foreach (QuestionAndInputAnswer item in examinationIntput.questionAndInputAnswers) { //item.QuestionItemId.TrimEnd() + "###" + item.InputAnswer.TrimEnd() + "&&&" scoreContent += "{\"" + item.QuestionItemId + "\":\"" + item.InputAnswer + "\"},"; var thisQuestion = _question.Get(long.Parse(item.QuestionItemId)); if (item.InputAnswer.TrimEnd() == thisQuestion.Answer) { totalScore += types.FirstOrDefault(m => m.Id == thisQuestion.QuestionTypeId).Score; } else { ErrorQuestion.Add(new QuestionStringId() { StrId = thisQuestion.Id.ToString(), Content = thisQuestion.Content, Options = thisQuestion.Options, AnswerNote = thisQuestion.AnswerNote, QuestionType = thisQuestion.QuestionTypeId == single.Id ? "单选" : thisQuestion.QuestionTypeId == multiple.Id ? "多选" : "判断", Answer = thisQuestion.Answer, MyAnswer = item.InputAnswer }); error++; } } scoreContent = scoreContent.Substring(0, scoreContent.Length - 1); scoreContent += "]"; score.Content = scoreContent; score.TotalScore = totalScore; try { if (has) { _score.Update(score); } else { _score.Insert(score); } _unitOfWork.SaveChanges(); return(Result <TestEndOutput> .Success(new TestEndOutput() { Toal = examinationIntput.questionAndInputAnswers.Count(), Error = error, Score = totalScore, ErrorQuestion = ErrorQuestion }));; } catch { return(Result <TestEndOutput> .Fail("")); } }