示例#1
0
        public override Task OnConnected()
        {
            Trace.WriteLine("Here I am " + Context.ConnectionId);

            Db db = new Db();

            UserDTO userDTO = db.Users.Where(x => x.Username.Equals(Context.User.Identity.Name)).FirstOrDefault();
            int     userId  = userDTO.Id;

            string connId = Context.ConnectionId;

            if (!db.Online.Any(x => x.Id == userId))
            {
                OnlineDTO online = new OnlineDTO();

                online.Id     = userId;
                online.ConnId = connId;

                db.Online.Add(online);

                db.SaveChanges();
            }

            List <int> onlineIds = db.Online.ToArray().Select(x => x.Id).ToList();

            List <int> friendIds1 = db.Friends.Where(x => x.User1 == userId && x.Active == true).ToArray().Select(x => x.User2).ToList();

            List <int> friendIds2 = db.Friends.Where(x => x.User2 == userId && x.Active == true).ToArray().Select(x => x.User1).ToList();

            List <int> allFriendsIds = friendIds1.Concat(friendIds2).ToList();

            List <int> resultList = onlineIds.Where((i) => allFriendsIds.Contains(i)).ToList();

            Dictionary <int, string> dictFriends = new Dictionary <int, string>();

            foreach (var id in resultList)
            {
                var    users  = db.Users.Find(id);
                string friend = users.Username;

                if (!dictFriends.ContainsKey(id))
                {
                    dictFriends.Add(id, friend);
                }
            }

            var transformed = from key in dictFriends.Keys
                              select new { id = key, friend = dictFriends[key] };

            string json = JsonConvert.SerializeObject(transformed);

            var clients = Clients.Caller;

            clients.getonlinefriends(Context.User.Identity.Name, json);

            UpdateChat();

            // Return
            return(base.OnConnected());
        }
示例#2
0
        public override Task OnDisconnected(bool stopCalled)
        {
            //Log
            Trace.WriteLine("gone - " + Context.ConnectionId + " " + Context.User.Identity.Name);

            //Init Db
            Db db = new Db();

            //Get User Id
            int userId = db.Users.Where(x => x.Username.Equals(Context.User.Identity.Name)).FirstOrDefault().Id;

            //Remove from Db
            if (db.Onlines.Any(x => x.Id == userId))
            {
                OnlineDTO online = db.Onlines.Find(userId);
                db.Onlines.Remove(online);
                db.SaveChanges();
            }

            //Update Chat
            UpdateChat();

            //return
            return(base.OnDisconnected(stopCalled));
        }
示例#3
0
        public override Task OnConnected()
        {
            //Init Db
            Db db = new Db();
            //GetUser Id
            var userDTO = db.Users.Where(v => v.UserName.Equals(Context.User.Identity.Name)).FirstOrDefault();
            int userId  = userDTO.Id;
            //Get Conn Id
            string connId = Context.ConnectionId;

            //Add OnlineDTO
            if (!db.Online.Any(v => v.Id == userId))
            {
                OnlineDTO onlineDTO = new OnlineDTO();
                onlineDTO.Id     = userId;
                onlineDTO.ConnId = connId;
                db.Online.Add(onlineDTO);
                db.SaveChanges();
            }

            //Get all Online Ids
            var onlineIds = db.Online.ToArray().Select(v => v.Id).ToList();
            //Get friend Ids
            List <int> friendIds1 = db.Friends.Where(v => v.User1 == userId && v.Active).Select(t => t.User2).ToList();
            List <int> friendIds2 = db.Friends.Where(v => v.User2 == userId && v.Active).Select(t => t.User1).ToList();
            List <int> allfriends = friendIds1.Concat(friendIds2).ToList();
            //Get final set of Ids
            List <int> onlinefriends = onlineIds.Where(v => allfriends.Contains(v)).ToList();
            //Create dict o friendIds and usernames
            Dictionary <int, string> dictfriends = new Dictionary <int, string>();

            foreach (var id in onlinefriends)
            {
                var    user   = db.Users.Find(id);
                string friend = user.UserName;
                if (!dictfriends.ContainsKey(id))
                {
                    dictfriends.Add(id, friend);
                }
            }

            var transformed = from key in dictfriends.Keys
                              select new { id = key, friend = dictfriends[key] };
            var json = JsonConvert.SerializeObject(transformed);
            //Set Clients
            var clients = Clients.Caller;

            //Call js function
            clients.getonlinefriends(Context.User.Identity.Name, json);

            //Update chat
            UpdateChat();
            return(base.OnConnected());
        }
