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