Пример #1
0
        public ActionResult Update(viewModels.EditTournamentViewModel Model, int TournamentID = -1, string Update = null, string Delete = null, string Cancel = null)
        {
            if (TournamentID == -1)
            {
                logger.Warn("Tournament with id = " + TournamentID + " not found");
                throw new HttpException(404, "Tournament not found");
            }

            if (Delete != null)
                return DeleteTournament(TournamentID);
            if (Cancel != null)
                return CancelTournament();
            if (Update != null)
                return UpdateTournament(Model, TournamentID);

            return CancelTournament();
        }
Пример #2
0
        private ActionResult UpdateTournament(viewModels.EditTournamentViewModel Model, int TournamentID = -1)
        {
            try
            {
                Tournament tournament = repository.Tournaments.FirstOrDefault(t => t.TournamentID == TournamentID);

                if (tournament == null)
                {
                    logger.Warn("Problem with id = " + TournamentID + " not found");
                    throw new HttpException(404, "Tournament not found");
                }

                tournament.Name = Model.Name;
                tournament.Format = (TournamentFormats)Model.TournamentFormatsListID;
                tournament.Type = (TournamentTypes)Model.TournamentTypesListID;

                tournament.ShowSolutionSendingTime = Model.ShowSolutionSendingTime;
                tournament.ShowTimer = Model.ShowTimer;

                tournament.StartDate = Model.StartDate.Add(Model.StartTime.TimeOfDay);
                tournament.EndDate = Model.EndDate.Add(Model.EndTime.TimeOfDay);

                repository.AddTournament(tournament);

                if (tournament.Type == TournamentTypes.Close)
                {
                    repository.BindUserToTournament(tournament.TournamentID, WebSecurity.GetUserId(User.Identity.Name));
                }

                TempData["SuccessMessage"] = "Турнир успешно обновлен!";

                logger.Info("User " + WebSecurity.GetUserId(User.Identity.Name) +
                    " \"" + User.Identity.Name + "\" update tournament \"" + TournamentID + "\"");
            }
            catch (Exception ex)
            {
                TempData["ErrorMessage"] = "Произошла ошибка при обновлении турнира.";
                logger.Error("Error occured on user " + WebSecurity.GetUserId(User.Identity.Name) +
                    " \"" + User.Identity.Name + "\" updating tournament \"" + TournamentID + "\": ", ex);
            }

            return RedirectToAction("Update", new { TournamentID = TournamentID });
        }
Пример #3
0
        public ActionResult Create(viewModels.NewTournamentViewModel Model)
        {
            if (ModelState.IsValid)
            {
                int tournamentID = -1;

                // Attempt to create new tournament
                try
                {
                    Tournament tournament = new Tournament
                    {
                        Name = Model.Name,
                        Type = (TournamentTypes)Model.TournamentTypesListID,
                        Format = (TournamentFormats)Model.TournamentFormatsListID,

                        ShowSolutionSendingTime = Model.ShowSolutionSendingTime,
                        ShowTimer = Model.ShowTimer,

                        StartDate = Model.StartDate.Add(Model.StartTime.TimeOfDay),
                        EndDate = Model.EndDate.Add(Model.EndTime.TimeOfDay)
                    };
                    int userID = WebSecurity.CurrentUserId;
                    if (userID != 1)
                    {
                        UserProfile user = repository.Users.FirstOrDefault(u => u.UserId == userID);
                        tournament.UsersCanModify = new List<UserProfile>();
                        tournament.UsersCanModify.Add(user);
                    }
                    tournamentID = repository.AddTournament(tournament);

                    if (tournament.Type == TournamentTypes.Close)
                    {
                        repository.BindUserToTournament(tournament.TournamentID, WebSecurity.GetUserId(User.Identity.Name));
                    }

                    logger.Info("User " + WebSecurity.GetUserId(User.Identity.Name) +
                        " \"" + User.Identity.Name + "\" create tournament " + tournamentID + " \"" + Model.Name + "\"");

                    return RedirectToAction("BindProblemsToTournament", new { tournamentID = tournament.TournamentID });
                }
                catch (Exception ex)
                {
                    logger.Error("Error occurred on user " + WebSecurity.GetUserId(User.Identity.Name) +
                        " \"" + User.Identity.Name + "\" creating tournament " + tournamentID + " \"" + Model.Name + "\": ", ex);

                    ModelState.AddModelError("", "Произошла ошибка при создании турнира");
                }
            }

            return View(Model);
        }