Пример #1
0
        public PageListResultBO <RecruitmentSkillDTO> GetDataByPage(RecruitmentSkillSearchDTO searchParams, int pageIndex = 1, int pageSize = 20)
        {
            var queryResult = (from skill in recruitmentSkillRepository.GetAllAsQueryable()
                               select new RecruitmentSkillDTO()
            {
                Id = skill.Id,
                Title = skill.Title,
                Skills = skill.Skills
            });

            if (searchParams != null)
            {
                if (!string.IsNullOrEmpty(searchParams.QueryTitle))
                {
                    searchParams.QueryTitle = searchParams.QueryTitle.Trim().ToLower();
                    queryResult             = queryResult.Where(x => x.Title.Trim().ToLower().Contains(searchParams.QueryTitle));
                }

                if (!string.IsNullOrEmpty(searchParams.sortQuery))
                {
                    queryResult = queryResult.OrderBy(searchParams.sortQuery);
                }
                else
                {
                    queryResult = queryResult.OrderByDescending(x => x.Id);
                }
            }
            var result = new PageListResultBO <RecruitmentSkillDTO>();

            if (pageSize == -1)
            {
                var pagedList = queryResult.ToList();
                result.Count     = pagedList.Count;
                result.TotalPage = 1;
                result.ListItem  = pagedList;
            }
            else
            {
                var dataPageList = queryResult.ToPagedList(pageIndex, pageSize);
                result.Count     = dataPageList.TotalItemCount;
                result.TotalPage = dataPageList.PageCount;
                result.ListItem  = dataPageList.ToList();
            }

            if (result.ListItem.Any())
            {
                var groupSkillsDetail = recruitmentSkillDetailRepository.GetAll();
                result.ListItem.ForEach(x =>
                {
                    x.NumberOfSkills    = x.Skills.Split(',').Count();
                    var skillIds        = x.Skills.ToListNumber <long>();
                    x.GroupSkillDetails = groupSkillsDetail.Where(y => skillIds.Contains(y.Id))
                                          .Select(y => mapper.Map <RecruitmentSkillDetail, RecruitmentSkillDetailDTO>(y)).ToList();
                });
            }
            return(result);
        }