private void CreateHostRoleAndUsers() { //Admin role for host var adminRoleForHost = _context.Roles.FirstOrDefault(r => r.TenantId == null && r.Name == StaticRoleNames.Host.Admin); if (adminRoleForHost == null) { adminRoleForHost = _context.Roles.Add(new Role { Name = StaticRoleNames.Host.Admin, DisplayName = StaticRoleNames.Host.Admin, IsStatic = true }); _context.SaveChanges(); //Grant all tenant permissions var permissions = PermissionFinder .GetAllPermissions(new MahjongBuddyAuthorizationProvider()) .Where(p => p.MultiTenancySides.HasFlag(MultiTenancySides.Host)) .ToList(); foreach (var permission in permissions) { if (!permission.IsGrantedByDefault) { _context.Permissions.Add( new RolePermissionSetting { Name = permission.Name, IsGranted = true, RoleId = adminRoleForHost.Id }); } } _context.SaveChanges(); } //Admin user for tenancy host var adminUserForHost = _context.Users.FirstOrDefault(u => u.TenantId == null && u.UserName == User.AdminUserName); if (adminUserForHost == null) { adminUserForHost = _context.Users.Add( new User { UserName = User.AdminUserName, Name = "System", Surname = "Administrator", EmailAddress = "*****@*****.**", IsEmailConfirmed = true, Password = new PasswordHasher().HashPassword(User.DefaultPassword) }); _context.SaveChanges(); _context.UserRoles.Add(new UserRole(null, adminUserForHost.Id, adminRoleForHost.Id)); _context.SaveChanges(); } }
private void CreateRolesAndUsers() { //Admin role var adminRole = _context.Roles.FirstOrDefault(r => r.TenantId == _tenantId && r.Name == StaticRoleNames.Tenants.Admin); if (adminRole == null) { adminRole = _context.Roles.Add(new Role(_tenantId, StaticRoleNames.Tenants.Admin, StaticRoleNames.Tenants.Admin) { IsStatic = true }); _context.SaveChanges(); //Grant all permissions to admin role var permissions = PermissionFinder .GetAllPermissions(new MahjongBuddyAuthorizationProvider()) .Where(p => p.MultiTenancySides.HasFlag(MultiTenancySides.Tenant)) .ToList(); foreach (var permission in permissions) { if (!permission.IsGrantedByDefault) { _context.Permissions.Add( new RolePermissionSetting { TenantId = _tenantId, Name = permission.Name, IsGranted = true, RoleId = adminRole.Id }); } } _context.SaveChanges(); } //admin user var adminUser = _context.Users.FirstOrDefault(u => u.TenantId == _tenantId && u.UserName == User.AdminUserName); if (adminUser == null) { adminUser = User.CreateTenantAdminUser(_tenantId, "*****@*****.**", "123qwe"); adminUser.IsEmailConfirmed = true; adminUser.IsActive = true; _context.Users.Add(adminUser); _context.SaveChanges(); //Assign Admin role to admin user _context.UserRoles.Add(new UserRole(_tenantId, adminUser.Id, adminRole.Id)); _context.SaveChanges(); } }
private void AddRuleIfNotExists(MjRule rule) { if (_context.MjRules.Any(r => r.Name == rule.Name)) { return; } _context.MjRules.Add(rule); _context.SaveChanges(); }
public static IEnumerable <RoundTile> SetupForStraight(MahjongBuddyDbContext context, string userId, bool selfPick) { List <RoundTile> userTiles = new List <RoundTile>(); var oneCircle = context.RoundTiles.First(t => t.Tile.TileValue == TileValue.One && t.Tile.TileType == TileType.Circle); oneCircle.TileSetGroup = TileSetGroup.Chow; userTiles.Add(oneCircle); var twoCircle = context.RoundTiles.First(t => t.Tile.TileValue == TileValue.Two && t.Tile.TileType == TileType.Circle); oneCircle.TileSetGroup = TileSetGroup.Chow; userTiles.Add(twoCircle); var threeCircle = context.RoundTiles.First(t => t.Tile.TileValue == TileValue.Three && t.Tile.TileType == TileType.Circle); oneCircle.TileSetGroup = TileSetGroup.Chow; userTiles.Add(threeCircle); userTiles.Add(context.RoundTiles.First(t => t.Tile.TileValue == TileValue.Four && t.Tile.TileType == TileType.Circle)); userTiles.Add(context.RoundTiles.First(t => t.Tile.TileValue == TileValue.Five && t.Tile.TileType == TileType.Circle)); userTiles.Add(context.RoundTiles.First(t => t.Tile.TileValue == TileValue.Six && t.Tile.TileType == TileType.Circle)); userTiles.Add(context.RoundTiles.First(t => t.Tile.TileValue == TileValue.One && t.Tile.TileType == TileType.Money)); userTiles.Add(context.RoundTiles.First(t => t.Tile.TileValue == TileValue.Two && t.Tile.TileType == TileType.Money)); userTiles.Add(context.RoundTiles.First(t => t.Tile.TileValue == TileValue.Three && t.Tile.TileType == TileType.Money)); userTiles.Add(context.RoundTiles.First(t => t.Tile.TileValue == TileValue.Four && t.Tile.TileType == TileType.Money)); userTiles.Add(context.RoundTiles.First(t => t.Tile.TileValue == TileValue.Five && t.Tile.TileType == TileType.Money)); userTiles.Add(context.RoundTiles.First(t => t.Tile.TileValue == TileValue.Six && t.Tile.TileType == TileType.Money)); userTiles.Add(context.RoundTiles.First(t => t.Tile.TileValue == TileValue.WindEast)); foreach (var t in userTiles) { t.Owner = userId; t.Status = TileStatus.UserActive; } var lastTile = context.RoundTiles.Last(t => t.Tile.TileValue == TileValue.WindEast); if (selfPick) { lastTile.Owner = userId; lastTile.Status = TileStatus.UserJustPicked; } else { lastTile.Owner = DefaultValue.board; lastTile.Status = TileStatus.BoardActive; } userTiles.Add(lastTile); context.SaveChanges(); return(userTiles); }
public void Build() { if (!_context.Games.Any()) { var games = CreateGames(); _context.Games.AddRange(games); _context.SaveChanges(); } }
public void Build() { if (!_context.Tiles.Any()) { var tiles = CreateTiles(); _context.Tiles.AddRange(tiles); _context.SaveChanges(); } }
private void AddSettingIfNotExists(string name, string value, int?tenantId = null) { if (_context.Settings.Any(s => s.Name == name && s.TenantId == tenantId && s.UserId == null)) { return; } _context.Settings.Add(new Setting(tenantId, null, name, value)); _context.SaveChanges(); }
private void AddLanguageIfNotExists(ApplicationLanguage language) { if (_context.Languages.Any(l => l.TenantId == language.TenantId && l.Name == language.Name)) { return; } _context.Languages.Add(language); _context.SaveChanges(); }
private void CreateUserAndRoles() { //Default tenant var defaultTenant = _context.Tenants.FirstOrDefault(t => t.TenancyName == Tenant.DefaultTenantName); if (defaultTenant == null) { _context.Tenants.Add(new Tenant { TenancyName = Tenant.DefaultTenantName, Name = Tenant.DefaultTenantName }); _context.SaveChanges(); } }
public async Task <Unit> Handle(Query request, CancellationToken cancellationToken) { var connection = await _context.Connections.SingleOrDefaultAsync(x => x.Id == request.ConnectionId); if (connection != null) { if (connection.Connected) { connection.Connected = false; _context.SaveChanges(); } } return(Unit.Value); }
public static RoundTile SetupForPong(MahjongBuddyDbContext context, string userId) { List <RoundTile> userTiles = new List <RoundTile>(); var round = context.Rounds.First(); var oneCircle = round.RoundTiles.First(t => t.Tile.TileValue == TileValue.One && t.Tile.TileType == TileType.Circle); oneCircle.TileSetGroup = TileSetGroup.Chow; userTiles.Add(oneCircle); var twoCircle = round.RoundTiles.First(t => t.Tile.TileValue == TileValue.Two && t.Tile.TileType == TileType.Circle); oneCircle.TileSetGroup = TileSetGroup.Chow; userTiles.Add(twoCircle); var threeCircle = round.RoundTiles.First(t => t.Tile.TileValue == TileValue.Three && t.Tile.TileType == TileType.Circle); oneCircle.TileSetGroup = TileSetGroup.Chow; userTiles.Add(threeCircle); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.Four && t.Tile.TileType == TileType.Circle)); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.Five && t.Tile.TileType == TileType.Circle)); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.Six && t.Tile.TileType == TileType.Circle)); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.One && t.Tile.TileType == TileType.Money)); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.Two && t.Tile.TileType == TileType.Money)); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.Three && t.Tile.TileType == TileType.Money)); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.WindEast)); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.WindWest)); userTiles.AddRange(context.RoundTiles.Where(t => t.Tile.TileValue == TileValue.Six && t.Tile.TileType == TileType.Money).Take(2)); foreach (var t in userTiles) { t.Owner = userId; t.Status = TileStatus.UserActive; } var pongTile = round.RoundTiles.First(t => t.Tile.TileValue == TileValue.Six && t.Tile.TileType == TileType.Money && string.IsNullOrEmpty(t.Owner)); pongTile.Owner = "south"; pongTile.Status = TileStatus.UserActive; context.SaveChanges(); return(pongTile); }
private void CreateEditions() { var defaultEdition = _context.Editions.FirstOrDefault(e => e.Name == EditionManager.DefaultEditionName); if (defaultEdition == null) { defaultEdition = new Edition { Name = EditionManager.DefaultEditionName, DisplayName = EditionManager.DefaultEditionName }; _context.Editions.Add(defaultEdition); _context.SaveChanges(); //TODO: Add desired features to the standard edition, if wanted! } }
public static RoundTile SetupForWin(MahjongBuddyDbContext context, string userId) { List <RoundTile> userTiles = new List <RoundTile>(); var round = context.Rounds.First(); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.One && t.Tile.TileType == TileType.Circle)); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.Two && t.Tile.TileType == TileType.Circle)); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.Three && t.Tile.TileType == TileType.Circle)); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.Four && t.Tile.TileType == TileType.Circle)); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.Five && t.Tile.TileType == TileType.Circle)); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.Six && t.Tile.TileType == TileType.Circle)); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.One && t.Tile.TileType == TileType.Money)); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.Two && t.Tile.TileType == TileType.Money)); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.Three && t.Tile.TileType == TileType.Money)); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.Four && t.Tile.TileType == TileType.Money)); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.Five && t.Tile.TileType == TileType.Money)); userTiles.Add(round.RoundTiles.First(t => t.Tile.TileValue == TileValue.Six && t.Tile.TileType == TileType.Money)); var matchingTile = round.RoundTiles.First(t => t.Tile.TileValue == TileValue.WindEast); userTiles.Add(matchingTile); foreach (var t in userTiles) { t.Owner = userId; t.Status = TileStatus.UserActive; } var throwToWinTile = round.RoundTiles.Last(t => t.Tile.TileValue == TileValue.WindEast && t.Id != matchingTile.Id); throwToWinTile.Owner = "south"; throwToWinTile.Status = TileStatus.UserActive; context.SaveChanges(); return(throwToWinTile); }
public async Task <GamePlayerDto> Handle(Command request, CancellationToken cancellationToken) { var game = await _context.Games.FirstOrDefaultAsync(g => g.Code == request.GameCode.ToUpper()); if (game == null) { throw new RestException(HttpStatusCode.NotFound, new { Game = "Could not find game" }); } var user = await _context.Users.SingleOrDefaultAsync(x => x.UserName == request.UserName); var gamePlayer = _context.GamePlayers.FirstOrDefault(x => x.GameId == game.Id && x.PlayerId == user.Id); if (gamePlayer != null) { foreach (var uc in gamePlayer.Connections) { if (uc.Id != request.ConnectionId) { _context.Connections.Remove(uc); } } } else { if (game.Status == GameStatus.Playing || game.GamePlayers.Count == 4) { throw new RestException(HttpStatusCode.BadRequest, new { Game = "Reached max players" }); } gamePlayer = new GamePlayer { Game = game, Player = user, IsHost = false, }; _context.GamePlayers.Add(gamePlayer); _context.SaveChanges(); } var existingConnection = _context.Connections.FirstOrDefault(c => c.Id == request.ConnectionId); if (existingConnection == null) { gamePlayer.Connections.Add(new Connection { Id = request.ConnectionId, GamePlayerId = gamePlayer.Id, Connected = true, UserAgent = request.UserAgent }); } else { existingConnection.GamePlayerId = gamePlayer.Id; existingConnection.Connected = true; existingConnection.UserAgent = request.UserAgent; } try { await _context.SaveChangesAsync(); return(_mapper.Map <GamePlayerDto>(gamePlayer)); } catch (Exception) { throw new Exception("Problem joining to game"); } }
public async Task Build() { if (!_context.Users.Any()) { var mainPlayer = new Player { Id = "a", DisplayName = "Tonny", UserName = "******", Email = "*****@*****.**", EmailConfirmed = true, DateCreated = DateTime.Now }; mainPlayer.Photos.Add(new Photo { Id = "ps9p70gkirosjaudenvl", Url = "https://res.cloudinary.com/mahjongbuddy/image/upload/v1598673581/ps9p70gkirosjaudenvl.jpg", IsMain = true }); var rightPlayer = new Player { Id = "b", DisplayName = "Mei", UserName = "******", Email = "*****@*****.**", EmailConfirmed = true, DateCreated = DateTime.Now }; rightPlayer.Photos.Add(new Photo { Id = "akrhqqhnjsrsnycub48x", Url = "https://res.cloudinary.com/mahjongbuddy/image/upload/v1598673644/akrhqqhnjsrsnycub48x.jpg", IsMain = true }); var topPlayer = new Player { Id = "c", DisplayName = "Peter", UserName = "******", Email = "*****@*****.**", EmailConfirmed = true, DateCreated = DateTime.Now }; topPlayer.Photos.Add(new Photo { Id = "qzqes8q87s5q0acs0tos", Url = "https://res.cloudinary.com/mahjongbuddy/image/upload/v1598673707/qzqes8q87s5q0acs0tos.jpg", IsMain = true }); var leftPlayer = new Player { Id = "d", DisplayName = "Jason", UserName = "******", Email = "*****@*****.**", EmailConfirmed = true, DateCreated = DateTime.Now }; leftPlayer.Photos.Add(new Photo { Id = "u6st5f6gbr9enrxbeeqa", Url = "https://res.cloudinary.com/mahjongbuddy/image/upload/v1598673746/u6st5f6gbr9enrxbeeqa.jpg", IsMain = true }); var users = new List <Player> { mainPlayer, leftPlayer, topPlayer, rightPlayer }; foreach (var user in users) { await _userManager.CreateAsync(user, "Pa$$w0rd"); } _context.SaveChanges(); } }