|
@@ -270,7 +270,26 @@ namespace Hotline.Application.Exam.Service.ExamManages
|
|
|
{
|
|
|
userExam = _mapper.Map<SubmitExamDto, ExamUserExam>(submitExamDto, userExam);
|
|
|
|
|
|
+ userExam.ExamStatus = EExamStatus.Complete;
|
|
|
+
|
|
|
await _repository.UpdateWithValidateAsync(userExam, cancellationToken);
|
|
|
+
|
|
|
+ await CompleteExamManage(userExam.ExamId, cancellationToken);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private async Task CompleteExamManage(string examId, CancellationToken cancellationToken)
|
|
|
+ {
|
|
|
+ var userExams = await _repository.Queryable().Where(x => x.ExamId == examId).ToListAsync();
|
|
|
+
|
|
|
+ if (userExams.All(x => x.IsSubmit))
|
|
|
+ {
|
|
|
+ var repository = new ExamRepository<ExamManage>(_uow, _dataPermissionFilterBuilder, _serviceProvider);
|
|
|
+ var examManage = await repository.GetAsync(x=>x.Id == examId);
|
|
|
+
|
|
|
+ examManage.ExamStatus = EExamStatus.Complete;
|
|
|
+
|
|
|
+ await repository.UpdateWithValidateAsync(examManage, cancellationToken);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -278,7 +297,7 @@ namespace Hotline.Application.Exam.Service.ExamManages
|
|
|
{
|
|
|
var userExam = await new ExamRepository<ExamUserExam>(_uow, _dataPermissionFilterBuilder, _serviceProvider).Queryable().Where(x => x.Id == addUserExamItemDto.UserExamId).FirstAsync();
|
|
|
|
|
|
- var startExamViewResponse = await CheckExamValid(userExam);
|
|
|
+ var startExamViewResponse = await CheckExamValid(userExam, cancellationToken);
|
|
|
|
|
|
if (!startExamViewResponse.CheckValidate())
|
|
|
{
|
|
@@ -312,7 +331,7 @@ namespace Hotline.Application.Exam.Service.ExamManages
|
|
|
if (userExam.StartTime == null)
|
|
|
userExam.StartTime = DateTime.Now;
|
|
|
|
|
|
- var startExamViewResponse = await CheckExamValid(userExam);
|
|
|
+ var startExamViewResponse = await CheckExamValid(userExam, cancellationToken);
|
|
|
|
|
|
if (!startExamViewResponse.CheckValidate())
|
|
|
{
|
|
@@ -325,7 +344,13 @@ namespace Hotline.Application.Exam.Service.ExamManages
|
|
|
|
|
|
await _repository.UpdateWithValidateAsync(userExam, cancellationToken);
|
|
|
|
|
|
- var examManage = await new ExamRepository<ExamManage>(_uow, _dataPermissionFilterBuilder, _serviceProvider).GetAsync(x => x.Id == userExam.ExamId);
|
|
|
+ var repository = new ExamRepository<ExamManage>(_uow, _dataPermissionFilterBuilder, _serviceProvider);
|
|
|
+
|
|
|
+ var examManage = await repository.GetAsync(x => x.Id == userExam.ExamId);
|
|
|
+
|
|
|
+ examManage.ExamStatus = EExamStatus.Executing;
|
|
|
+
|
|
|
+ await repository.UpdateWithValidateAsync(examManage, cancellationToken);
|
|
|
|
|
|
return new StartExamViewResponse
|
|
|
{
|
|
@@ -335,11 +360,11 @@ namespace Hotline.Application.Exam.Service.ExamManages
|
|
|
};
|
|
|
}
|
|
|
|
|
|
- private async Task<StartExamViewResponse> CheckExamValid(ExamUserExam examUserExam)
|
|
|
+ private async Task<StartExamViewResponse> CheckExamValid(ExamUserExam examUserExam, CancellationToken cancellationToken)
|
|
|
{
|
|
|
var examManageRepository = new ExamRepository<ExamManage>(_uow, _dataPermissionFilterBuilder, _serviceProvider);
|
|
|
|
|
|
- var examManage = await examManageRepository.Queryable().Where(x => x.Id == examUserExam.ExamId).FirstAsync();
|
|
|
+ var examManage = await examManageRepository.Queryable().Where(x => x.Id == examUserExam.ExamId).FirstAsync();
|
|
|
|
|
|
var startExamViewResponse = new StartExamViewResponse
|
|
|
{
|
|
@@ -366,7 +391,13 @@ namespace Hotline.Application.Exam.Service.ExamManages
|
|
|
|
|
|
startExamViewResponse.IsStart = true;
|
|
|
|
|
|
- startExamViewResponse.TimeSpan = examManage?.TimeSpan ?? 0;
|
|
|
+ if (examManage.ExamStatus== EExamStatus.NoStart)
|
|
|
+ {
|
|
|
+ examManage.ExamStatus = EExamStatus.Executing;
|
|
|
+ await examManageRepository.UpdateWithValidateAsync(examManage,cancellationToken);
|
|
|
+ }
|
|
|
+
|
|
|
+ startExamViewResponse.TimeSpan = examManage?.TimeSpan ?? 0;
|
|
|
startExamViewResponse.StartTime = examManage?.StartTime;
|
|
|
return startExamViewResponse;
|
|
|
}
|