public async Task <PagedResultOutput <GetSelectSubjectProjectsListDto> > GetSelectSubjectProjects(GetSubjectProjectsInput input)
        {
            var semester = await _semesterRepository.GetCurrentSemester();

            var totalcout = await _subjectRepository.CountAsync(x => x.Semester.Id == semester.Id && !x.IsDeleted);

            var query = _subjectRepository.GetAll();

            if (!string.IsNullOrEmpty(input.KeyWord))
            {
                query = query.Where(x =>
                                    x.Name.Contains(input.KeyWord) ||
                                    x.SubjectStyle.Contains(input.KeyWord));
            }


            query = query.Where(x => x.Semester.Id == semester.Id)
                    .OrderByDescending(x => x.IsCompulsory)
                    .ThenBy(x => x.CreationTime)
                    .Skip(input.Start).Take(input.PageSize);

            var subjects = (await Task.FromResult(query.ToList())).MapTo <List <GetSelectSubjectProjectsListDto> >();

            var studentSelectedSubjects = await _studentSubjectRepository.GetAllListAsync(
                x => x.SubjectProject.Semester.Id == semester.Id &&
                x.StudentId == (AbpSession.UserId ?? 0));

            var ids = studentSelectedSubjects.Select(x => x.CourseId).ToList();

            foreach (var subject in subjects.Where(subject => ids.Contains(subject.Id)))
            {
                subject.IsSelected = true;
            }

            return(new PagedResultOutput <GetSelectSubjectProjectsListDto>(totalcout, subjects));
        }
        //public async Task<ListResultOutput<SubjectProjectsListDto>> GetSubjectProjects(GetSubjectProjectsInput input)
        public async Task <PagedResultOutput <SubjectProjectsListDto> > GetSubjectProjects(GetSubjectProjectsInput input) //1
        {
            var totalcount = await _subjectRepository.CountAsync(x => !x.IsDeleted);                                      //1

            var query = _subjectRepository.GetAll();

            if (!string.IsNullOrEmpty(input.KeyWord))
            {
                query = query.Where(x =>
                                    x.Name.Contains(input.KeyWord) ||
                                    x.SubjectStyle.Contains(input.KeyWord));
            }


            query = query.OrderByDescending(x => x.IsCompulsory)
                    .ThenBy(x => x.CreationTime)
                                                             //.Take(input.PageSize).Skip(input.Start);
                    .Skip(input.Start).Take(input.PageSize); //1


            var subjects = await Task.FromResult(query.ToList());

            //return new ListResultOutput<SubjectProjectsListDto>(
            //    subjects.MapTo<List<SubjectProjectsListDto>>()
            return(new PagedResultOutput <SubjectProjectsListDto>(totalcount,                                       //1
                                                                  subjects.MapTo <List <SubjectProjectsListDto> >() //1
                                                                  ));
        }