示例#1
0
        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
        }
示例#2
0
        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();
        }