Beispiel #1
0
        public async Task <IActionResult> Index(string keyword, int pageIndex = 1, int pageSize = 10)
        {
            ViewData["msg"] = "";
            try
            {
                var model = new QuestionPagingRequest()
                {
                    keyword   = keyword,
                    PageIndex = pageIndex,
                    PageSize  = pageSize
                };
                var token        = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]);
                var allQuestions = await _questionManage.GetAllPaging(model, token);

                if (allQuestions.msg != null)
                {
                    ViewData["msg"] = allQuestions.msg;
                    return(View());
                }
                return(View(allQuestions.data));
            }
            catch (Exception)
            {
                ViewData["msg"] = "Lỗi hệ thống. Vui lòng đăng nhập lại.";
                return(View());
            }
        }
Beispiel #2
0
        public async Task <IActionResult> GetAllPaging(QuestionPagingRequest model)
        {
            var allQuestions = await _questionService.GetAllPaging(model);

            if (allQuestions != null)
            {
                return(Ok(new ResponseBase <PagedResult <Question> >()
                {
                    data = allQuestions
                }));
            }
            return(Ok(new ResponseBase <PagedResult <Question> >()
            {
                msg = "Lỗi hệ thống"
            }));
        }
        public async Task <IActionResult> DoingQuiz([FromQuery] int examID, int pageIndex = 1)
        {
            var token         = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]);
            var pagingRequest = new QuestionPagingRequest()
            {
                ExamID    = examID,
                PageIndex = pageIndex,
                PageSize  = 5
            };
            var res = await _questionService.GetByExamPaging(pagingRequest, token);


            if (res != null && res.data != null)
            {
                var examData = res.data;
                if (examData.Items.Count == 0 || examData.Items == null)
                {
                    return(RedirectToAction("Index", "Home"));
                }
                var time = examData.Items.FirstOrDefault().Exam.Time;
                if (time == 0)
                {
                    ViewBag.min = null;
                    ViewBag.sec = null;
                }
                else
                {
                    ViewBag.min = time / 60;
                    ViewBag.sec = time % 60;
                }
                Global.results = new List <Result>();
                var userID = Int32.Parse(User.FindFirst("UserId").Value);
                foreach (var i in examData.Items)
                {
                    Global.results.Add(new Result()
                    {
                        UserID = userID, QuestionID = i.ID, OptChoose = "N"
                    });
                }
                Global.questions = examData.Items;
                return(View(examData));
            }
            return(View());
        }
        public async Task <ResponseBase <PagedResult <Question> > > GetAllPaging(QuestionPagingRequest model, string accessToken)
        {
            if (accessToken != null)
            {
                _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
            }
            var json        = JsonConvert.SerializeObject(model);
            var httpContent = new StringContent(json, Encoding.UTF8, "application/json");
            var response    = await _httpClient.PostAsync("api/Questions/Paged", httpContent);

            if (response.IsSuccessStatusCode)
            {
                var body = await response.Content.ReadAsStringAsync();

                ResponseBase <PagedResult <Question> > pagedResult = JsonConvert.DeserializeObject <ResponseBase <PagedResult <Question> > >(body);
                return(pagedResult);
            }
            else
            {
                return(null);
            }
        }
        public async Task <IActionResult> ShowQuestions(int id, string keyword, int pageIndex = 1, int pageSize = 10)
        {
            ViewData["SubTitle"] = "";
            ViewData["msg"]      = "";
            ViewData["examID"]   = id;
            try
            {
                var token    = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]);
                var examName = await _examService.GetByID(id, token);

                ViewData["SubTitle"] = examName != null?"Đề thi: " + examName.data.ExamName:"";
                var model = new QuestionPagingRequest()
                {
                    ExamID    = id,
                    keyword   = keyword,
                    PageIndex = pageIndex,
                    PageSize  = pageSize
                };
                var allQuestions = await _questionManage.GetAllPaging(model, token);

                if (allQuestions.msg != null)
                {
                    ViewData["msg"] = allQuestions.msg;
                    return(View());
                }
                if (allQuestions.data.Items != null)
                {
                    allQuestions.data.Items = allQuestions.data.Items.Where(q => q.ExamID == id).ToList();
                }
                return(View(allQuestions.data));
            }
            catch (Exception)
            {
                ViewData["msg"] = "Lỗi hệ thống. Vui lòng đăng nhập lại.";
                return(View());
            }
        }
        public async Task <PagedResult <Question> > GetAllPaging(QuestionPagingRequest model)
        {
            var allQuestions = await _db.Questions.Where(q => q.isActive == true && q.Exam.isActive == true).Include(q => q.Results).Include(q => q.Exam).ToListAsync();

            // check keyword de xem co dang tim kiem hay phan loai ko
            // sau do gan vao Query o tren
            if (!string.IsNullOrEmpty(model.keyword))
            {
                allQuestions = allQuestions.Where(q => q.QuesContent.Contains(model.keyword) ||
                                                  q.Exam.ExamName.Contains(model.keyword)
                                                  ).ToList();
            }
            if (model.ExamID > 0)
            {
                allQuestions = allQuestions.Where(q => q.ExamID == model.ExamID).ToList();
            }
            // get total row from query
            int totalrecord = allQuestions.Count;
            // get so trang
            int soTrang = 0;

            if (totalrecord > model.PageSize)
            {
                if (totalrecord % model.PageSize == 0)
                {
                    soTrang = totalrecord / model.PageSize;
                }
                else
                {
                    soTrang = totalrecord / model.PageSize + 1;
                }
            }
            // get data and paging
            var data = allQuestions.Skip((model.PageIndex - 1) * model.PageSize)
                       .Take(model.PageSize)
                       .Select(q => new Question()
            {
                ID          = q.ID,
                QuesContent = q.QuesContent,
                Answer      = q.Answer,
                ExamID      = q.ExamID,
                ImgURL      = q.ImgURL,
                isActive    = q.isActive,
                Option1     = q.Option1,
                Option2     = q.Option2,
                Option3     = q.Option3,
                Option4     = q.Option4,
                STT         = q.STT,
                Exam        = q.Exam,
                Results     = q.Results
            })
                       .ToList();

            // return
            return(new PagedResult <Question>()
            {
                Items = data,
                TotalRecords = totalrecord,
                TotalPages = soTrang,
                PageIndex = model.PageIndex,
                PageSize = model.PageSize
            });
        }