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