public IActionResult GetRooms([FromQuery] int page, [FromQuery] int limit)
        {
            if (page < 1)
            {
                page = 1;
            }

            IEnumerable <Room> rooms = _roomService.GetAll();
            var size = rooms.Count();

            if (limit > 0)
            {
                rooms = rooms
                        .Skip((page - 1) * limit)
                        .Take(limit);
            }

            var roomDtos = _mapper.Map <IList <RoomInfoDto> >(rooms);

            foreach (RoomInfoDto roomInfo in roomDtos)
            {
                roomInfo.OnlineClientAmount = RoomHub.GetOnlineGroupUsersAmount(roomInfo.Id);
            }

            return(Ok(new
            {
                rooms = roomDtos,
                size
            }));
        }
Example #2
0
        async public Task <IActionResult> Configuration(string roomId, [FromBody] RoomConfigurationViewModel roomConfiguration)
        {
            var normalisedRoomId = roomId.ToUpperInvariant();

            if (!RoomRepository.Exists(normalisedRoomId))
            {
                return(NotFound());
            }
            var room = RoomRepository.Get(normalisedRoomId);

            if (room.State.Creator.Id != SessionManager.GetCurrentUser().Id)
            {
                return(Unauthorized("Only the creator of the room can edit the library"));
            }

            await RoomHelpers.WithRoomLock(room, async() =>
            {
                if (!string.IsNullOrEmpty(roomConfiguration.LibraryScript))
                {
                    var limitations = new DiceScript.Contracts.Limitations
                    {
                        MaxProgramSize = 2000,
                        MaxRollNbr     = 100
                    };
                    var builder              = new DiceScript.Builder(limitations);
                    room.Library             = builder.BuildLib(roomConfiguration.LibraryScript);
                    room.State.Functions     = room.Library.GetFunctionList();
                    room.State.LibraryScript = roomConfiguration.LibraryScript;
                }
                room.State.DiscordWebHook = roomConfiguration.DiscordWebHook;
                await RoomHub.Update(room);
            });

            return(Ok());
        }
Example #3
0
        public void handle(object messageModel, BasicDeliverEventArgs ea)
        {
            var body    = ea.Body;
            var message = Encoding.UTF8.GetString(body);

            switch (ea.RoutingKey)
            {
            case "CreateRoom":
                var rcHub = new RoomHub();
                rcHub.Send(message);
                break;

            case "CreateQuestion":
                var questionHub = new QuestionHub();
                questionHub.Send(message);
                break;

            case "UpdateQuestion":
                var updateQuestionHub = new QuestionHub();
                updateQuestionHub.Update(message);
                break;

            case "DeleteQuestion":
                var qqhub = new QuestionHub();
                qqhub.Delete(message);
                break;

            case "CreateChatMessage":
                var chatHub = new ChatHub();
                chatHub.Send(message);
                break;

            case "AddQuestionResponse":
                var qhub = new QuestionHub();
                qhub.AddResponse(message);
                break;

            case "AddQuestionVote":
                var qhub2 = new QuestionHub();
                qhub2.AddVote(message);
                break;

            case "UpdateRoom":
                var ruHub = new RoomHub();
                ruHub.Update(message);
                break;

            case "DeleteRoom":
                var rumHub = new RoomHub();
                rumHub.Delete(message);
                break;
            }
            lock (_model)
            {
                _model.BasicAck(ea.DeliveryTag, false);
            }
        }
Example #4
0
 private void _initRoomHub(Db db)
 {
     _roomHub = new RoomHub(_roomServiceMock.Object, db)
     {
         Context = _contextMock.Object,
         Groups  = _groupsMock.Object,
         Clients = _clientsMock.Object
     };
 }
Example #5
0
        async public Task Publish(Room room, ResultGroup resultGroup)
        {
            string discordWebHook = room.State.DiscordWebHook;

            if (!string.IsNullOrEmpty(discordWebHook))
            {
                await PublishOnDiscord(discordWebHook, resultGroup);
            }
            room.State.Results.Add(resultGroup);
            await RoomHub.Update(room);
        }
Example #6
0
        public void Preload()
        {
            if (!CanRun())
            {
                return;
            }

            LoadSubscribers();

            foreach (var key in _meetings.Keys)
            {
                var m = PreloadForRoom(key);
                //_notifications.Push(new MeetingsUpdatedNotification{Room = key, Meetings = m});
                RoomHub.MeetingsUpdated(_roomHubContext, key, m);
            }
        }
Example #7
0
        public void Setup()
        {
            roomManagerInstance = new RoomManager();
            room    = new RoomHub();
            player1 = new Player
            {
                ConnectionId = Guid.NewGuid().ToString(),
                PlayerInGame = new PlayerInGame()
                {
                    Name        = Guid.NewGuid().ToString(),
                    Side        = PlayerSide.Blue,
                    CardsInHand = new List <ICard>(),
                    Deck        = CardHelpers.GetAllTierOneCards()
                }
            };
            player2 = new Player
            {
                ConnectionId = Guid.NewGuid().ToString(),
                PlayerInGame = new PlayerInGame()
                {
                    Name        = Guid.NewGuid().ToString(),
                    Side        = PlayerSide.Red,
                    CardsInHand = new List <ICard>(),
                    Deck        = CardHelpers.GetAllTierOneCards()
                }
            };
            room.Player1 = player1;
            room.Player2 = player2;

            boardManager = BoardManagerObject.CreateBoardManager(player1.PlayerInGame, player2.PlayerInGame);

            room = new RoomHub
            {
                BoardManager = boardManager,
                Player1      = player1,
                Player2      = player2
            };
        }
        public IActionResult GetMyRooms([FromQuery] int page, [FromQuery] int limit)
        {
            var user = _userService.GetById(Int32.Parse(User.Identity.Name));

            if (user == null)
            {
                return(Unauthorized());
            }

            if (page < 1)
            {
                page = 1;
            }

            IEnumerable <Room> rooms = _userRoomService.GetRoomsByUserId(user.Id);
            var size = rooms.Count();

            if (limit > 0)
            {
                rooms = rooms
                        .Skip((page - 1) * limit)
                        .Take(limit);
            }

            var roomDtos = _mapper.Map <IList <RoomInfoDto> >(rooms);

            foreach (RoomInfoDto roomInfo in roomDtos)
            {
                roomInfo.OnlineClientAmount = RoomHub.GetOnlineGroupUsersAmount(roomInfo.Id);
            }

            return(Ok(new
            {
                rooms = roomDtos,
                size
            }));
        }
Example #9
0
        private static object CreateMyHub(IUnityContainer p)
        {
            var myHub = new RoomHub(p.Resolve <IRoomManager>());

            return(myHub);
        }