public async Task <ExamRecordInfo> CorrectExam(ExamSubmitInfo submitInfo) { ExamRecordInfo recordInfo = GetRecordInfo(submitInfo); recordInfo.QuestionRecords = GetQuestionRecord(submitInfo.details); return(_recordApp.AddRecord(recordInfo)); }
public ExamRecordInfo AddRecord(ExamRecordInfo recordInfo) { try { DbModel.ExamRecordInfo saveInfo = new DbModel.ExamRecordInfo(); saveInfo.ExamPaperId = recordInfo.ExamPaperId; saveInfo.ExamScore = recordInfo.ExamScore; saveInfo.IsPassed = recordInfo.IsPassed; saveInfo.LeftTime = recordInfo.LeftTime; saveInfo.CreateUserId = recordInfo.CreateUser == null ? _loginUser.Id : recordInfo.CreateUser.Id; saveInfo.CreateDate = DateTime.Now; saveInfo.BeginTime = recordInfo.BeginTime; saveInfo = _recordRepository.Create(saveInfo); recordInfo.Id = saveInfo.Id; recordInfo.CreateDate = saveInfo.CreateDate; recordInfo.CreateUserId = saveInfo.CreateUserId; recordInfo.ExamPaper = _examPaperApp.Load(saveInfo.ExamPaperId); foreach (ExamQuestionRecordInfo questionRecord in recordInfo.QuestionRecords) { AddQuestionRecord(recordInfo.Id, questionRecord); } } catch (Exception ex) { _log.LogError(ex, nameof(AddRecord)); throw; } return(recordInfo); }
public IQueryable <ExamRecordInfo> QueryRecord() { IEnumerable <DbModel.ExamRecordInfo> examRecords = _recordRepository.All(); List <ExamRecordInfo> results = new List <ExamRecordInfo>(); foreach (DbModel.ExamRecordInfo record in examRecords) { ExamRecordInfo result = new ExamRecordInfo(); result.Id = record.Id; result.ExamPaperId = record.ExamPaperId; result.ExamScore = record.ExamScore; result.IsPassed = record.IsPassed; result.LeftTime = record.LeftTime; result.BeginTime = record.BeginTime; result.CreateUserId = record.CreateUserId; result.CreateDate = record.CreateDate; results.Add(result); } foreach (ExamRecordInfo record in results) { record.CreateUser = _userApp.Load(record.CreateUserId.ToString()); record.ExamPaper = _examPaperApp.Load(record.ExamPaperId); record.QuestionRecords = QueryRecordQuestion(record.Id).ToList(); foreach (ExamQuestionRecordInfo questionRecord in record.QuestionRecords) { questionRecord.ExamRecord = record; } } return(results.AsQueryable()); }
public async Task <IActionResult> Finish([FromBody] IEnumerable <ExamSubmitInfo> info) { foreach (ExamSubmitInfo item in info) { ExamRecordInfo result = await _correctApp.CorrectExam(item); return(Ok(result)); } return(RedirectToAction(nameof(Index))); }
private void CheckIsPassed(ExamRecordInfo recordInfo, ExamSubmitInfo submitInfo) { if (recordInfo == null || submitInfo == null) { return; } ExamPaperInfo examPaper = _examPaperApp.Load(submitInfo.examId); double totalScore = examPaper.ExamScore; double passedScore = totalScore * 0.6; recordInfo.IsPassed = recordInfo.ExamScore >= passedScore; }
private ExamRecordInfo GetRecordInfo(ExamSubmitInfo submitInfo) { ExamRecordInfo recordInfo = new ExamRecordInfo(); recordInfo.ExamPaperId = submitInfo.examId; recordInfo.LeftTime = submitInfo.leftTime; //string[] lt = recordInfo.LeftTime.Split(':'); //DateTime beginTime = DateTime.Now.AddMinutes(StringUtil.GetInt(lt[0]) * -1).AddSeconds(StringUtil.GetInt(lt[1]) * -1); DateTime beginTime = GeneralUseTime(submitInfo); recordInfo.BeginTime = beginTime; recordInfo.ExamScore = GeneralScore(submitInfo); CheckIsPassed(recordInfo, submitInfo); recordInfo.CreateUser = _loginUser; return(recordInfo); }
public IQueryable <ExamRecordInfo> QueryRecordByUser(int userId, Expression <Func <DbModel.ExamRecordInfo, bool> > expression) { IEnumerable <DbModel.ExamRecordInfo> examRecords = _recordRepository.All(); if (userId > 0) { examRecords = examRecords.AsQueryable().Where(p => p.CreateUserId.Equals(userId)); } if (expression != null) { examRecords = examRecords.AsQueryable().Where(expression); } List <ExamRecordInfo> results = new List <ExamRecordInfo>(); foreach (DbModel.ExamRecordInfo record in examRecords) { ExamRecordInfo result = new ExamRecordInfo(); result.Id = record.Id; result.ExamPaperId = record.ExamPaperId; result.ExamScore = record.ExamScore; result.IsPassed = record.IsPassed; result.LeftTime = record.LeftTime; result.BeginTime = record.BeginTime; result.CreateUserId = record.CreateUserId; result.CreateDate = record.CreateDate; results.Add(result); } foreach (ExamRecordInfo record in results) { record.CreateUser = _userApp.Load(record.CreateUserId.ToString()); record.ExamPaper = _examPaperApp.Load(record.ExamPaperId); record.QuestionRecords = QueryRecordQuestion(record.Id).ToList(); foreach (ExamQuestionRecordInfo questionRecord in record.QuestionRecords) { questionRecord.ExamRecord = record; } } return(results.AsQueryable()); }
public async Task <ExamRecordInfo> Load(Expression <Func <DbModel.ExamRecordInfo, bool> > expression) { DbModel.ExamRecordInfo recordInfo = _recordRepository.Load(expression); ExamRecordInfo result = new ExamRecordInfo(); result.Id = recordInfo.Id; result.ExamPaperId = recordInfo.ExamPaperId; result.ExamScore = recordInfo.ExamScore; result.IsPassed = recordInfo.IsPassed; result.LeftTime = recordInfo.LeftTime; result.BeginTime = recordInfo.BeginTime; result.CreateUserId = recordInfo.CreateUserId; result.CreateDate = recordInfo.CreateDate; result.CreateUser = _userApp.Load(result.CreateUserId.ToString()); result.ExamPaper = _examPaperApp.Load(result.ExamPaperId); result.QuestionRecords = QueryRecordQuestion(result.Id).ToList(); foreach (ExamQuestionRecordInfo questionRecord in result.QuestionRecords) { questionRecord.ExamRecord = result; } return(result); }
public async Task <IActionResult> Details(int recordId) { ExamRecordInfo recordInfo = await _recordApp.Load(recordId); return(View(recordInfo)); }