// GET: RecruitmentSkillDetailArea/RecruitmentSkillDetail
        public ActionResult Index()
        {
            var searchModel = new RecruitmentSkillDetailSearchDTO();

            SessionManager.SetValue("RecruitmentSkillDetailSearch", new RecruitmentSkillDetailSearchDTO());
            RecruitmentSkillDetailIndexViewModel viewModel = new RecruitmentSkillDetailIndexViewModel()
            {
                GroupData     = recruitmentSkillDetailService.GetDataByPage(searchModel),
                GroupDataType = ConstantExtension.GetDropdownData <DataTypeConstant>()
            };

            return(View(viewModel));
        }
        public JsonResult SearchData(FormCollection form)
        {
            var searchModel = SessionManager.GetValue("RecruitmentSkillDetailSearch") as RecruitmentSkillDetailSearchDTO;

            if (searchModel == null)
            {
                searchModel          = new RecruitmentSkillDetailSearchDTO();
                searchModel.pageSize = 20;
            }

            searchModel.QueryName = form["QUERY_NAME"];
            searchModel.QueryType = form["QUERY_TYPE"].ToNullableNumber <int>();
            SessionManager.SetValue("RoleSearch", searchModel);
            var data = recruitmentSkillDetailService.GetDataByPage(searchModel, 1);

            return(Json(data));
        }
        public JsonResult GetData(int indexPage, string sortQuery, int pageSize)
        {
            var searchModel = SessionManager.GetValue("RecruitmentSkillDetailSearch") as RecruitmentSkillDetailSearchDTO;

            if (searchModel == null)
            {
                searchModel = new RecruitmentSkillDetailSearchDTO();
            }
            if (!string.IsNullOrEmpty(sortQuery))
            {
                searchModel.sortQuery = sortQuery;
            }
            if (pageSize > 0)
            {
                searchModel.pageSize = pageSize;
            }
            SessionManager.SetValue("RecruitmentSkillDetailSearch", searchModel);
            var data = recruitmentSkillDetailService.GetDataByPage(searchModel, indexPage, pageSize);

            return(Json(data));
        }
        public PageListResultBO <RecruitmentSkillDetailDTO> GetDataByPage(RecruitmentSkillDetailSearchDTO searchParams, int pageIndex = 1, int pageSize = 20)
        {
            var queryResult = (from skill in recruitmentSkillDetailRepository.GetAllAsQueryable()
                               join categoryData in categoryRepository.GetAllAsQueryable()
                               on skill.CategoryId equals categoryData.Id
                               into groupSkilCategory
                               from g1 in groupSkilCategory.DefaultIfEmpty()
                               select new RecruitmentSkillDetailDTO()
            {
                Id = skill.Id,
                Name = skill.Name,
                DataType = skill.DataType,
                AbsoluteNumber = skill.AbsoluteNumber,
                CategoryId = skill.CategoryId,
                DataTypeValue = skill.DataType == DataTypeConstant.CATEGORY ? g1.GroupName : (skill.DataType == DataTypeConstant.NUMBER ? skill.AbsoluteNumber.ToString() : string.Empty)
            });

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

                if (searchParams.QueryType != null)
                {
                    queryResult = queryResult.Where(x => x.DataType == searchParams.QueryType);
                }

                if (!string.IsNullOrEmpty(searchParams.sortQuery))
                {
                    queryResult = queryResult.OrderBy(searchParams.sortQuery);
                }
                else
                {
                    queryResult = queryResult.OrderByDescending(x => x.Id);
                }
            }

            var result = new PageListResultBO <RecruitmentSkillDetailDTO>();

            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 categoryData = categoryDataRepository.GetAll();
                result.ListItem.ForEach(x =>
                {
                    x.DataTypeName = ConstantExtension.GetName <DataTypeConstant>(x.DataType.ToString());
                    if (x.DataType == DataTypeConstant.CATEGORY && x.CategoryId != null)
                    {
                        x.GroupCategoryData = categoryData.Where(y => y.GroupId == x.CategoryId);
                    }
                });
            }
            return(result);
        }