public ListResultDto <TeacherCourseArrangeListDto> GetArranages(TeacherCourseArrangeInput input)
        {
            var res     = GetArrangesByCondition(input);
            var mapData = res.MapTo <List <TeacherCourseArrangeListDto> >();

            SetOtherExtendData(mapData);
            return(new ListResultDto <TeacherCourseArrangeListDto>(mapData));
        }
        public PagedResultDto <TeacherCourseArrangeListDto> GetPagedArranges(TeacherCourseArrangeInput input)
        {
            var query = GetArrangesByCondition(input);
            var count = query.Count();

            input.SkipCount      = (input.PIndex ?? 1 - 1) * input.PSize ?? 10;
            input.MaxResultCount = input.PSize ?? 10;
            var list = query.PageBy(input).ToList();//ABP提供了扩展方法PageBy分页方式

            return(new PagedResultDto <TeacherCourseArrangeListDto>(count, list.MapTo <List <TeacherCourseArrangeListDto> >()));
        }
        private IQueryable <TeacherCourseArrange> GetArrangesByCondition(TeacherCourseArrangeInput input)
        {
            //WhereIf 是ABP针对IQueryable<T>的扩展方法 第一个参数为条件,第二个参数为一个Predicate 当条件为true执行后面的条件过滤
            var query = _teacherCourseArrangeRepository.GetAll()
                        .WhereIf(!input.Id.IsNullOrEmpty(), o => o.Id == input.Id)
                        .WhereIf(input.TeacherId > 0, o => o.TeacherId == input.TeacherId)
                        .WhereIf(!input.ClassType.IsNullOrEmpty(), t => t.ClassType == input.Filter)
                        .WhereIf(input.BeginTime != null, o => o.BeginTime.Value > input.BeginTime)
                        .WhereIf(input.BeginTime != null && input.EndTime != null, o => (input.BeginTime <= o.BeginTime.Value && o.EndTime.Value <= input.EndTime))
                        .Where(o => o.IsDeleted == false);

            query = string.IsNullOrEmpty(input.Sorting)
                        ? query.OrderBy(t => t.BeginTime)
                        : query.OrderBy(t => input.Sorting);
            return(query);
        }
        public List <TeacherCourseArrange2SignInOutput> GetTeacherCourseArrange2SignIn(TeacherCourseArrangeInput input)
        {
            var res = GetArrangesByCondition(input).ToList();
            List <TeacherCourseArrange> toRemove = new List <TeacherCourseArrange>();

            foreach (var item in res)
            {
                var hasSign = _signInRepository.GetAllList(s => s.CourseArranges == item.Id).Count() > 0;
                if (hasSign)
                {
                    toRemove.Add(item);
                }
            }
            toRemove.ForEach(o =>
            {
                res.Remove(o);
            });

            List <TeacherCourseArrange2SignInOutput> output = new List <TeacherCourseArrange2SignInOutput>();

            foreach (var item in res)
            {
                output.Add(new TeacherCourseArrange2SignInOutput()
                {
                    TimeDuration = string.Format("{0}--{1}", item.BeginTime.Value.ToString("HH:mm"), item.EndTime.Value.ToString("HH:mm")),
                    Id           = item.Id
                });
            }
            return(output);
        }
 public TeacherCourseArrange GetArranage(TeacherCourseArrangeInput input)
 {
     return(_teacherCourseArrangeRepository.Get(input.Id));
 }