public async System.Threading.Tasks.Task <ActionResult> Edit(ContestsEditViewModel model) { if (ModelState.IsValid) { if (await _db.Contests.AnyAsync(c => c.ContestsTypeId == model.ContestsTypeId && c.Name == model.Name && c.Id != model.ContestId)) { ModelState.AddModelError("", "Контест с таким именем и типом уже существует"); } else { var teacherId = User.IsInRole("administrator") ? model.TeacherId : User.Identity.GetUserId(); var contest = new Contest { Id = model.ContestId, ContestsTypeId = model.ContestsTypeId, TeacherId = teacherId, Name = model.Name, IsActive = model.IsActive }; _db.Entry(contest).State = EntityState.Modified; await _db.SaveChangesAsync(); return(RedirectToAction("Index")); } } model.ContestsTypes = new SelectList(_db.ContestsTypes, "Id", "Name"); return(View(model)); }
public async System.Threading.Tasks.Task <ActionResult> Edit(Guid?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var contest = await _db.Contests.FindAsync(id); if (contest == null) { return(HttpNotFound()); } if (contest.TeacherId != User.Identity.GetUserId() && !User.IsInRole("administrator") && !_db.ContestTeachers.Any(ct => ct.ContestId == contest.Id)) { ViewBag.ErrorMessage = "Вы не имеете право редактировать этот контест"; return(View("Error")); } var model = new ContestsEditViewModel { ContestId = contest.Id, ContestsTypeId = contest.ContestsTypeId, TeacherId = contest.TeacherId, Name = contest.Name, IsActive = contest.IsActive, ContestsTypes = new SelectList(_db.ContestsTypes, "Id", "Name") }; return(View(model)); }