public TrainingTeamController( UserManager um, ITrainingStore teamStore, IAffiliationStore affs) { UserManager = um; TeamManager = teamStore; Affiliations = affs; }
public async Task <IActionResult> Register( [FromServices] ITrainingStore training) { if (Team != null) { return(NotFound()); } var items = await training.ListAsync(int.Parse(User.GetUserId()), true); ViewData["TeamsJson"] = items.Select(g => new { team = new { name = g.Key.TeamName, id = g.Key.TrainingTeamId }, users = g.Select(v => new { name = v.UserName, id = v.UserId }).ToList() }) .ToJson(); return(View(new GymRegisterModel { AsIndividual = true })); }
public async Task <IActionResult> Register( int cid, GymRegisterModel model, [FromServices] ITrainingStore training, [FromServices] UserManager userManager) { if (ViewData.ContainsKey("HasTeam")) { return(GoBackHome("Already registered")); } if (Contest.RegisterDefaultCategory == 0 || User.IsInRole("Blocked")) { return(GoBackHome("Error registration closed.")); } string teamName; int[] uids; int affId; var uid = int.Parse(User.GetUserId()); if (model.AsIndividual) { var affs = await Facade.Teams.ListAffiliationAsync(cid, false); string defaultAff = User.IsInRole("Student") ? "jlu" : "null"; var aff = affs.FirstOrDefault(a => a.ExternalId == defaultAff); if (aff == null) { return(GoBackHome("No default affiliation.")); } affId = aff.AffiliationId; uids = new[] { uid }; var user = await userManager.GetUserAsync(User); if (user.StudentId.HasValue && user.StudentVerified) { teamName = (await userManager.FindStudentAsync(user.StudentId.Value)).Name; } else { teamName = user.NickName; } teamName ??= user.UserName; } else { var team = await training.FindTeamByIdAsync(model.TeamId); if (team == null) { return(GoBackHome("Error team or team member.")); } (teamName, affId) = (team.TeamName, team.AffiliationId); var users = await training.ListMembersAsync(team, true); uids = (model.UserIds ?? Enumerable.Empty <int>()).Append(uid).Distinct().ToArray(); if (uids.Except(users.Select(g => g.UserId)).Any()) { return(GoBackHome("Error team or team member.")); } } int tid = await Facade.Teams.CreateAsync( uids : uids, team : new Team { AffiliationId = affId, ContestId = Contest.ContestId, CategoryId = Contest.RegisterDefaultCategory, RegisterTime = DateTimeOffset.Now, Status = 1, TeamName = teamName, }); await HttpContext.AuditAsync("added", $"{tid}"); StatusMessage = "Registration succeeded."; return(RedirectToAction(nameof(Home))); }