示例#4
0
        public override Task OnDisconnected(bool stopCalled)
        {
            Trace.WriteLine("gone - " + Context.ConnectionId + " " + Context.User.Identity.Name);

            Db db = new Db();

            UserDTO userDTO = db.Users.Where(x => x.Username.Equals(Context.User.Identity.Name)).FirstOrDefault();
            int     userId  = userDTO.Id;

            if (db.Online.Any(x => x.Id == userId))
            {
                OnlineDTO online = db.Online.Find(userId);
                db.Online.Remove(online);
                db.SaveChanges();
            }

            UpdateChat();

            // Return
            return(base.OnDisconnected(stopCalled));
        }
示例#5
0
        public override Task OnConnected()
        {
            //Log user connection
            Trace.WriteLine("Here I am " + Context.ConnectionId);

            //Init Db
            Db db = new Db();

            //Get User Id
            int userId = db.Users.Where(x => x.Username.Equals(Context.User.Identity.Name)).FirstOrDefault().Id;

            //Get conn ID
            string connId = Context.ConnectionId;

            //Add OnlineDTO
            if (!db.Onlines.Any(x => x.Id == userId))
            {
                OnlineDTO onlineDTO = new OnlineDTO()
                {
                    Id     = userId,
                    ConnId = connId
                };

                db.Onlines.Add(onlineDTO);
                db.SaveChanges();
            }

            //Get all online ids
            List <int> onlineIds = db.Onlines.ToArray().Select(x => x.Id).ToList();

            //Get friend Ids
            List <int> friendIds1 = db.Friends.Where(x => x.User1 == userId && x.IsActive == true)
                                    .ToArray().Select(x => x.User2).ToList();

            List <int> friendIds2 = db.Friends.Where(x => x.User2 == userId && x.IsActive == true)
                                    .ToArray().Select(x => x.User1).ToList();

            List <int> allFriendIds = friendIds1.Concat(friendIds2).ToList();

            //Get final set of ids - taking only the ids in all onlineIds that exist in allFriendsIds as well
            List <int> resultList = onlineIds.Where((i) => allFriendIds.Contains(i)).ToList();

            //Create a dictionary or ids and usernames
            Dictionary <int, string> dictFriends = new Dictionary <int, string>();

            foreach (var id in resultList)
            {
                if (!dictFriends.ContainsKey(id))
                {
                    dictFriends.Add(id, db.Users.Where(x => x.Id == id).FirstOrDefault().Username);
                }
            }

            var transformed = from key in dictFriends.Keys
                              select new { id = key, friend = dictFriends[key] };

            string json = JsonConvert.SerializeObject(transformed);

            //Set clients
            var clients = Clients.Caller;

            //Call Js function
            clients.getonlinefriends(Context.User.Identity.Name, json);

            //Update Chat
            UpdateChat();

            //return
            return(base.OnConnected());
        }
示例#6
0
 public OnlineVM(OnlineDTO row)
 {
     Id     = row.Id;
     ConnId = row.ConnId;
 }
示例#7
0
        public override Task OnConnected()
        {
            //Log user connection
            Trace.WriteLine("Here I am - " + Context.ConnectionId);

            //Initialize the database
            var db = new Db();

            //Get user ID
            var userDTO = db.Users.FirstOrDefault(x => x.Username.Equals(Context.User.Identity.Name));
            var userId  = userDTO.Id;

            //Get the connection ID
            var connectionId = Context.ConnectionId;

            //Add to OnlineDTO
            if (!db.Online.Any(x => x.Id == userId))
            {
                var online = new OnlineDTO();
                online.Id           = userId;
                online.ConnectionId = connectionId;
                db.Online.Add(online);
                db.SaveChanges();
            }

            //Get all online IDs
            var onlineIds = db.Online.ToArray().Select(x => x.Id).ToList();

            //Get all friend IDs
            var friendIds1 = db.Friends.Where(x => x.User1 == userId && x.Active == true).ToArray()
                             .Select(x => x.User2).ToList();

            var friendIds2 = db.Friends.Where(x => x.User2 == userId && x.Active == true).ToArray()
                             .Select(x => x.User1).ToList();

            var allFriendIds = friendIds1.Concat(friendIds2).ToList();

            //Get final set of online friend IDs
            var resultList = onlineIds.Where((i) => allFriendIds.Contains(i)).ToList();

            //Create a dictionary of online friend IDs and usernames
            var dictFriends = new Dictionary <int, string>();

            foreach (var id in resultList)
            {
                var users = db.Users.Find(id);
                if (users != null)
                {
                    var friend = users.Username;

                    if (!dictFriends.ContainsKey(id))
                    {
                        dictFriends.Add(id, friend);
                    }
                }
            }

            var transformed = from key in dictFriends.Keys
                              select new { id = key, friend = dictFriends[key] };

            var json = JsonConvert.SerializeObject(transformed);

            //Set clients
            var clients = Clients.Caller;

            //Call JS function
            clients.getonlinefriends(Context.User.Identity.Name, json);

            //Update chat
            UpdateChat();

            //Return
            return(base.OnConnected());
        }