示例#1
0
        public async Task <IActionResult> Index(string keyword, string categoryId, int pageIndex = 1, int pageSize = 20)
        {
            var token       = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]);
            var allcategory = await _categoryService.GetAll();  // to show categories

            var examPagingRequest = new ExamPagingRequest()
            {
                keyword   = keyword,
                PageIndex = pageIndex,
                PageSize  = pageSize
            };

            if (categoryId != null)
            {
                examPagingRequest.CategoryID = Int32.Parse(categoryId);
            }
            var allExams = await _examService.GetAllPaging(examPagingRequest, token, User.FindFirst("UserID").Value);

            // get all exams paged - about 8 exams per page
            var allExamsNotPaged = await _examService.GetAll(token, User.FindFirst("UserID").Value);

            var commonExams = allExamsNotPaged.data.OrderByDescending(e => e.NumOfAttemps).Take(8).ToList();
            var newestExams = allExamsNotPaged.data.OrderByDescending(e => e.TimeCreated).Take(8).ToList();

            // about 8 exams having most attemp
            //var allNewExams = // about 8 exams that time created newest
            ViewData["commonExams"] = commonExams;
            ViewData["newestExams"] = newestExams;
            ViewData["allExams"]    = allExams.data;
            ViewData["Title"]       = "HOME";
            ViewBag.Categories      = allcategory;
            return(View());
        }
        public async Task <IActionResult> Index(string keyword, int pageIndex = 1, int pageSize = 10)
        {
            string accessToken = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]);

            try
            {
                var model = new ExamPagingRequest()
                {
                    keyword   = keyword,
                    PageIndex = pageIndex,
                    PageSize  = pageSize
                };
                var allExam = await _examService.GetAllPaging(model, accessToken);

                if (allExam.msg != null)
                {
                    ViewData["msg"] = allExam.msg;
                    return(View());
                }
                allExam.data.Items = allExam.data.Items.OrderByDescending(e => e.TimeCreated).ToList();
                return(View(allExam.data));
            }
            catch (Exception)
            {
                return(View());
            }
        }
示例#3
0
        public async Task <ResponseBase <PagedResult <Exam> > > GetAllPaging(ExamPagingRequest model, string accessToken, string userID)
        {
            HttpClient _httpClient = _httpClientFactory.CreateClient();

            _httpClient.BaseAddress = new Uri(ConstStrings.BASE_URL_API);
            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/exams/Paged?userID={userID}", httpContent);

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

                ResponseBase <PagedResult <Exam> > lstExam = JsonConvert.DeserializeObject <ResponseBase <PagedResult <Exam> > >(body);
                lstExam.success = true;
                return(lstExam);
            }
            else
            {
                return(null);
            }
        }
        public async Task <IActionResult> AdminGetExamsPaged(ExamPagingRequest model)
        {
            var exams = await _examAdminService.GetAllPaging(model);

            return(Ok(new ResponseBase <PagedResult <Exam> >()
            {
                data = exams
            }));
        }
        public async Task <IActionResult> UserGetOwnedPaging(ExamPagingRequest model, [FromQuery] int userID)
        {
            var exams = await _examUserService.GetOwnedPaging(model, userID);

            return(Ok(new ResponseBase <PagedResult <Exam> >()
            {
                data = exams
            }));
        }
示例#6
0
        public async Task <ResponseBase <PagedResult <Exam> > > GetAllPaging(ExamPagingRequest 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/Exams/Admin/Paged", httpContent);

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

                ResponseBase <PagedResult <Exam> > exams = JsonConvert.DeserializeObject <ResponseBase <PagedResult <Exam> > >(resultContent);
                return(exams);
            }
            else
            {
                return(null);
            }
        }
示例#7
0
        public async Task <PagedResult <Exam> > GetOwnedPaging(ExamPagingRequest model, int userID)
        {
            var allExams = _db.Exams
                           .Where(e => e.isActive == true && e.OwnerID == userID);

            // check keyword de xem co dang tim kiem hay phan loai ko
            // sau do gan vao Query o tren
            if (model.CategoryID > 0)
            {
                allExams = allExams.Where(e => e.CategoryID == model.CategoryID);
            }
            if (!string.IsNullOrEmpty(model.keyword))
            {
                allExams = allExams.Where(e =>
                                          e.ExamName.ToLower().Contains(model.keyword.ToLower()) ||
                                          e.Owner.UserName.ToLower().Contains(model.keyword.ToLower()));
            }
            allExams = allExams.OrderBy(e => e.ExamName);
            // get total row from query
            int totalrecord = allExams.Count();
            // get so trang
            int pageCount = 0;

            if (totalrecord > model.PageSize)
            {
                if (totalrecord % model.PageSize == 0)
                {
                    pageCount = totalrecord / model.PageSize;
                }
                else
                {
                    pageCount = totalrecord / model.PageSize + 1;
                }
            }
            // get data and paging
            var data = await allExams
                       .Skip((model.PageIndex - 1) *model.PageSize)
                       .Take(model.PageSize)
                       .Select(u => new Exam()
            {
                ID           = u.ID,
                CategoryID   = u.CategoryID,
                ExamName     = u.ExamName,
                ImageURL     = u.ImageURL,
                NumOfAttemps = u.NumOfAttemps,
                OwnerID      = u.OwnerID,
                Time         = u.Time,
                TimeCreated  = u.TimeCreated,
                isActive     = u.isActive,
                isPrivate    = u.isPrivate,
                Category     = u.Category,
                Owner        = u.Owner,
                Questions    = u.Questions
            })
                       .Include(e => e.Category)
                       .Include(e => e.Owner)
                       .Include(e => e.Questions)
                       .ToListAsync();

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