Exemple #1
0
        public ActionResult Register(int id, bool official)
        {
            var participantFound = this.Data.Participants.Any(id, this.UserProfile.Id, official);

            if (participantFound)
            {
                // Participant exists. Redirect to index page.
                return(this.RedirectToAction(GlobalConstants.Index, new { id, official }));
            }

            var contest = this.Data.Contests.All().Include(x => x.Questions).FirstOrDefault(x => x.Id == id);

            ValidateContest(contest, official);

            if (contest.ShouldShowRegistrationForm(official))
            {
                var contestRegistrationModel = new ContestRegistrationViewModel(contest, official);
                return(this.View(contestRegistrationModel));
            }

            var participant = new Participant(id, this.UserProfile.Id, official);

            this.Data.Participants.Add(participant);
            this.Data.SaveChanges();

            return(this.RedirectToAction(GlobalConstants.Index, new { id, official }));
        }
Exemple #2
0
        public ActionResult Register(int id, bool official)
        {
            var participantFound = this.Data.Participants.Any(id, this.UserProfile.Id, official);

            if (participantFound)
            {
                // Participant exists. Redirect to index page.
                return(this.RedirectToAction(GlobalConstants.Index, new { id, official }));
            }

            var contest = this.contestsData.GetById(id);

            try
            {
                this.ValidateContest(contest, official);

                if (contest.ShouldShowRegistrationForm(official))
                {
                    var contestRegistrationModel = new ContestRegistrationViewModel(contest, official);
                    return(this.View(contestRegistrationModel));
                }

                this.AddNewParticipantToContest(contest, official);
            }
            catch (HttpException httpEx)
            {
                this.TempData.AddDangerMessage(httpEx.Message);
                return(this.RedirectToAction <HomeController>(c => c.Index(), new { area = string.Empty }));
            }

            return(this.RedirectToAction(GlobalConstants.Index, new { id, official }));
        }
Exemple #3
0
        protected async Task FinishRegistrationAsync(ContestRegistrationViewModel viewModel, ContestRegistration registration, Contest contest)
        {
            registration.RegistrationDateTime = DateTimeService.SfuServerNow;
            registration.RegistredBy          = await _userManager.FindByEmailAsync(_currentUserService.Email);

            registration.Status = ContestRegistrationStatus.Completed;

            var yacontestaccount = contest.YaContestAccountsCSV
                                   .SplitByNewLineEndAndRemoveWindowsLineEnds()
                                   .Skip(contest.UsedAccountsCount)
                                   .First()
                                   .Split(',');

            registration.YaContestLogin    = yacontestaccount[0];
            registration.YaContestPassword = yacontestaccount[1];
            registration.Number            = contest.RegistrationsCount + 1;

            contest.RegistrationsCount++;
            contest.UsedAccountsCount++;

            Repository.Add(registration);
            await Repository.SaveChangesAsync();

            //TODO Если регистрирует админ, то email не отправляется?
            if (contest.SendRegistrationEmail)
            {
                string email;
                if (contest.ContestType == ContestType.Individual)
                {
                    var participantEmail = await Repository.Set <ApplicationUser>()
                                           .Where(u => u.Id == viewModel.Participant1Id)
                                           .Select(x => x.Email)
                                           .SingleAsync();

                    email = participantEmail;
                }
                else // contest.ContestType == ContestType.Team
                {
                    //Нужно ли отправлять email каждому члену команды?
                    email = _currentUserService.Email;
                }

                await _emailSender.SendEmailAsync(email,
                                                  "Вы зарегистрированы на соревнование по программированию ИКИТ СФУ",
                                                  $"Вы успешно зарегистрированы на соревнование: {contest.Name}<br>" +
                                                  $"Ваши учетные данные для входа в систему:<br>" +
                                                  $"логин {registration.YaContestLogin}<br>" +
                                                  $"пароль {registration.YaContestPassword}<br>" +
                                                  $"cсылка для входа: {contest.YaContestLink}<br>");
            }
        }
Exemple #4
0
        public ActionResult Register(int id, bool official)
        {
            var participant = this.participantsData
                              .GetByContestByUserAndByIsOfficial(id, this.UserProfile.Id, official);

            if (participant != null && !participant.IsInvalidated)
            {
                return(this.RedirectToAction(GlobalConstants.Index, new { id, official }));
            }

            var contest = this.contestsData.GetById(id);

            try
            {
                this.ValidateContest(contest, official);

                if (contest.ShouldShowRegistrationForm(official))
                {
                    var contestRegistrationModel = new ContestRegistrationViewModel(contest, official);
                    return(this.View(contestRegistrationModel));
                }

                if (participant == null)
                {
                    this.AddNewParticipantToContest(contest, official);
                }
                else
                {
                    participant.IsInvalidated = false;
                    this.participantsData.Update(participant);
                }
            }
            catch (HttpException httpEx)
            {
                this.TempData.AddDangerMessage(httpEx.Message);
                return(this.RedirectToHome());
            }

            return(this.RedirectToAction(GlobalConstants.Index, new { id, official }));
        }
        protected async Task FillViewDataForContestRegistrationAsync(ContestRegistrationViewModel viewModel)
        {
            var data = await HandlerDispatcher.ExecuteQueryAsync(new GetDataForContestRegistrationQuery { ContestId = viewModel.ContestId });

            ViewData["CityId"] = new SelectList(data.Cities, "Id", "Name", viewModel.CityId);
            var creatIndividualVM = viewModel as IndividualContestRegistrationViewModel;
            var creatTeamVM       = viewModel as TeamContestRegistrationViewModel;

            if (creatIndividualVM != null)
            {
                ViewData["Participant1Id"] = new SelectList(data.Users, "Id", "DisplayName", creatIndividualVM.Participant1Id);
            }

            if (creatTeamVM != null)
            {
                ViewData["Participant1Id"]       = new SelectList(data.Users, "Id", "DisplayName", creatTeamVM.Participant1Id);
                ViewData["Participant2Id"]       = new SelectList(data.Users, "Id", "DisplayName", creatTeamVM.Participant2Id);
                ViewData["Participant3Id"]       = new SelectList(data.Users, "Id", "DisplayName", creatTeamVM.Participant3Id);
                ViewData["ReserveParticipantId"] = new SelectList(data.Users, "Id", "DisplayName", creatTeamVM.ReserveParticipantId);

                if (data.TrainerCount > 1)
                {
                    ViewData["Trainer2Id"] = new SelectList(data.Users.Where(u => u.UserType != UserType.Pupil), "Id", "DisplayName", creatTeamVM.Trainer2Id);
                }
                if (data.TrainerCount > 2)
                {
                    ViewData["Trainer3Id"] = new SelectList(data.Users.Where(u => u.UserType != UserType.Pupil), "Id", "DisplayName", creatTeamVM.Trainer3Id);
                }
            }
            ViewData["TrainerId"] = new SelectList(data.Users.Where(u => u.UserType != UserType.Pupil), "Id", "DisplayName", viewModel.TrainerId);

            ViewData["ManagerId"]   = new SelectList(data.Users.Where(u => u.UserType != UserType.Pupil), "Id", "DisplayName", viewModel.ManagerId);
            ViewData["StudyPlaces"] = data.StudyPlaces;

            if (data.IsAreaRequired)
            {
                ViewData["Area"] = new SelectList(data.ContestAreas, "Id", "Area.Name", viewModel.ContestAreaId);
            }
        }