Ejemplo n.º 1
0
 public static string GetDisplayName(this RQMode model)
 {
     if (model == RQMode.Read)
     {
         return("閱讀");
     }
     if (model == RQMode.Exam)
     {
         return("測驗");
     }
     return("");
 }
Ejemplo n.º 2
0
 public static RQMode ToRQModeType(this int val)
 {
     try
     {
         if (Enum.IsDefined(typeof(RQMode), val))
         {
             RQMode type = (RQMode)val;
             return(type);
         }
         return(RQMode.Unknown);
     }
     catch (Exception ex)
     {
         return(RQMode.Unknown);
     }
 }
Ejemplo n.º 3
0
        public async Task <ActionResult> Index(int mode, int recruit)
        {
            var yearRecruits = _dataService.FetchYearRecruits();

            RQMode selectMode = mode.ToRQModeType();

            if (selectMode == RQMode.Unknown)
            {
                //初次載入頁面
                var rqIndexModel = new RQIndexViewModel();
                rqIndexModel.LoadModeOptions();

                rqIndexModel.YearRecruits = yearRecruits.ToList();

                //考試科目
                var examSubjects = await _subjectsService.FetchExamSubjectsAsync();

                rqIndexModel.LoadSubjectOptions(examSubjects);

                return(Ok(rqIndexModel));
            }


            if (selectMode != RQMode.Read)
            {
                ModelState.AddModelError("RQMode", "僅支援閱讀模式");
                return(BadRequest(ModelState));
            }

            var recruitsViews = yearRecruits.SelectMany(item => item.SubItems);

            var selectedRecruitView = recruitsViews.FirstOrDefault(x => x.Id == recruit);

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

            //取得題目與解析的附件
            var types = new List <PostType> {
                PostType.Option, PostType.Resolve
            };
            var attachments = (await _attachmentsService.FetchByTypesAsync(types)).ToList();

            var model = new RQViewModel();

            var parts = selectedRecruitView.SubItems;

            if (parts.HasItems())
            {
                foreach (var part in parts)
                {
                    var partView = await InitRQPartViewModelAsync(part, attachments);

                    model.Parts.Add(partView);
                }
            }
            else
            {
                var partView = await InitRQPartViewModelAsync(selectedRecruitView, attachments);

                model.Parts.Add(partView);
            }

            model.LoadTitle();

            return(Ok(model));
        }