Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
            }
        }