public async Task Vote(PlanningRound round, PlanningUser user, PlanningCard card) { round = _repository.GetById(round.Id); var vote = new PlanningVote { Id = Guid.NewGuid(), RoundId = round.Id, Card = card, User = user }; round.Votes.AddOrUpdate(vote); _repository.Update(round); var room = _roomRepository.GetById(round.RoomId); if (room == null) { return; } if (room.Users.Count == round.Votes.Count) { await ShowAllVotes(round.Id); } await Clients.All.SendAsync("onUserVoted", vote); }
public async Task Seed() { if (!_ctx.Employees.Any()) { _ctx.Projects.AddRange(_projectList); _ctx.Employees.AddRange(_employeeList); await _ctx.SaveChangesAsync(); } // Planning users var user = await _userMgr.FindByNameAsync("aahmadi"); if (user == null) { if (!(await _roleMgr.RoleExistsAsync("Admin"))) { var role = new IdentityRole("Admin"); //role.Claims.Add(new IdentityRoleClaim<string>() { ClaimType = "IsAdmin", ClaimValue = "True" }); await _roleMgr.CreateAsync(role); } user = new PlanningUser { UserName = "******", FirstName = "Ali", LastName = "Ahmadi", Email = "*****@*****.**" }; var userResult = await _userMgr.CreateAsync(user, "P@ssw0rd!"); var roleResult = await _userMgr.AddToRoleAsync(user, "Admin"); var claimResult = await _userMgr.AddClaimAsync(user, new Claim("SuperUser", "True")); if (!userResult.Succeeded || !roleResult.Succeeded || !claimResult.Succeeded) { throw new InvalidOperationException("Failed to build user and roles"); } } }
public async Task Join(Guid roomId, string userName, UserRole role) { if (string.IsNullOrEmpty(userName)) { return; } var room = _repository.GetById(roomId); if (room != null) { var connectionId = Context.ConnectionId; var user = room.Users.FirstOrDefault(u => u.Name == userName && u.Role == role); if (user == null) { user = new PlanningUser { Id = Guid.NewGuid(), Name = userName, ConnectionId = connectionId, Role = room.Users.Count == 0 ? UserRole.Owner : role }; room.Users.Add(user); } else { user.ConnectionId = connectionId; } _roomConnectionsStorage.RoomConnections.TryAdd(connectionId, room.Id); await Clients.Caller.SendAsync("onJoined", user); await Clients.All.SendAsync("onUsersChanged", room.Users); } }