示例#1
0
        public ActionResult Edit(int id)
        {
            if (!this.CheckIfUserHasContestPermissions(id))
            {
                this.TempData[GlobalConstants.DangerMessage] = "Нямате привилегиите за това действие";
                return(this.RedirectToAction("Index", "Contests", new { area = "Administration" }));
            }

            var contest = this.Data.Contests
                          .All()
                          .Where(con => con.Id == id)
                          .Select(ContestAdministrationViewModel.ViewModel)
                          .FirstOrDefault();

            if (contest == null)
            {
                this.TempData.Add(GlobalConstants.DangerMessage, Resource.Contest_not_found);
                return(this.RedirectToAction(GlobalConstants.Index));
            }

            this.Data.SubmissionTypes.All()
            .Select(SubmissionTypeViewModel.ViewModel)
            .ForEach(SubmissionTypeViewModel.ApplySelectedTo(contest));

            this.PrepareViewBagData();
            return(this.View(contest));
        }
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                this.TempData.AddDangerMessage(GlobalResource.Invalid_problem);
                return(this.RedirectToAction(c => c.Index()));
            }

            if (!this.CheckIfUserHasProblemPermissions(id.Value))
            {
                return(this.RedirectToContestsAdminPanelWithNoPrivilegesMessage());
            }

            var selectedProblem = this.PrepareProblemViewModelForEdit(id.Value);

            if (selectedProblem == null)
            {
                this.TempData.AddDangerMessage(GlobalResource.Invalid_problem);
                return(this.RedirectToAction(c => c.Index()));
            }

            this.submissionTypesData
            .GetAll()
            .Select(SubmissionTypeViewModel.ViewModel)
            .ForEach(SubmissionTypeViewModel.ApplySelectedTo(selectedProblem));

            return(this.View(selectedProblem));
        }
示例#3
0
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                this.TempData.AddDangerMessage(GlobalResource.Invalid_problem);
                return(this.RedirectToAction(nameof(this.Index)));
            }

            if (!this.CheckIfUserHasProblemPermissions(id.Value))
            {
                this.TempData.AddDangerMessage(GlobalConstants.NoPrivilegesMessage);
                return(this.RedirectToAction("Index", "Contests", new { area = "Administration" }));
            }

            var selectedProblem = this.PrepareProblemViewModelForEdit(id.Value);

            if (selectedProblem == null)
            {
                this.TempData.AddDangerMessage(GlobalResource.Invalid_problem);
                return(this.RedirectToAction(nameof(this.Index)));
            }

            this.Data.SubmissionTypes.All()
            .Select(SubmissionTypeViewModel.ViewModel)
            .ForEach(SubmissionTypeViewModel.ApplySelectedTo(selectedProblem));

            return(this.View(selectedProblem));
        }
        public ActionResult Edit(int id)
        {
            var contest = this.Data.Contests
                          .All()
                          .Where(con => con.Id == id)
                          .Select(ContestAdministrationViewModel.ViewModel)
                          .FirstOrDefault();

            if (contest == null)
            {
                this.TempData.Add(GlobalConstants.DangerMessage, Resource.Contest_not_found);
                return(this.RedirectToAction(GlobalConstants.Index));
            }

            this.Data.SubmissionTypes.All()
            .Select(SubmissionTypeViewModel.ViewModel)
            .ForEach(SubmissionTypeViewModel.ApplySelectedTo(contest));

            return(this.View(contest));
        }
        public ActionResult Edit(int id, ViewModelType problem)
        {
            if (!this.CheckIfUserHasProblemPermissions(id))
            {
                return(this.RedirectToContestsAdminPanelWithNoPrivilegesMessage());
            }

            var existingProblem = this.problemsData.GetWithProblemGroupById(id);

            if (existingProblem == null)
            {
                this.TempData.Add(GlobalConstants.DangerMessage, GlobalResource.Problem_not_found);
                return(this.RedirectToAction(c => c.Index()));
            }

            if (problem == null)
            {
                problem = this.PrepareProblemViewModelForEdit(id);

                this.AddCheckersToProblemViewModel(problem);

                return(this.View(problem));
            }

            if (problem.AdditionalFiles != null && problem.AdditionalFiles.ContentLength != 0)
            {
                this.ValidateUploadedFile(nameof(problem.AdditionalFiles), problem.AdditionalFiles);
            }

            if (!this.ModelState.IsValid)
            {
                problem = this.PrepareProblemViewModelForEdit(id);

                this.AddCheckersToProblemViewModel(problem);

                this.submissionTypesData
                .GetAll()
                .Select(SubmissionTypeViewModel.ViewModel)
                .ForEach(SubmissionTypeViewModel.ApplySelectedTo(problem));

                return(this.View(problem));
            }

            existingProblem                  = problem.GetEntityModel(existingProblem);
            existingProblem.Checker          = this.checkersData.GetByName(problem.Checker);
            existingProblem.SolutionSkeleton = problem.SolutionSkeletonData;
            existingProblem.SubmissionTypes.Clear();
            existingProblem.ProblemGroup.Type = ((ProblemGroupType?)problem.ProblemGroupType).GetValidTypeOrNull();

            if (!existingProblem.ProblemGroup.Contest.IsOnline)
            {
                existingProblem.ProblemGroup.OrderBy = problem.OrderBy;
            }

            if (problem.AdditionalFiles != null && problem.AdditionalFiles.ContentLength != 0)
            {
                using (var archiveStream = new MemoryStream())
                {
                    problem.AdditionalFiles.InputStream.CopyTo(archiveStream);
                    existingProblem.AdditionalFiles = archiveStream.ToArray();
                }
            }

            problem.SubmissionTypes.ForEach(s =>
            {
                if (s.IsChecked && s.Id.HasValue)
                {
                    var submission = this.submissionTypesData.GetById(s.Id.Value);
                    existingProblem.SubmissionTypes.Add(submission);
                }
            });

            this.problemsData.Update(existingProblem);

            this.TempData.AddInfoMessage(GlobalResource.Problem_edited);
            return(this.RedirectToAction(c => c.Index(existingProblem.ProblemGroup.ContestId)));
        }
