예제 #1
0
        /// <summary>
        /// Removes the connection between the two user of frienship and updates the friend list of the both users.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="receiver"></param>
        public void RemoveFriend(string sender, string receiver)
        {
            UserInformation _Sender   = Subscriber.getUser(sender);
            UserInformation _Receiver = Subscriber.getUser(receiver);

            using (DataBaseContainer context = new DataBaseContainer())
            {
                User Sender   = context.Users.ToList().Find(x => x.Username == sender);
                User Receiver = context.Users.ToList().Find(x => x.Username == receiver);

                History history = context.Histories.ToList().Find(x => x.User == Sender && x.User1 == Receiver || x.User == Receiver && x.User1 == Sender);

                Sender.Histories.Remove(history);
                Sender.Histories1.Remove(history);
                Receiver.Histories.Remove(history);
                Receiver.Histories1.Remove(history);

                context.Histories.Remove(history);
                context.SaveChanges();
            }
            if (_Sender != null)
            {
                _Sender.CommunicationCallback.FriendRemoved(receiver);
            }
            if (_Receiver != null)
            {
                _Receiver.CommunicationCallback.FriendRemoved(sender);
            }
        }
예제 #2
0
 public void Confirmation(string sender, string receiver, bool ok, bool isGroup)
 {
     if (isGroup)
     {
         GroupConversation group = Subscriber.GetGroup(receiver);
         if (ok)
         {
             group.UserJoinAudio(sender);
         }
     }
     else
     {
         UserInformation user = Subscriber.getUser(receiver);
         if (user != null && user.AudioCallback != null)
         {
             if (ok)
             {
                 user.AudioCallback.ChannelAccepted(sender);
             }
             else
             {
                 user.AudioCallback.ChannelDeclined(sender);
             }
         }
     }
 }
예제 #3
0
        public GroupConversation(string creator, string groupName)
        {
            Creator   = creator;
            GroupName = groupName;
            UserInformation user = Subscriber.getUser(Creator);

            Members.Add(user);
        }
예제 #4
0
        public void EndShareScreen(string sender, string receiver)
        {
            UserInformation user = Subscriber.getUser(receiver);

            if (user != null && user.ScreenShareCallback != null)
            {
                user.ScreenShareCallback.EndShareScreen(sender);
            }
        }
예제 #5
0
        public void RefuseShareScreen(string sender, string partner)
        {
            UserInformation Partner = Subscriber.getUser(partner);

            if (Partner != null && Partner.ScreenShareCallback != null)
            {
                Partner.ScreenShareCallback.SendRefuseNotification(sender);
            }
        }
예제 #6
0
        /// <summary>
        /// Initialiaze a share screen with the partner.
        /// </summary>
        /// <param name="client"></param>
        /// <param name="partner"></param>
        /// <param name="connectionString"></param>
        public void InitShareScreen(string client, string partner, string connectionString)
        {
            UserInformation user = Subscriber.getUser(partner);

            if (user != null && user.ScreenShareCallback != null)
            {
                user.ScreenShareCallback.ShareScrennNotification(client, connectionString);
            }
        }
예제 #7
0
        public void InviteToGroupConversation(string sender, string receiver, string groupName)
        {
            UserInformation user = Subscriber.getUser(receiver);

            if (user != null)
            {
                user.CommunicationCallback.SendGroupConversationNotification(sender, groupName);
            }
        }
예제 #8
0
        public void UserJoinAudio(string username)
        {
            UserInformation user = Subscriber.getUser(username);

            if (!AudioMembers.Exists(x => x.Username == user.Username))
            {
                AudioMembers.Add(user);
            }
        }
예제 #9
0
        public void DeclineGroupRequest(string sender, string groupName)
        {
            UserInformation   user  = Subscriber.getUser(sender);
            GroupConversation group = Subscriber.GetGroup(groupName);

            if (group != null)
            {
                group.UserDeclined(sender);
            }
        }
예제 #10
0
        public void LeaveGroup(string sender, string groupName)
        {
            UserInformation   user  = Subscriber.getUser(sender);
            GroupConversation group = Subscriber.GetGroup(groupName);

            if (group != null)
            {
                group.UserLeft(sender);
                if (group.Members.Count == 0)
                {
                    Subscriber.GroupConversations.Remove(group);
                }
            }
        }
예제 #11
0
        public void UserLeft(string username)
        {
            foreach (UserInformation member in Members)
            {
                if (member.Username != username)
                {
                    member.CommunicationCallback.UserLeft(username, GroupName);
                }
            }

            UserInformation user = Subscriber.getUser(username);

            Members.Remove(user);
        }
예제 #12
0
        public bool AcceptGroupRequest(string sender, string groupName)
        {
            UserInformation   user  = Subscriber.getUser(sender);
            GroupConversation group = Subscriber.GetGroup(groupName);

            if (group != null)
            {
                if (!group.UserExits(sender))
                {
                    group.UserJoined(sender);
                }
                return(true);
            }
            return(false);
        }
예제 #13
0
 public void StopCall(string sender, string receiver, bool isGroup)
 {
     if (isGroup)
     {
         GroupConversation group = Subscriber.GetGroup(receiver);
         group.UserLeftAudio(sender);
     }
     else
     {
         UserInformation user = Subscriber.getUser(receiver);
         if (user != null && user.AudioCallback != null)
         {
             user.AudioCallback.StopCall(sender);
         }
     }
 }
예제 #14
0
        public void UserLeftAudio(string username)
        {
            UserInformation user = Subscriber.getUser(username);

            AudioMembers.Remove(user);
        }
예제 #15
0
        public void Unsubscribe(string username)
        {
            UserInformation user = Subscriber.getUser(username);

            user.AudioCallback = null;
        }