예제 #1
0
        public ActionResult DevelopmentToolsCreate(Guid?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var contest = _db.Contests.Find(id);

            if (contest == null)
            {
                return(HttpNotFound());
            }
            if (contest.TeacherId != User.Identity.GetUserId() && !User.IsInRole("administrator") && !_db.ContestTeachers.Any(ct => ct.ContestId == contest.Id))
            {
                TempData["Message"] = "Вы не имеете право создавать компиляторы для этого контеста";
                return(RedirectToAction("Edit", new { id }));
                //ViewBag.ErrorMessage = "Вы не имеете право создавать компиляторы для этого контеста";
                //return View("Error");
            }
            var model = new ContestsDevelopmentToolsCreateViewModel
            {
                ContestId = id
            };

            return(View(model));
        }
예제 #2
0
        public async System.Threading.Tasks.Task <ActionResult> DevelopmentToolsCreate(ContestsDevelopmentToolsCreateViewModel model)
        {
            if (ModelState.IsValid)
            {
                if (await _db.DevelopmentTools.AnyAsync(d => d.ContestId == model.ContestId && d.Name == model.Name))
                {
                    ModelState.AddModelError("", "Компилятор в данном контесте с таким именем уже существует");
                }
                else
                {
                    var developmentTool = new DevelopmentTool
                    {
                        Id             = Guid.NewGuid(),
                        ContestId      = model.ContestId,
                        Name           = model.Name,
                        CompileCommand = model.CompileCommand,
                        CommandArgs    = model.CommandArgs
                    };
                    _db.DevelopmentTools.Add(developmentTool);
                    await _db.SaveChangesAsync();

                    return(RedirectToAction("Edit", new { id = model.ContestId }));
                }
            }
            return(View(model));
        }