/// <summary> /// 手动组卷 /// </summary> /// <param name="examDto"></param> /// <returns></returns> public async Task <ExamDto> CreateExam(ExamDto examDto) { // 查询课程所属班级 var course = await _examRepository.Change <TbCourse>() .Entities.AsNoTracking() .Where(u => u.Id == examDto.CourseId) .Select(u => new TbCourse { Id = u.Id, Classes = u.Classes.Select(x => new TbClass { Id = x.Id }).ToList(), }).FirstOrDefaultAsync(); if (course == null) { throw Oops.Oh(CourseErrorCodes.c1501); } var examInsert = examDto.Adapt <TbExam>(); var examclasses = new List <TbExamclass>(); // 考试绑定班级 foreach (var classes in course.Classes) { var examclasse = new TbExamclass { ExamId = examInsert.Id, ClassesId = classes.Id, }; examclasses.Add(examclasse); } examInsert.Examclasses = examclasses; var exam = await _examRepository .InsertNowAsync(examInsert); var examEntity = exam.Entity; var examJobService = App.GetService <IExamJobService>(); if (examJobService != null) { await examJobService.AddExamJob(new TbExamjobs { ExamId = examEntity.Id, Status = 0 }); } return(examEntity.Adapt <ExamDto>()); }
// public async Task<ExamDto> AutoCreateExam(ExamDto examDto) // { // throw new System.NotImplementedException(); // } /// <summary> /// 更新试卷 /// </summary> /// <param name="examDto"></param> /// <returns></returns> public async Task <ExamDto> UpdateExam(ExamDto examDto) { var oldExam = await _examRepository .FirstOrDefaultAsync(u => u.Id == examDto.Id); if (oldExam == null) { throw Oops.Oh(ExamErrorCodes.s1901); } // 删除班级关联 await _examRepository .Change <TbExamclass>() .DeleteAsync( _examRepository .Change <TbExamclass>() .Where(u => u.ExamId == oldExam.Id, false).ToList() ); // 删除原试卷题目 await _examRepository .Change <TbExamquestion>() .DeleteAsync( _examRepository .Change <TbExamquestion>() .Where(u => u.ExamId == oldExam.Id, false).ToList() ); // 更新试卷 var exam = examDto.Adapt(oldExam); // 查询课程所属班级 var course = await _examRepository.Change <TbCourse>() .Entities.AsNoTracking() .Where(u => u.Id == exam.CourseId) .Select(u => new TbCourse { Id = u.Id, Classes = u.Classes.Select(x => new TbClass { Id = x.Id }).ToList(), }).FirstOrDefaultAsync(); if (course == null) { throw Oops.Oh(CourseErrorCodes.c1501); } var examclasses = new List <TbExamclass>(); // 考试绑定班级 foreach (var classes in course.Classes) { var examclasse = new TbExamclass { ExamId = exam.Id, ClassesId = classes.Id, }; examclasses.Add(examclasse); } exam.Examclasses = examclasses; // 考试任务更新 var examJobService = App.GetService <IExamJobService>(); if (examJobService != null) { await examJobService.UpdateExamJob(exam.Id, exam.StartTime); } await exam .UpdateExcludeAsync(u => u.CreateTime); return(exam.Adapt <ExamDto>()); }