public async Task AddTournamentAsync(Tournament tournament, User user) { // Check if user is authorized if (!userManager.HasOrganizationRole(user.Id, tournament.HostingOrganizationID, OrganizationRole.OrganizationTournamentManager)) { throw new UnauthorizedAccessException(UserNotAuthorizedMessage); } tournament.UpdateTrackingData(user); unitOfWork.GetRepository<Tournament>().Insert(tournament); unitOfWork.Save(); // Give user all management roles await AssignTournamentUserRoleAsync(tournament, user, TournamentRole.OrganizationApprover); await AssignTournamentUserRoleAsync(tournament, user, TournamentRole.SlotManager); await AssignTournamentUserRoleAsync(tournament, user, TournamentRole.FinanceManager); // make tournament the current tournament for user user.CurrentTournament = tournament; user.CurrentTournamentId = tournament.Id; await userManager.UpdateAsync(user); // TODO: Redesign layout, so we don't use claims anymore and the switch goes smoothly }
public void UpdateTournament(Tournament tournament, User user) { var savedTournament = GetTournament(tournament.Id); if (savedTournament == null) { throw new ArgumentException(TournamentNotFoundMessage, "tournament.Id"); } // Check if user is authorized if (!userManager.HasOrganizationRole(user.Id, savedTournament.HostingOrganizationID, OrganizationRole.OrganizationTournamentManager)) { throw new UnauthorizedAccessException(UserNotAuthorizedMessage); } tournament.HostingOrganization = savedTournament.HostingOrganization; unitOfWork.Detach(savedTournament); // tournament.CopyProperties(savedTournament); tournament.UpdateTrackingData(user); unitOfWork.GetRepository<Tournament>().Update(tournament); unitOfWork.Save(); }