示例#6
0
        public ActionResult Edit(int id, DetailedProblemViewModel problem)
        {
            if (!this.CheckIfUserHasProblemPermissions(id))
            {
                this.TempData.AddDangerMessage(GlobalConstants.NoPrivilegesMessage);
                return(this.RedirectToAction("Index", "Contests", new { area = "Administration" }));
            }

            var existingProblem = this.Data.Problems.All().FirstOrDefault(x => x.Id == id);

            if (existingProblem == null)
            {
                this.TempData.Add(GlobalConstants.DangerMessage, GlobalResource.Problem_not_found);
                return(this.RedirectToAction(nameof(this.Index)));
            }

            if (problem == null)
            {
                problem = this.PrepareProblemViewModelForEdit(id);
                problem.AvailableCheckers = this.Data.Checkers.All()
                                            .Select(checker => new SelectListItem
                {
                    Text  = checker.Name,
                    Value = checker.Name
                });
                return(this.View(problem));
            }

            if (problem.AdditionalFiles != null && problem.AdditionalFiles.ContentLength != 0)
            {
                this.ValidateUploadedFile(nameof(problem.AdditionalFiles), problem.AdditionalFiles);
            }

            if (!this.ModelState.IsValid)
            {
                problem = this.PrepareProblemViewModelForEdit(id);
                problem.AvailableCheckers = this.Data.Checkers.All()
                                            .Select(checker => new SelectListItem
                {
                    Text  = checker.Name,
                    Value = checker.Name
                });
                this.Data.SubmissionTypes.All()
                .Select(SubmissionTypeViewModel.ViewModel)
                .ForEach(SubmissionTypeViewModel.ApplySelectedTo(problem));
                return(this.View(problem));
            }

            existingProblem                  = problem.GetEntityModel(existingProblem);
            existingProblem.Checker          = this.Data.Checkers.All().FirstOrDefault(x => x.Name == problem.Checker);
            existingProblem.SolutionSkeleton = problem.SolutionSkeletonData;
            existingProblem.SubmissionTypes.Clear();

            if (problem.AdditionalFiles != null && problem.AdditionalFiles.ContentLength != 0)
            {
                using (var archiveStream = new MemoryStream())
                {
                    problem.AdditionalFiles.InputStream.CopyTo(archiveStream);
                    existingProblem.AdditionalFiles = archiveStream.ToArray();
                }
            }

            problem.SubmissionTypes.ForEach(s =>
            {
                if (s.IsChecked)
                {
                    var submission = this.Data.SubmissionTypes.All().FirstOrDefault(t => t.Id == s.Id);
                    existingProblem.SubmissionTypes.Add(submission);
                }
            });

            this.Data.Problems.Update(existingProblem);
            this.Data.SaveChanges();

            this.TempData.AddInfoMessage(GlobalResource.Problem_edited);
            return(this.RedirectToAction("Contest", new { id = existingProblem.ContestId }));
        }