public async Task <ActionResult> Index(int recruit)
        {
            Recruit selectedRecruit = _recruitsService.GetById(recruit);

            if (selectedRecruit == null)
            {
                ModelState.AddModelError("recruit", "年度不存在");
                return(BadRequest(ModelState));
            }

            if (selectedRecruit.RecruitEntityType == RecruitEntityType.Year)
            {
                return(Ok(new List <Question>().GetPagedList(_mapper)));
            }

            var allSubjects = await _subjectsService.FetchAsync();

            var subject = _recruitsService.FindSubject(selectedRecruit, allSubjects);

            if (subject == null)
            {
                ModelState.AddModelError("subject", "科目不存在");
                return(BadRequest(ModelState));
            }

            _subjectsService.LoadSubItems(subject);

            var questions = await _questionsService.FetchByRecruitAsync(selectedRecruit, subject);

            List <Term>       allTerms    = null;
            List <Recruit>    allRecruits = null;
            List <UploadFile> attachments = null;

            if (questions.HasItems())
            {
                attachments = (await _attachmentsService.FetchAsync(PostType.Option)).ToList();
                allTerms    = (await _termsService.FetchAllAsync()).ToList();
            }

            var pageList = questions.GetPagedList(_mapper, allRecruits, attachments, allTerms);

            foreach (var item in pageList.ViewList)
            {
                item.Options = item.Options.OrderByDescending(o => o.Correct).ToList();
            }


            return(Ok(pageList));
        }
        public async Task <ActionResult> Update(int id, [FromBody] RecruitViewModel model)
        {
            var existingEntity = _recruitsService.GetById(id);

            if (existingEntity == null)
            {
                return(NotFound());
            }

            await ValidateRequestAsync(model);

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (model.Active)
            {
                if (existingEntity.Active == false)
                {
                    model.Order = 0;
                }
            }
            else
            {
                if (existingEntity.Active)
                {
                    model.Order = -1;
                }
            }

            var recruit = model.MapEntity(_mapper, CurrentUserId);

            await _recruitsService.UpdateAsync(existingEntity, recruit, recruit.SubItems);

            return(Ok());
        }