コード例 #1
0
        public async Task <ExamRecordInfo> CorrectExam(ExamSubmitInfo submitInfo)
        {
            ExamRecordInfo recordInfo = GetRecordInfo(submitInfo);

            recordInfo.QuestionRecords = GetQuestionRecord(submitInfo.details);
            return(_recordApp.AddRecord(recordInfo));
        }
コード例 #2
0
 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);
 }
コード例 #3
0
        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());
        }
コード例 #4
0
        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)));
        }
コード例 #5
0
        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;
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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());
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        public async Task <IActionResult> Details(int recordId)
        {
            ExamRecordInfo recordInfo = await _recordApp.Load(recordId);

            return(View(recordInfo));
        }