public async Task <IActionResult> Edit(int id) { ViewData["msg"] = ""; try { string accessToken = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var res = await _examService.GetByID(id, accessToken); if (res.data == null || res.msg != null) { ViewData["msg"] = res.msg; } var exam = res.data; var model = new ExamModel() { ID = exam.ID, ExamName = exam.ExamName, ImageURL = exam.ImageURL, CategoryID = exam.CategoryID, isActive = exam.isActive, isPrivate = exam.isPrivate, Time = exam.Time }; return(View(model)); } catch (Exception) { ViewData["msg"] = "Lỗi hệ thống. Thử lại sau."; return(View()); } }
public async Task <IActionResult> Create(ExamModel model) { ViewData["msg"] = ""; if (string.IsNullOrEmpty(model.ExamName)) { return(View(model)); } string accessToken = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var allExam = await _examService.Create( model, Int32.Parse(User.FindFirst("UserID").Value), accessToken); if (allExam != null && allExam.msg != null) { ViewData["msg"] = allExam.msg; return(View()); } else if (allExam == null) { ViewData["msg"] = "Error"; return(View()); } else { ViewData["msg"] = "Thêm mới thành công"; 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 <IActionResult> Edit(int id, ExamModel model) { ViewData["msg"] = ""; try { if (id != model.ID) { ViewData["msg"] = "Không hợp lệ"; return(View(model)); } if (string.IsNullOrEmpty(model.ExamName)) { ViewData["msg"] = "Không được bỏ trống"; return(View(model)); } var token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var newExam = await _examService.Update(id, model, token); if (newExam.msg != null) { ViewData["msg"] = newExam.msg; return(View()); } ViewData["msg"] = "Cập nhật thành công"; return(View()); } catch (Exception) { ViewData["msg"] = "Lỗi hệ thống. Thử lại sau."; return(View()); } }
public async Task <ActionResult> Edit(int id, Category model) { ViewData["msg"] = ""; try { if (id != model.ID) { ViewData["msg"] = "Không hợp lệ"; return(View(model)); } if (string.IsNullOrEmpty(model.CategoryName)) { ViewData["msg"] = "Tên chủ đề không được bỏ trống"; return(View(model)); } var token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); await _categoryService.Update(id, model, token); return(RedirectToAction("Index")); } catch (Exception) { return(RedirectToAction("Index")); } }
public async Task <ActionResult> RestoreUser(int id) { try { var token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var lockUserResult = await _userManage.RestoreUser(id, token); if (lockUserResult.msg == null) { return(Json(new { statusChanged = true })); } else { return(Json(new { statusChanged = false })); } } catch { return(Json(new { statusChanged = false })); } }
public async Task <IActionResult> GetAll() { var token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var result = await _favoriteExamService.GetExams(int.Parse(User.FindFirst("UserID").Value), token); return(Json(new { success = result })); }
public async Task <ActionResult> Create(Category model) { ViewData["msg"] = ""; try { if (string.IsNullOrEmpty(model.CategoryName)) { ViewData["msg"] = "Tên chủ đề không được bỏ trống"; return(View(model)); } var token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var result = await _categoryService.Create(model, token); if (result.msg != null) { ViewData["msg"] = result.msg; return(View(model)); } else if (result.data != null) { ViewData["msg"] = "Tạo mới thành công"; return(View(model)); } else { ViewData["msg"] = "Lỗi không xác định"; return(View(model)); } } catch (Exception) { ViewData["msg"] = "Something went wrong. Try again."; return(View(model)); } }
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) { 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()); } }
public async Task <ActionResult> Edit(int id, UserViewModel model) { try { var access_token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); if (model.AvatarPhoto != null) { string folder = "images/cover/user/"; var extensions = model.AvatarPhoto.FileName.Split('.'); var extension = extensions[extensions.Length - 1]; folder += model.Id.ToString() + "." + extension; model.AvatarURL = "/" + folder; string serverFolder = Path.Combine(_webHostEnvironment.WebRootPath, folder); var copyImageStream = new FileStream(serverFolder, FileMode.Create); model.AvatarPhoto.CopyTo(copyImageStream); copyImageStream.Close(); } model.AvatarPhoto = null; var userUpdated = await _userManage.UpdateUserInfo(id, model, access_token); return(RedirectToAction("Details", "Users", new { id = userUpdated.data.Id })); } catch { ViewData["msg"] = "Cập nhật thất bại"; return(View(model)); } }
public async Task <IActionResult> Delete([FromBody] int examId) { var token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var result = await _favoriteExamService.Delete(int.Parse(User.FindFirst("UserID").Value), examId, token); return(Json(new { success = result })); }
public async Task <IActionResult> Create([FromQuery] QuestionModel model) { ViewData["msg"] = ""; if (!ModelState.IsValid) { return(RedirectToAction("ShowQuestions", "Exams", new { id = model.ExamID })); } string accessToken = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var newQuestion = await _questionManage.Create(model, accessToken); if (newQuestion != null && newQuestion.msg != null) { ViewData["msg"] = newQuestion.msg; } else if (newQuestion == null) { ViewData["msg"] = "Thêm mới thất bại"; } else { ViewData["msg"] = "Thêm mới thành công"; } //return Json(new { msg = "OK" }); return(RedirectToAction("ShowQuestions", "Exams", new { id = model.ExamID })); }
public async Task <IActionResult> ChangePassword(ChangePasswordModel model) { ViewData["success"] = false; if (!ModelState.IsValid) { return(View()); } var userID = User.FindFirst("UserID").Value; var accessToken = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var changeResult = await _accountService.ChangePassword(userID, model, accessToken); if (changeResult != null) { if (changeResult.msg != null) { ViewData["msg"] = changeResult.msg; } ViewData["msg"] = "Đổi mật khẩu thành công"; ViewData["success"] = true; HttpContext.Response.Cookies.Delete("access_token_cookie"); HttpContext.Response.Cookies.Delete("refresh_token_cookie"); await HttpContext.SignOutAsync(); return(View()); } else { ViewData["msg"] = "Lỗi máy chủ. Vui lòng thử lại."; return(View()); } }
public async Task <IActionResult> DeleteMany([FromBody] int[] s) { try { var token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); if (s.Length == 0) { return(Json(new { deleteResult = false })); } DeleteManyModel <int> temp = new DeleteManyModel <int>(); temp.ListItem = new List <int>(); temp.ListItem.AddRange(s); var result = await _questionManage.DeleteMany(temp, token); if (result.msg != null) { return(Json(new { deleteResult = false })); } return(Json(new { deleteResult = true })); } catch { //return RedirectToAction("Index"); return(Json(new { deleteResult = false })); } }
public async Task <IActionResult> Update([FromQuery] QuestionModel model) { ViewData["msg"] = ""; string accessToken = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var updateResult = await _questionManage.Update(model, accessToken); return(RedirectToAction("ShowQuestions", "Exams", new { id = model.ExamID })); }
public async Task <IActionResult> Login(LoginModel model, string ReturnUrl) { if (!ModelState.IsValid) { return(View(model)); } // jwt got from authentication API var result = await _accountService.Authenticate(model); if (!result.success) { ViewData["msg"] = result.msg; return(View(model)); } else { var userPrincipal = _accountService.ValidateToken(result.data.Access_Token); var authProperties = new AuthenticationProperties { // set false -> tạo ra cookie phiên -> thoát trình duyệt cookie bị xoá // set true -> cookie có thời hạn đc set trong Startup.cs và ko bị mất khi thoát IsPersistent = model.Rememberme }; await HttpContext.SignInAsync(userPrincipal, authProperties); if (model.Rememberme) { HttpContext.Session.SetInt32("IsPersistent", 1); HttpContext.Response.Cookies.Append("access_token_cookie", CookieEncoder.EncodeToken(result.data.Access_Token), new CookieOptions { Expires = DateTime.UtcNow.AddDays(3), HttpOnly = true, Secure = true }); HttpContext.Response.Cookies.Append("refresh_token_cookie", CookieEncoder.EncodeToken(result.data.Refresh_Token), new CookieOptions { Expires = DateTime.UtcNow.AddDays(7), HttpOnly = true, Secure = true }); } else { HttpContext.Session.SetInt32("IsPersistent", 0); HttpContext.Response.Cookies.Append("access_token_cookie", CookieEncoder.EncodeToken(result.data.Access_Token), new CookieOptions { HttpOnly = true, Secure = true }); HttpContext.Response.Cookies.Append("refresh_token_cookie", CookieEncoder.EncodeToken(result.data.Refresh_Token), new CookieOptions { HttpOnly = true, Secure = true }); } if (!string.IsNullOrEmpty(ReturnUrl)) { return(Redirect(ReturnUrl)); } return(RedirectToAction("Index", "Home")); } }
public async Task <IActionResult> AttempQuizOptions([FromQuery] int examID) { var token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var exam = await _examService.GetByID(examID, token, User.FindFirst("UserID").Value); if (exam != null && exam.data != null) { return(PartialView(exam.data)); } return(PartialView()); }
public async Task <IActionResult> PreviewExam(string examID) { var token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var exam = await _examService.GetByID(Int32.Parse(examID), token, User.FindFirst("UserID").Value); if (exam != null && exam.msg == null && exam.data != null) { ViewData["examName"] = exam.data.ExamName; return(View(exam.data.Questions.Where(q => q.isActive).ToList())); } return(View()); }
public async Task <IActionResult> ShowProfile() { var id = User.FindFirst("UserID"); var access_token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var user = await _accountService.GetUserInfo(Int32.Parse(id.Value), access_token); if (user.data != null) { return(View(user.data)); } return(View()); }
public async Task <IActionResult> Index() { var token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var examResponse = await _examService.GetOwned(token, User.FindFirst("UserID").Value); if (examResponse != null && examResponse.data != null) { return(View(examResponse.data)); } ViewData["msg"] = "Oh sorry!! Something went wrong"; return(View()); }
// GET: Users/Details/5 public async Task <ActionResult> Details(int id) { try { var access_token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var user = await _accountService.GetUserInfo(id, access_token); return(View(user.data)); } catch (Exception) { return(RedirectToAction("Index", "Users")); } }
public async Task <ActionResult> Delete(int id) { try { var token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var result = await _categoryService.Delete(id, token); return(RedirectToAction("Index")); //return Json(new { deleteResult = result }); } catch { return(RedirectToAction("Index")); //return Json(new { deleteResult = false }); } }
public async Task <IActionResult> ManageQuestions(int examID) { var lstCategory = await _categoryService.GetAll(); ViewData["lstCategory"] = lstCategory.data; var token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var exam = await _examService.GetByID(examID, token, User.FindFirst("UserID").Value); if (exam != null && exam.msg == null && exam.data != null) { ViewData["examID"] = exam.data.ID; ViewData["examName"] = exam.data.ExamName.ToUpper(); return(View(exam.data.Questions.Where(q => q.isActive).ToList())); } ViewData["msg"] = "Sorry!! Something went wrong. Please try again."; return(View()); }
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 <IActionResult> UpdateProfile(int id) { var userID = Int32.Parse(User.FindFirst("UserID").Value); if (id != userID) { // access denied return(View("Views/Account/AccessDenied.cshtml")); } var access_token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var user = await _accountService.GetUserInfo(userID, access_token); if (user != null) { ViewData["uid"] = userID; return(View(user.data)); } return(View(new UserViewModel())); }
public async Task <IActionResult> Create(ExamModel model) { var token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var lstCategory = await _categoryService.GetAll(); ViewData["lstCategory"] = lstCategory.data; if (!ModelState.IsValid) { return(View(model)); } var newExam = await _examService.Create(model, Int32.Parse(User.FindFirst("UserID").Value), token); if (newExam != null && newExam.data != null) { ViewData["msg"] = "Successfully"; return(View()); } ViewData["msg"] = "Create failed"; return(View()); }
// GET: Users public async Task <ActionResult> Index(string keyword, int pageIndex = 1, int pageSize = 10) { try { //List<UserViewModel> lstAllUser = new List<UserViewModel>(); var model = new UserPagingRequest() { keyword = keyword, PageIndex = pageIndex, PageSize = pageSize }; var token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var listUserResult = await _userManage.GetListUserPaged(model, token); return(View(listUserResult.data)); } catch (Exception) { return(RedirectToAction("Index", "Home")); } }
public async Task <IActionResult> OnPostUpdateProfile(int id, UserViewModel model) { if (!ModelState.IsValid) { return(RedirectToAction(nameof(UpdateProfile), new { id })); } if (model.AvatarPhoto != null) { var filePath = Path.GetTempFileName(); using (var stream = System.IO.File.Create(filePath)) { await model.AvatarPhoto.CopyToAsync(stream); } model.AvatarURL = UploadImageService.Instance().Upload(model.UserName, filePath); model.AvatarPhoto = null; } var userID = Int32.Parse(User.FindFirst("UserID").Value); if (id != userID) { return(Redirect("/Views/Account/AccessDenied.cshtml")); } var access_token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var result = await _accountService.UpdateProfile(model, access_token); // success if (result != null && result.data != null) { return(RedirectToAction(nameof(ShowProfile))); } // fail ViewData["msg"] = "Update failed"; return(RedirectToAction(nameof(UpdateProfile), new { id = id })); }
public async Task <ActionResult> Create(UserViewModel model) { if (!ModelState.IsValid) { return(View(model)); } try { if (model.AvatarPhoto != null) { string folder = "images/cover/user/"; var extensions = model.AvatarPhoto.FileName.Split('.'); var extension = extensions[extensions.Length - 1]; folder += model.Id.ToString() + "." + extension; model.AvatarURL = "/" + folder; string serverFolder = Path.Combine(_webHostEnvironment.WebRootPath, folder); var copyImageStream = new FileStream(serverFolder, FileMode.Create); model.AvatarPhoto.CopyTo(copyImageStream); copyImageStream.Close(); } model.AvatarPhoto = null; var token = CookieEncoder.DecodeToken(Request.Cookies["access_token_cookie"]); var createUserResult = await _userManage.CreateUser(model, token); //error if (createUserResult.msg != null || createUserResult.data == null) { ViewData["Error"] = createUserResult.msg; return(View(model)); } //success return(RedirectToAction(nameof(Index))); } catch { ViewData["Error"] = "Can't connect to server. Please try later."; return(View()); } }