Beispiel #1
0
        public async Task <IActionResult> JoinExistingRoom(string peerId, string roomName)
        {
            if (await RoomExist(roomName))
            {
                var peerIds = await _database.peers.Where(p => p.RoomName == roomName)
                              .Select(p => p.PeerId)
                              .ToListAsync();

                var hasReceivedAllMessagesList = await _database.peers
                                                 .Where(p => p.RoomName == roomName)
                                                 .Select(p => p.HasReceivedAllMessages)
                                                 .ToListAsync();

                var cursorColorList = await _database.peers
                                      .Where(p => p.RoomName == roomName)
                                      .Select(p => p.CursorColor)
                                      .ToListAsync();

                int randomColor = getAvailableCursorColor(roomName);
                _database.peers.Add(new Peer(peerId, roomName, 0, randomColor));
                await _database.SaveChangesAsync();

                var info = new EnterRoomInfo(RoomController.siteId++, roomName, randomColor,
                                             peerIds, hasReceivedAllMessagesList, cursorColorList);
                return(Ok(info));
            }
            return(Ok(new EnterRoomInfo(-1, null, -1, null, null, null)));
        }
Beispiel #2
0
        public async Task <IActionResult> JoinNewRoom(string peerId)
        {
            var    rand        = new Random();
            string roomName    = GenerateRoomName();
            int    cursorColor = (rand.Next() % 25) + 1; // 1 to 25

            _database.rooms.Add(new Room(roomName));
            _database.peers.Add(new Peer(peerId, roomName, 1, cursorColor));
            await _database.SaveChangesAsync();

            var info = new EnterRoomInfo(RoomController.siteId++, roomName, cursorColor,
                                         new List <string>(), new List <int>(), new List <int>());

            return(Ok(info));
        }