public async Task <IActionResult> Edit(string name, EditContestViewModel editViewModel) { if (ModelState.IsValid) { try { var updateContestDTO = new UpdateContestDTO(); updateContestDTO.CategoryName = editViewModel.Category; updateContestDTO.IsOpen = editViewModel.IsContestOpen; updateContestDTO.Phase1 = editViewModel.Phase1; updateContestDTO.Phase2 = editViewModel.Phase2; updateContestDTO.Finished = editViewModel.Finished; await this.contestService.UpdateAsync(name, updateContestDTO); return(RedirectToAction(nameof(Index))); } catch (Exception e) { toastNotification.AddErrorToastMessage(e.Message, new NotyOptions()); var path = Request.Path.Value.ToString() + "?name=" + editViewModel.Name; return(Redirect(path)); } } var categories = await this.categoryService.GetAllBaseAsync(); ViewData["Categories"] = new SelectList(categories, "Name", "Name"); return(View()); }
public int SaveContest(EditContestViewModel model) { using (var uow = this.factory.GetUnitOfWork()) { var contestRepository = uow.ContestsRepository; var contestTaskRepository = uow.ContestTaskRepository; var contest = model.Id != null?contestRepository.Get(model.Id.Value) : new Contest(); contest.FinishTime = model.FinishTime; contest.IsOpened = model.IsOpened; contest.Name = model.Name; contest.StartTime = model.StartTime; contest.CheckPointTime = model.CheckPointTime; contest.Rules = (Model.Contests.ContestRules)model.Rules; if (model.Id == null) { contestRepository.Add(contest); } var databaseTasks = model.Id != null ? contestTaskRepository.GetTasks(model.Id.Value).ToArray() : Array.Empty <ContestTask>(); foreach (var databaseTask in databaseTasks) { var task = model.Tasks.FirstOrDefault(o => o.ProblemId == databaseTask.Task.Id); if (task == null) { contestTaskRepository.Delete(databaseTask); continue; } databaseTask.TaskName = task.Label; } foreach (var task in model.Tasks) { var databaseTask = databaseTasks.FirstOrDefault(o => o.Task?.Id == task.ProblemId); if (databaseTask == null) { databaseTask = new ContestTask { Contest = contest, TaskId = task.ProblemId.Value, TaskName = task.Label }; contestTaskRepository.Add(databaseTask); } databaseTask.TaskName = task.Label; } uow.Commit(); return(contest.Id); } }
public int SaveContest(EditContestViewModel model) { using (var uow = _factory.GetUnitOfWork(transactionRequired: true)) { var contestRepository = uow.GetRepository <IContestsRepository>(); var contestTaskRepository = uow.GetRepository <IContestTaskRepository>(); var contest = model.Id != null?contestRepository.Get(model.Id.Value) : new Contest(); contest.FinishTime = model.FinishTime; contest.IsOpened = model.IsOpened; contest.Name = model.Name; contest.StartTime = model.StartTime; if (model.Id == null) { contestRepository.Add(contest); } var databaseTasks = model.Id != null ? contestTaskRepository.GetTasks(model.Id.Value).ToArray() : new ContestTask[0]; foreach (var databaseTask in databaseTasks) { var task = model.Tasks.FirstOrDefault(o => o.ProblemId == databaseTask.Task.Id); if (task == null) { contestTaskRepository.Delete(databaseTask); continue; } databaseTask.TaskName = task.Label; } foreach (var task in model.Tasks) { var databaseTask = databaseTasks.FirstOrDefault(o => o.Task?.Id == task.ProblemId); if (databaseTask == null) { databaseTask = new ContestTask { Contest = contest, TaskId = task.ProblemId.Value }; contestTaskRepository.Add(databaseTask); } databaseTask.TaskName = task.Label; } uow.Commit(); return(contest.Id); } }
public ActionResult EditContest(EditContestViewModel model) { if (ModelState.IsValid) { model.Id = _adminService.SaveContest(model); return(RedirectToAction("EditContest", new { id = model.Id })); } var problems = _problemsService.GetAllProblems(); ViewBag.Problems = problems; return(View(model)); }
public async Task <IActionResult> Edit(string name) { var contest = await this.contestService.FindContestByNameAsync(name); var updateContestDTO = new EditContestViewModel(); updateContestDTO.Name = contest.Name; updateContestDTO.Category = contest.Category.Name; updateContestDTO.IsContestOpen = contest.IsOpen; updateContestDTO.Phase1 = contest.Phase1.ToString("dd.MM.yy HH:mm"); updateContestDTO.Phase2 = contest.Phase2.ToString("dd.MM.yy HH:mm"); updateContestDTO.Finished = contest.Finished.ToString("dd.MM.yy HH:mm"); var categories = await this.categoryService.GetAllBaseAsync(); ViewData["Categories"] = new SelectList(categories, "Name", "Name"); return(View(updateContestDTO)); }
public ActionResult Edit(EditContestViewModel model) { if (model == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "No data"); } if (!this.ModelState.IsValid) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Invalid data"); } var editedContest = this.Data.Contests.Find(model.Id); if (editedContest == null) { return new HttpStatusCodeResult(HttpStatusCode.NotFound, "404"); } if(model.ClosesOn != null) { editedContest.ClosesOn = model.ClosesOn; } if (model.Description != null) { editedContest.Description = model.Description; } if (model.NumberOfAllowedParticipants != null) { editedContest.NumberOfAllowedParticipants = model.NumberOfAllowedParticipants; } editedContest.VotingStrategy = model.VotingStrategy; this.Data.SaveChanges(); return RedirectToAction("MyContests", "Home"); }