Exemple #1
0
        public async Task <IActionResult> SelectTeam([FromForm] ApplicationSelectTeamModel selectTeamModel, CancellationToken cancellationToken)
        {
            selectTeamModel = await GetTeamSelectModel(cancellationToken);

            if (!await TryUpdateModelAsync(selectTeamModel))
            {
                return(View(ViewNames.TeamApplication.SelectTeam, selectTeamModel));
            }

            // The SelectedTeamId is a required field => must have a value now
            Debug.Assert(selectTeamModel.SelectedTeamId != null, "selectTeamModel.SelectedTeamId != null");

            var sessionModel = await GetModelFromSession(cancellationToken);

            if (sessionModel.TeamInRoundIsSet && sessionModel.TeamIsSet &&
                sessionModel.Team.Id != selectTeamModel.SelectedTeamId)
            {
                sessionModel.TeamInRoundIsSet = false;
                sessionModel.TeamIsSet        = false;
            }
            // The full team data is not completed yet
            sessionModel.Team.Id    = selectTeamModel.SelectedTeamId.Value;
            sessionModel.Team.IsNew = false;

            SaveModelToSession(sessionModel);
            return(RedirectToAction(nameof(EditTeam), new { Organization = _tenantContext.SiteContext.UrlSegmentValue }));
        }
Exemple #2
0
        private async Task <ApplicationSelectTeamModel> GetTeamSelectModel(CancellationToken cancellationToken)
        {
            var teamSelectModel = new ApplicationSelectTeamModel
            {
                TournamentName = (await _appDb.TournamentRepository.GetTournamentAsync(
                                      new PredicateExpression(TournamentFields.Id == _tenantContext.TournamentContext.ApplicationTournamentId),
                                      cancellationToken)).Name
            };
            var managerTeamIds = GetUserClaimTeamIds(new[] { Identity.Constants.ClaimType.ManagesTeam });

            if (managerTeamIds.Any())
            {
                teamSelectModel.TeamsManagedByUser = (await _appDb.TeamRepository.GetLatestTeamTournamentAsync(new PredicateExpression(LatestTeamTournamentFields.TeamId.In(managerTeamIds)),
                                                                                                               cancellationToken)).OrderByDescending(t => t.TournamentId).ThenBy(t => t.TeamName).ToList();
            }
            if (User.IsInRole(Identity.Constants.RoleName.TournamentManager) || User.IsInRole(Identity.Constants.RoleName.SystemManager))
            {
                teamSelectModel.TeamsManagedByUser = (await _appDb.TeamRepository.GetLatestTeamTournamentAsync(new PredicateExpression(),
                                                                                                               cancellationToken)).OrderByDescending(t => t.TournamentId).ThenBy(t => t.TeamName).ToList();
            }

            return(teamSelectModel);
        }