Example #1
0
        /// <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>());
        }
Example #2
0
        // 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>());
        }