Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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");
        }