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

KickUser() public method

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

            if (targetUser == user)
            {
                throw new InvalidOperationException("Why would you want to kick yourself?");
            }

            if (!_repository.IsUserInRoom(_cache, targetUser, targetRoom))
            {
                throw new InvalidOperationException(String.Format("'{0}' isn't in '{1}'.", targetUser.Name, targetRoom.Name));
            }

            // only admin can kick admin
            if (!user.IsAdmin && targetUser.IsAdmin)
            {
                throw new InvalidOperationException("You cannot kick an admin. Only admin can kick admin.");
            }

            // If this user isn't the creator/admin AND the target user is an owner then throw
            if (targetRoom.Creator != user && targetRoom.Owners.Contains(targetUser) && !user.IsAdmin)
            {
                throw new InvalidOperationException("Owners cannot kick other owners. Only the room creator can kick an owner.");
            }

            LeaveRoom(targetUser, targetRoom);
        }

Usage Example

Ejemplo n.º 1
0
            public void ThrowsIfUserIsNotOwner()
            {
                var repository = new InMemoryRepository();
                var user = new ChatUser
                {
                    Name = "foo"
                };

                var user2 = new ChatUser
                {
                    Name = "foo2"
                };

                repository.Add(user);
                repository.Add(user2);
                var room = new ChatRoom
                {
                    Name = "Room",
                };

                user.Rooms.Add(room);
                user2.Rooms.Add(room);
                room.Users.Add(user);
                room.Users.Add(user2);

                var service = new ChatService(repository);

                Assert.Throws<InvalidOperationException>(() => service.KickUser(user, user2, room));
            }
All Usage Examples Of JabbR.Services.ChatService::KickUser