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))); }
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)); }