|
|
|
@ -11,7 +11,8 @@ using System.Text.RegularExpressions; |
|
|
|
|
using System.Net; |
|
|
|
|
using Tiobon.Core.Common.Helper; |
|
|
|
|
using AgileObjects.AgileMapper.Extensions; |
|
|
|
|
using Tiobon.Core.Common.DB.Dapper.Extensions; |
|
|
|
|
using SqlSugar; |
|
|
|
|
using Tiobon.Core.DataAccess; |
|
|
|
|
|
|
|
|
|
namespace Tiobon.Core.Services; |
|
|
|
|
|
|
|
|
@ -346,7 +347,6 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe |
|
|
|
|
return ServiceResult.OprateSuccess("提交成功!"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<ServiceResult<QueryExam>> QueryExamAsync(long id) |
|
|
|
|
{ |
|
|
|
|
var extend = new QueryExam(); |
|
|
|
@ -499,8 +499,8 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe |
|
|
|
|
var detail = new FromGhre_QuestionQuestionTypeDetail(); |
|
|
|
|
detail.content = x.QuestionContent; |
|
|
|
|
detail.difficulty = questions1.FirstOrDefault(a => a.Id == x.QuestionId)?.DifficultyLevel; |
|
|
|
|
detail.answer = answers1.Where(x => x.IsCorrect == true).FirstOrDefault()?.QuestionNo; |
|
|
|
|
detail.answer1 = answers1.Where(x => x.IsCorrect == true).Select(x => x.QuestionNo).ToList(); |
|
|
|
|
//detail.answer = answers1.Where(x => x.IsCorrect == true).FirstOrDefault()?.QuestionNo; |
|
|
|
|
//detail.answer1 = answers1.Where(x => x.IsCorrect == true).Select(x => x.QuestionNo).ToList(); |
|
|
|
|
detail.answerList = answers1.Select(x => new FromGhre_QuestionQuestionAnswerList() |
|
|
|
|
{ |
|
|
|
|
No = x.QuestionNo, |
|
|
|
@ -561,7 +561,6 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe |
|
|
|
|
return ServiceResult<QueryExam>.OprateSuccess("查询成功!", extend); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<ServiceResult> StartExamAsync(long examRecordId) |
|
|
|
|
{ |
|
|
|
|
var entity = await base.QuerySingle(examRecordId); |
|
|
|
@ -592,4 +591,100 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe |
|
|
|
|
|
|
|
|
|
return ServiceResult.OprateSuccess("成功!"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<ServiceResult> AnswerExamAsync(List<DefaultGhre_ExamPaperPreview> answers, long studyRecordId) |
|
|
|
|
{ |
|
|
|
|
var record = await base.QuerySingle(x => x.Id == studyRecordId); |
|
|
|
|
if (record is null) return ServiceResult.OprateFailed("无效的考试ID"); |
|
|
|
|
using var _context = ContextFactory.CreateContext(); |
|
|
|
|
|
|
|
|
|
var questionIds = answers.Select(x => x.QuestionId).ToList(); |
|
|
|
|
var questionAnswers = await Db.Queryable<Ghre_QuestionAnswer>().Where(x => x.QuestionId != null && questionIds.Contains(x.QuestionId.Value)).OrderBy(x => x.TaxisNo).ToListAsync(); ; |
|
|
|
|
|
|
|
|
|
var staff = await Db.Queryable<Ghrs_User>().Where(x => x.UserId == App.User.ID).FirstAsync(); |
|
|
|
|
|
|
|
|
|
var recordDetails = new List<Ghre_ExamRecordDetail>(); |
|
|
|
|
var recordDetailAnswers = new List<Ghre_ExamRecordAnswer>(); |
|
|
|
|
answers.ForEach(answer => |
|
|
|
|
{ |
|
|
|
|
long id = SnowFlakeSingle.instance.getID(); |
|
|
|
|
|
|
|
|
|
recordDetails.Add(new Ghre_ExamRecordDetail() |
|
|
|
|
{ |
|
|
|
|
Id = id, |
|
|
|
|
CreateTime = DateTime.Now, |
|
|
|
|
ExamRecordId = record.Id, |
|
|
|
|
ExamPaperId = answer.ExamPaperId, |
|
|
|
|
ExamPaperQuestionId = answer.Id, |
|
|
|
|
QuestionId = answer.QuestionId, |
|
|
|
|
StaffId = staff?.UserStaffID, |
|
|
|
|
Score = 0, |
|
|
|
|
AdjustScore = 0 |
|
|
|
|
}); |
|
|
|
|
var questionAnswers1 = questionAnswers.Where(x => x.QuestionId == answer.QuestionId).ToList(); |
|
|
|
|
switch (answer.QuestionType) |
|
|
|
|
{ |
|
|
|
|
case "TrueOrFalse": |
|
|
|
|
case "Single": |
|
|
|
|
recordDetailAnswers.Add(new Ghre_ExamRecordAnswer() |
|
|
|
|
{ |
|
|
|
|
Id = SnowFlakeSingle.instance.getID(), |
|
|
|
|
CreateTime = DateTime.Now, |
|
|
|
|
ExamRecordDetailId = id, |
|
|
|
|
|
|
|
|
|
QuestionAnswerId = questionAnswers1.First(x => x.QuestionNo == answer.value)?.Id, |
|
|
|
|
}); |
|
|
|
|
break; |
|
|
|
|
case "Multiple": |
|
|
|
|
var TaxisNo = 100; |
|
|
|
|
foreach (var value in answer.value1) |
|
|
|
|
{ |
|
|
|
|
recordDetailAnswers.Add(new Ghre_ExamRecordAnswer() |
|
|
|
|
{ |
|
|
|
|
Id = SnowFlakeSingle.instance.getID(), |
|
|
|
|
CreateTime = DateTime.Now, |
|
|
|
|
ExamRecordDetailId = id, |
|
|
|
|
QuestionAnswerId = questionAnswers1.First(x => x.QuestionNo == value)?.Id, |
|
|
|
|
TaxisNo = TaxisNo |
|
|
|
|
}); |
|
|
|
|
TaxisNo += 100; |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case "Completion": |
|
|
|
|
var TaxisNo1 = 100; |
|
|
|
|
foreach (var value in answer.value1) |
|
|
|
|
{ |
|
|
|
|
recordDetailAnswers.Add(new Ghre_ExamRecordAnswer() |
|
|
|
|
{ |
|
|
|
|
Id = SnowFlakeSingle.instance.getID(), |
|
|
|
|
CreateTime = DateTime.Now, |
|
|
|
|
ExamRecordDetailId = id, |
|
|
|
|
AnswerContent = value, |
|
|
|
|
TaxisNo = TaxisNo1 |
|
|
|
|
}); |
|
|
|
|
TaxisNo1 += 100; |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case "ShortAnswer": |
|
|
|
|
recordDetailAnswers.Add(new Ghre_ExamRecordAnswer() |
|
|
|
|
{ |
|
|
|
|
Id = SnowFlakeSingle.instance.getID(), |
|
|
|
|
CreateTime = DateTime.Now, |
|
|
|
|
ExamRecordDetailId = id, |
|
|
|
|
AnswerContent = answer.value |
|
|
|
|
}); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
|
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
await _context.Ghre_ExamRecordDetail.AddRangeAsync(recordDetails); |
|
|
|
|
await _context.Ghre_ExamRecordAnswer.AddRangeAsync(recordDetailAnswers); |
|
|
|
|
await _context.SaveChangesAsync(); |
|
|
|
|
|
|
|
|
|
return ServiceResult.OprateSuccess("提交成功!"); |
|
|
|
|
} |
|
|
|
|
} |