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 })); }
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 })); }
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>"); } }
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); } }