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()); } }
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 })); }
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); } }
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 }); }