Exemplo n.º 1
0
 public TrainingTeamController(
     UserManager um,
     ITrainingStore teamStore,
     IAffiliationStore affs)
 {
     UserManager  = um;
     TeamManager  = teamStore;
     Affiliations = affs;
 }
Exemplo n.º 2
0
        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
            }));
        }
Exemplo n.º 3
0
        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)));
        }