public async Task <ListResultOutput <StudentEnabledExamTimeDto> > GetStudentCourseExamTimes(GetExamTimeEventInput input) { input.Start = input.Start.AddDays(-1); input.End = input.End.AddDays(1); var studentid = AbpSession.UserId ?? 0; var student = await _studentRepository.FirstOrDefaultAsync(x => x.Id == studentid); if (student == null) { throw new UserFriendlyException("用户不存在。"); } var studentSubjects = await _studentSubjectTimeRepository.GetAllListAsync(x => x.StudentId == studentid); var studentSubjectsIds = studentSubjects.Select(i => i.CourseId).ToList(); var studentCourses = await _courseRepository.GetAllListAsync(x => studentSubjectsIds.Contains(x.SubjectProjectId)); var studentCoursesIds = studentCourses.Select(i => i.Id).ToList(); var studentSelectedExamTime = await _studentCourseExamTimeRepository.GetAllListAsync( x => x.StudentId == studentid && !x.ExamTime.TeacherCourse.IsDeleted && !x.ExamTime.TeacherCourse.Course.IsDeleted); var studentSelectedExamTimeIds = studentSelectedExamTime.Select(x => x.ExamTimeId).ToList(); var query = _courseExamTimeRepository.GetAll(); var s = ((DateTime.Today.Year - student.EntryDate.Year) * 12 + (DateTime.Today.Month - student.EntryDate.Month)) / 12 + 1; var studentGrade = $",{s},"; query = query.Where(x => x.FitGrade == null || x.FitGrade == "" || x.FitGrade.Contains(studentGrade)); query = query.Where(x => studentCoursesIds.Contains(x.TeacherCourse.CourseId) && x.Start > input.Start && x.Start < input.End); var studentEnabledExamTimes = await Task.FromResult(query.Select(x => new { x.Id, x.TeacherCourse, x.Start, x.Address, x.Times, x.End, //EnabledSelecting = x.Times < x.TeacherCourse.Course.LimitNumbers, EnabledEndTime = x.End >= DateTime.Today, EnabledStartTime = x.Start <= DateTime.Now, IsSelected = studentSelectedExamTimeIds.Contains(x.Id) }).ToList()); var result = new ListResultOutput <StudentEnabledExamTimeDto> (Mapper.DynamicMap <List <StudentEnabledExamTimeDto> >(studentEnabledExamTimes)); return(result); }
public async Task <ListResultOutput <StudentCourseTimeDto> > GetTeacherCourseExamTimes(GetExamTimeEventInput input) { input.Start = input.Start.AddDays(-1); input.End = input.End.AddDays(1); var query = _courseExamTimeRepository.GetAll(); query = query.Where(x => !x.TeacherCourse.IsDeleted) .Where(x => !x.TeacherCourse.Course.IsDeleted) .Where(x => !x.TeacherCourse.Course.SubjectProject.IsDeleted) .Where(x => x.TeacherCourse.TeacherId == (AbpSession.UserId ?? 0)) .Where(x => x.Start > input.Start && x.Start < input.End); var courseTimes = await Task.FromResult(query.ToList()); return(new ListResultOutput <StudentCourseTimeDto>(courseTimes.MapTo <List <StudentCourseTimeDto> >())); }