Exemplo n.º 1
0
        public override void ServerSide(List <Connection> ServerConnections, Connection ThisConnection)
        {
            //STORE THE USERS LAST STATUS IN THE DATABASE
            using (UserStateDataContext tmpDB = new UserStateDataContext())
            {
                //TRY TO SELECT THE USERS LAST KNOWN STATE FROM THE DATABASE
                LastKnownStateItem UserState = (from a in tmpDB.LastKnownStateItems where a.UserID == ThisConnection.UserID select a).FirstOrDefault();

                //IF NOTHING WAS RETURNED WE NEED TO CREATE A NEW ITEM FOR THIS USERS STATE OTHERWISE JUST MODIFY THE EXISTING ONE
                if (UserState == null)
                {
                    UserState = new LastKnownStateItem()
                    {
                        LastKnownState = this.Status, UserID = ThisConnection.UserID
                    };
                    tmpDB.LastKnownStateItems.InsertOnSubmit(UserState);
                }
                else
                {
                    UserState.LastKnownState = this.Status;
                }

                //STORE THE CHANGES IN THE DATABASE NOW
                tmpDB.SubmitChanges();
            }

            //TODO: THIS COULD BE MORE EFFICIENT IF IT ONLY PASSED THE STATUS TO CONTACTS WHO NEEDED IT
            foreach (Connection tmpConnection in ServerConnections)
            {
                Send(tmpConnection);
            }
        }
Exemplo n.º 2
0
        public override void ServerSide(List <Connection> ServerConnections, Connection ThisConnection)
        {
            IContactsProvider ContactProvider = StaticFunctions.GetContactsProvider();

            //USE THE EXTERNAL LIBRARY TO GET THE CONTACTS FROM WHEREVER CONTACTS ARE PULLED
            this.ContactList = ContactProvider.GetContacts(ThisConnection.UserID).OrderBy(a => a.DName).OrderBy(a => a.Group).ToArray();

            //SET THE USER TO ONLINE IF THEY ARE FOUND IN OUR CONNECTED LIST
            foreach (Contact tmpContact in this.ContactList)
            {
                if ((from a in ServerConnections where a.UserID == tmpContact.UserID select a).Count() != 0)
                {
                    tmpContact.Online = true;
                }
            }

            //GET THE USERS LAST KNOWN STATE FROM OUR DB
            using (UserStateDataContext tmpDB = new UserStateDataContext())
            {
                //LOOP THROUGH ALL OFFLINE CONTACTS AND MARK THEM AS OFFLINE
                foreach (Contact tmpContact in (from a in this.ContactList where a.Online == false select a))
                {
                    tmpContact.LastStatus = "Offline";
                }

                //LOOP THROUGH ALL ONLINE CONTACTS AND TAKE THEIR STATUS FROM THE DATABASE
                foreach (Contact tmpContact in (from a in this.ContactList where a.Online == true select a))
                {
                    tmpContact.LastStatus = (from b in tmpDB.LastKnownStateItems where b.UserID == tmpContact.UserID select b.LastKnownState).FirstOrDefault();
                }
            }

            //SEND THIS BACK TO THE CLIENT
            Send(ThisConnection);
        }