public async Task<GameResult> Create([FromBody]GameResult result) { if (result == null) { throw new ArgumentNullException("game"); } GameVisibility visibility; if (!Enum.TryParse(result.Visibility, out visibility)) { throw new ArgumentException("game.Visibility is not valid"); } var game = new Game() { Name = result.Name, Visibility = visibility, }; var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(this.db)); var appUser = await manager.FindByIdAsync(this.User.Identity.GetUserId()); db.Games.Add(game); await manager.AddClaimAsync(appUser.Id, new Claim("GameMembership", game.ID.ToString())); await manager.AddClaimAsync(appUser.Id, new Claim("GameOwnership", game.ID.ToString())); await manager.AddClaimAsync(appUser.Id, new Claim("GameMaster", game.ID.ToString())); var membership = new GameMembership() { Game = game, ApplicationUser = appUser, Roles = "Owner", }; db.GameMemberships.Add(membership); await db.SaveChangesAsync(); result.GameId = game.ID; return result; }
public IEnumerable<Tuple<ApplicationUser, string>> GetUsersAndRoleByGame(Game game) { return from membership in game.Memberships select Tuple.Create(membership.ApplicationUser, membership.Roles); }
public static GameResult CreateFrom(Game game) { return new GameResult() { Name = game.Name, Visibility = game.Visibility.ToString(), GameId = game.ID }; }