JabbR.Services.ChatService.LockRoom C# (CSharp) Method

LockRoom() public method

public LockRoom ( ChatUser user, ChatRoom targetRoom ) : void
user ChatUser
targetRoom ChatRoom
return void
        public void LockRoom(ChatUser user, ChatRoom targetRoom)
        {
            EnsureOwnerOrAdmin(user, targetRoom);

            if (targetRoom.Private)
            {
                throw new InvalidOperationException(String.Format("{0} is already locked.", targetRoom.Name));
            }

            // Make the room private
            targetRoom.Private = true;

            // Add the creator to the allowed list
            targetRoom.AllowedUsers.Add(user);

            // Add the room to the users' list
            user.AllowedRooms.Add(targetRoom);

            // Make all users in the current room allowed
            foreach (var u in targetRoom.Users.Online())
            {
                u.AllowedRooms.Add(targetRoom);
                targetRoom.AllowedUsers.Add(u);
            }

            _repository.CommitChanges();
        }

Usage Example

Ejemplo n.º 1
0
            public void MakesAllUsersAllowed()
            {
                var repository = new InMemoryRepository();
                var creator = new ChatUser
                {
                    Name = "foo"
                };
                var users = Enumerable.Range(0, 5).Select(i => new ChatUser
                {
                    Name = "user_" + i
                }).ToList();

                var offlineUsers = Enumerable.Range(6, 10).Select(i => new ChatUser
                {
                    Name = "user_" + i,
                    Status = (int)UserStatus.Offline
                }).ToList();

                var room = new ChatRoom
                {
                    Name = "room",
                    Creator = creator
                };
                room.Owners.Add(creator);
                creator.OwnedRooms.Add(room);
                repository.Add(room);
                foreach (var u in users)
                {
                    room.Users.Add(u);
                    u.Rooms.Add(room);
                    repository.Add(u);
                }
                foreach (var u in offlineUsers)
                {
                    room.Users.Add(u);
                    u.Rooms.Add(room);
                    repository.Add(u);
                }
                var service = new ChatService(repository, new Mock<ICryptoService>().Object);

                service.LockRoom(creator, room);

                foreach (var u in users)
                {
                    Assert.True(u.AllowedRooms.Contains(room));
                    Assert.True(room.AllowedUsers.Contains(u));
                }

                foreach (var u in offlineUsers)
                {
                    Assert.False(u.AllowedRooms.Contains(room));
                    Assert.False(room.AllowedUsers.Contains(u));
                }
            }
All Usage Examples Of JabbR.Services.ChatService::LockRoom