//TODO: on connection, reload rooms for user?
public Task Join()
{
int moduleId = Convert.ToInt32(Clients.Caller.moduleid);
var settingsDefault = new Guid(Clients.Caller.defaultRoomId);
if (DefaultRoomId != settingsDefault)
{
DefaultRoomId = settingsDefault;
}
//get list of previously connected (not departed) rooms
var crrc = new ConnectionRecordRoomController();
var rc = new RoomController();
IEnumerable <Room> myRooms = null;
//don't do this if we've got a private room loaded.
if (Convert.ToInt32(Clients.Caller.userid) > 0)
{
myRooms = crrc.GetConnectionRecordRoomsByUserId((int)Clients.Caller.userid);
}
//TODO: the default room doesn't have a moduleid associated with it
//if myRooms is empty, what to do (pass default room)
if (myRooms == null)
{
//load the default room
var r = rc.GetRoom(DefaultRoomId, moduleId);
myRooms = new List <Room>();
myRooms = myRooms.Concat(new[] { r });
}
else
{
//load the current default room to see if it is in the queue
var r = rc.GetRoom(DefaultRoomId, moduleId);
if (!myRooms.Contains(r))
{
myRooms = myRooms.Concat(new[] { r });
}
}
//get all the active rooms and send it back for the Lobby
var allRooms = rc.GetRooms(moduleId);
//we are passing in a list of All rooms, and the current user's rooms
Clients.Caller.PopulateUser(allRooms, myRooms);
return(base.OnConnected());
}