// GET: Archieve/Modify public ActionResult Modify() { if (!UserAuthorization.CheckAccessRights(UserGroup.Administrators, UserSession.GetUserGroup(Session))) { return(Redirect("~/Error/AcceesDenied")); } if (string.IsNullOrEmpty(Request.QueryString["id"])) { // 缺少题目 ID。 return(Redirect("~/Error/ProblemNotExist")); } ; // 查询题目信息。 ProblemHandle handle = ProblemArchieveManager.Default.GetProblemById(Request.QueryString["id"]); if (handle == null) { // 题目不存在于数据库中。 return(Redirect("~/Error/ProblemNotExist")); } ProblemDetailModel model = ProblemDetailModel.FromProblemHandle(handle); return(View(model)); }
public ActionResult AddProblem(ProblemDetailModel model) { // 检查参数。 if (string.IsNullOrEmpty(Request.QueryString["id"])) { return(Redirect("~/Contest")); } int contestId; if (!int.TryParse(Request.QueryString["id"], out contestId)) { return(Redirect("~/Contest")); } if (!ContestManager.Default.IsContestExist(contestId)) { return(Redirect("~/Contest")); } // 验证数据模型。 if (!TryValidateModel(model)) { ViewBag.TitleErrorMessage = ModelStateHelper.GetFirstError(ModelState, "Title"); return(View(model)); } ContestHandle contestHandle = new ContestHandle(contestId); using (ContestDataProvider contestData = ContestDataProvider.Create(contestHandle, false)) { // 验证用户操作权限。 if (!UserSession.IsAuthorized(Session) || string.Compare(contestData.Creator, UserSession.GetUsername(Session), false) != 0) { return(Redirect("~/Error/AccessDenied")); } // 在题目库中创建题目。 ProblemHandle problemHandle = ProblemArchieveManager.Default.CreateProblem( contestData.PeekNextProblemId()); model.ResetNullStrings(); model.SaveTo(problemHandle); // 为避免死锁,该句不应放置在下面的 using 块中。 using (ProblemDataProvider problemData = ProblemDataProvider.Create(problemHandle, false)) { problemData.ContestId = contestId; problemData.AuthorizationGroup = UserGroup.Guests; } // 将创建的题目添加至当前比赛中。 contestData.AddProblem(problemHandle); } return(Redirect($"~/Contest/Show?id={contestId}")); }
public ActionResult Add(ProblemDetailModel model) { if (!UserAuthorization.CheckAccessRights(UserGroup.Administrators, UserSession.GetUserGroup(Session))) { // 用户权限不足。 return(Redirect("~/Error/AccessDenied")); } // 检查数据模型验证状态。 bool hasError = false; TryValidateModel(model); if (ModelState.ContainsKey("Id") && ModelState["Id"].Errors.Count > 0) { hasError = true; ViewBag.ProblemIdErrorMessage = ModelState["Id"].Errors[0].ErrorMessage; } if (ModelState.ContainsKey("Title") && ModelState["Title"].Errors.Count > 0) { hasError = true; ViewBag.TitleErrorMessage = ModelState["Title"].Errors[0].ErrorMessage; } if (hasError) { return(View(model)); } string problemId = "BIT" + model.ProblemId; if (ProblemArchieveManager.Default.IsProblemExist(problemId)) { ViewBag.ProblemIdErrorMessage = "Problem with the same ID already exist in the archieve."; return(View(model)); } // 在题目库中创建新题目。 ProblemHandle handle = ProblemArchieveManager.Default.CreateProblem(problemId); model.SaveTo(handle); return(Redirect("~/Archieve")); }
public ActionResult Problem(string id) { if (id != null) { UnitOfWork uow = new UnitOfWork(); ProblemDetailModel model = new ProblemDetailModel(); model.ProblemDetails = uow.UserRepository.GetQuestionDetailById(id); if (model.ProblemDetails != null) { model.ProblemId = id; return(View(model)); } return(RedirectToAction("Index", "Home")); } else { return(RedirectToAction("Index", "Home")); } }
public ActionResult Problem(ProblemDetailModel model) { UnitOfWork uow = new UnitOfWork(); if (!ModelState.IsValid) { model.ProblemDetails = uow.UserRepository.GetQuestionDetailById(model.ProblemId); return(View(model)); } StudentProblemBid problem = new StudentProblemBid { BidID = Guid.NewGuid().ToString(), UserID = Session["UserId"].ToString(), ProblemID = model.ProblemId, CreationDate = DateTime.Now, Description = model.Response, Status = 1, }; uow.StudentProblemBids.Insert(problem); uow.Save(); return(RedirectToAction("problem", "student", new { problem = model.ProblemId })); }
public ActionResult AddProblem() { // 检查查询参数。 if (string.IsNullOrEmpty(Request.QueryString["id"])) { return(Redirect("~/Contest")); } int contestId; if (!int.TryParse(Request.QueryString["id"], out contestId)) { return(Redirect("~/Contest")); } if (!ContestManager.Default.IsContestExist(contestId)) { return(Redirect("~/Contest")); } ContestHandle handle = new ContestHandle(contestId); using (ContestDataProvider data = ContestDataProvider.Create(handle, true)) { // 检查用户操作权限。 if (!UserSession.IsAuthorized(Session) || string.Compare(data.Creator, UserSession.GetUsername(Session), false) != 0) { return(Redirect("~/Error/AccessDenied")); } } ProblemDetailModel model = new ProblemDetailModel(); return(View(model)); }
public ActionResult Modify(ProblemDetailModel model) { if (!UserAuthorization.CheckAccessRights(UserGroup.Administrators, UserSession.GetUserGroup(Session))) { return(Redirect("~/Error/AccessDenied")); } // 验证模型。 bool hasError = false; TryValidateModel(model); if (ModelState["Title"] != null && ModelState["Title"].Errors.Count > 0) { hasError = true; ViewBag.TitleErrorMessage = ModelState["Title"].Errors[0].ErrorMessage; } if (hasError) { return(View(model)); } // 查询题目实体。 ProblemHandle handle = ProblemArchieveManager.Default.GetProblemById(model.ProblemId); if (handle == null) { return(Redirect("~/Error/ProblemNotExist")); } // 写入修改后的数据。 model.ResetNullStrings(); model.SaveTo(handle); return(Redirect("~/Archieve")); }