public string Handling(IProtocol protocol, IChatClient client)
        {
            var ptc    = protocol as DeleteFriendRequestProtocol;
            var toView = new ToViewStringFormat(DateTime.Now, client.GetEndPoint().ToString(), ptc.UserRequest, "request delete friend reationship with [user:"******"]");

            int delete = 0;

            try
            {
                delete = Delete(ptc.UserRequest, ptc.UserDelete);
            }
            catch (Exception ex)
            {
                toView.Message += "error to delete relationship \n detail : " + ex.Message;
                return(toView.ToString());
            }

            IChatClient _client = null;

            if (Instance.OnlineUser.TryGetValue(ptc.UserDelete, out _client))
            {
                var accounts = new List <Account>();
                try
                {
                    accounts = NewListFriend(ptc.UserDelete);
                }
                catch (Exception ex)
                {
                    toView.Message += "error get list friend from db \n deltail : " + ex.Message;
                }
                _client.ResponseGetListFriends(accounts);
            }

            return(toView.ToString());
        }
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var    ptc    = protocol as GroupMessageProtocol;
            string toView = "[" + DateTime.Now + "] [" + client.GetEndPoint() + "] [user:"******"] send a message to group " + ptc.message.GroupReceive;

            try
            {
                InsertMessage(ptc.message);
            }
            catch (Exception ex)
            {
                toView += "\n insert group message failed \n detail : " + ex.Message;
            }

            var accounts = GetUserInGroupExceptMe(ptc.message.GroupReceive, ptc.message.Sender);

            foreach (var item in accounts)
            {
                IChatClient clt;
                if (Instance.OnlineUser.TryGetValue(item.Email, out clt))
                {
                    clt.SendGroupMessage(ptc.message);
                }
            }
            return(toView);
        }
Пример #3
0
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var ptc    = protocol as GetFriendStreamingRequestProtocol;
            var toView = new ToViewStringFormat(DateTime.Now, client.GetEndPoint().ToString(), ptc.Email, "get list friends are streaming");

            var listFriend = new List <ChatDataModel.Account>();

            try
            {
                listFriend = GetListFriend(ptc.Email);
            }
            catch (Exception ex)
            {
                toView.Message += "error to use db\n detail : " + ex.Message;
            }

            var listFriendStreaming = new List <ChatDataModel.AccountStream>();

            foreach (var item in listFriend)
            {
                lock (this)
                {
                    string value = "";
                    if (Instance.Streaming.TryGetValue(item.Email, out value))
                    {
                        Console.WriteLine(value);
                        listFriendStreaming.Add(new ChatDataModel.AccountStream(item.Name, item.AvatarDriveID, value));
                    }
                }
            }

            client.ResponseListUserStreaming(listFriendStreaming);
            return(toView.ToString());
        }
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var    ptc    = protocol as LogoutProtocol;
            string toView = "[" + DateTime.Now + "] [" + client.GetEndPoint() + "] [user:"******"] log out";

            lock (syncLock)
            {
                Instance.OnlineUser.Remove(ptc.Email);
            }
            return(toView);
        }
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var ptc    = protocol as LeaveGroupRequestProtocol;
            var toView = new ChatProtocol.Ulti.ToViewStringFormat(DateTime.Now, client.GetEndPoint().ToString(), ptc.Email, "leave group [" + ptc.GroupId + "]");

            int rowAffect = 0;

            try
            {
                rowAffect       = Delete(ptc.Email, ptc.GroupId);
                toView.Message += "\n delete in db successful , " + rowAffect + " " + ptc.Email;
            }
            catch (Exception ex)
            {
                toView.Message = "\n delete failed \n Detail : " + ex.Message;
                return(toView.ToString());
            }

            //gửi lại  đã xóa được hay chưa
            client.ResponseLeaveGroup(rowAffect, ptc.GroupId);

            if (rowAffect == 0)
            {
                return(toView.Message);
            }
            //gửi lại cho các member trong nhóm danh sách thành viên mới
            List <Account> accounts = new List <Account>();

            try
            {
                accounts = GetUserExceptMe(ptc.Email, ptc.GroupId);
            }
            catch (Exception ex)
            {
                toView.Message += "\n failed get list account to send new list uer in group \n Detail: " + ex.Message;
                return(toView.ToString());
            }
            if (accounts.Count > 0)
            {
                foreach (var item in accounts)
                {
                    IChatClient _client = null;
                    if (Instance.OnlineUser.TryGetValue(item.Email, out _client))
                    {
                        _client.ResponseGetUserInGroup(ptc.GroupId, accounts);
                    }
                }
            }
            toView.Message += "\n send new list accounts succesful";

            return(toView.ToString());
        }
Пример #6
0
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var ptc    = protocol as AskBeFriendRequestProtocol;
            var toView = new ChatProtocol.Ulti.ToViewStringFormat(DateTime.Now, client.GetEndPoint().ToString(), ptc.SenderEmail, " delete friend invitation with [user: "******"]");
            int delete = 0;

            try
            {
                delete = Delete(new FriendResquestNotExcept(ptc.SenderEmail, ptc.ReceiverEmail, DateTime.Now));
            }
            catch (Exception ex)
            {
                toView.Message += "Error to Delete request from db \n deltai : " + ex.Message;
                return(toView.ToString());
            }


            var accounts = new List <Account>();

            try
            {
                accounts = ListUserISendFriendRequest(ptc.SenderEmail);
            }
            catch (Exception ex)
            {
                toView.Message += "error get list account from db \n deltail : " + ex.Message;
                return(toView.ToString());
            }
            client.ResponseGetListUserIRequestAddFriend(accounts);

            var accs = new List <Account>();

            try
            {
                accs = ListUserRequestAddFriendOfReceiveUser(ptc.ReceiverEmail);
            }
            catch (Exception ex)
            {
                toView.Message += "error get list account from db \n deltail : " + ex.Message;
                return(toView.ToString());
            }
            IChatClient _client = null;

            if (Instance.OnlineUser.TryGetValue(ptc.ReceiverEmail, out _client))
            {
                _client.ResponseGetListUserRequestAddFriend(accs);
            }

            toView.Message += " handling successful!";

            return(toView.ToString());
        }
Пример #7
0
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var ptc      = protocol as LiveStreamRequestProtocol;
            var toView   = new ToViewStringFormat(DateTime.Now, client.GetEndPoint().ToString(), ptc.Email, "request create a stream video");
            var streamID = Guid.NewGuid().ToString();

            client.ResponseStreamID(streamID);
            lock (synclock)
            {
                Instance.Streaming.Add(ptc.Email, streamID);
            }
            return(toView.ToString());
        }
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var ptc    = protocol as AddUsersToGroupRequestProtocol;
            var toView = new ToViewStringFormat(DateTime.Now, client.GetEndPoint().ToString(), "null", "Add user to group " + ptc.GroupId);


            int isSuccess = 0;

            try
            {
                isSuccess      = Insert(ptc.Email, ptc.GroupId);
                toView.Message = "Insert Successful";
            }
            catch (Exception ex)
            {
                toView.Message = "Insert failed \n detail : " + ex.Message;
            }

            client.ResponseAddFriendToGroup(isSuccess, ptc.GroupId);

            if (isSuccess == 1)
            {
                var accounts = GetUserInGroup(ptc.GroupId);
                foreach (var item in accounts)
                {
                    IChatClient _client = null;
                    if (item.Email != ptc.EmailRequest && !Instance.OnlineUser.TryGetValue(item.Email, out client))
                    {
                        _client.ResponseGetUserInGroup(ptc.GroupId, accounts);
                    }
                }
            }
            List <Group> listGroup = new List <Group>();

            try
            {
                listGroup = GetListGroup(ptc.Email);
            }
            catch (Exception)
            {
            }
            IChatClient cl;

            if (Instance.OnlineUser.TryGetValue(ptc.Email, out cl) && listGroup.Count > 0)
            {
                cl.ResponseGetGroups(listGroup);
            }

            return(toView.ToString());
        }
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var    ptc         = protocol as GetListFriendsRequestProtocol;
            string toView      = "[" + DateTime.Now + "] [" + client.GetEndPoint() + "] [user:"******"] get list friends ";
            var    listFriends = ListFriends(ptc.Email);

            if (listFriends.Count == 0)
            {
                toView += "\n list friend is empty";
                return(toView);
            }
            client.ResponseGetListFriends(listFriends);
            return(toView += "\n get list friend successful ");
        }
Пример #10
0
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var    ptc     = protocol as HistoryChatRequestProtocol;
            string toView  = "[" + DateTime.Now + "] [" + client.GetEndPoint() + "] [user:"******"] get chat history with [user:"******"\n Don't have conversation yet";
                return(toView);
            }
            client.ResponseGetChatHistory(history);
            toView += "\n Get history successful";
            return(toView);
        }
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var    ptc       = protocol as GetGroupChatRequestProtocol;
            string toView    = "[" + DateTime.Now + "] [" + client.GetEndPoint() + "] [user:"******"] get groups chat";
            var    listGroup = GetListGroup(ptc.Email);

            if (listGroup.Count == 0)
            {
                toView += "\n list group empty";
                return(toView);
            }
            client.ResponseGetGroups(listGroup);
            toView += "\n get list group OK!";
            return(toView);
        }
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var    ptc      = protocol as GetUserInGroupResquestProtocol;
            string toString = "[" + DateTime.Now + "] [" + client.GetEndPoint() + "] [user:"******"] : Get All User in Group ";

            try
            {
                var listUser = GetUserInGroup(ptc.Email, ptc.GroupId);
                client.ResponseGetUserInGroup(ptc.GroupId, listUser);
                toString += "\n Get list user successfull";
            }
            catch (Exception ex)
            {
                toString += "\n Get list failed \n detail : " + ex.Message;
            }
            return(toString);
        }
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var ptc      = protocol as GetListAskBeFriendRequestProtocol;
            var toView   = new ChatProtocol.Ulti.ToViewStringFormat(DateTime.Now, client.GetEndPoint().ToString(), ptc.Email, "get list user that this user sended friend request");
            var accounts = new List <Account>();

            try
            {
                accounts = ListUserIAskBeFriend(ptc.Email);
            }
            catch (Exception ex)
            {
                toView.Message += "error get list account from db \n detail : " + ex.Message;
                return(toView.ToString());
            }
            client.ResponseGetListUserIRequestAddFriend(accounts);
            return(toView.ToString());
        }
Пример #14
0
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var ptc      = protocol as GetListAskBeFriendRequestProtocol;
            var toView   = new ChatProtocol.Ulti.ToViewStringFormat(DateTime.Now, client.GetEndPoint().ToString(), ptc.Email, "request get all request add be friend");
            var accounts = new List <Account>();

            try
            {
                accounts = ListAccountSendFriendRequest(ptc.Email);
            }
            catch (Exception ex)
            {
                toView.Message += " db error \n detail : " + ex.Message;
                return(toView.ToString());
            }

            client.ResponseGetListUserRequestAddFriend(accounts);
            return(toView.ToString());
        }
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var    ptc       = protocol as UpdateAvatarRequestProtocol;
            string toView    = "[" + DateTime.Now + "] [" + client.GetEndPoint() + "] [user:"******"] request Change avatar ";
            int    isSuccess = UpdateAvatar(ptc.Email, ptc.DriveFileId);

            if (isSuccess != 1)
            {
                // gửi về không thành công
                client.ResponseUpdateAvatar(0, ptc.DriveFileId);
                toView += "\n non successful";
                return(toView);
            }

            client.ResponseUpdateAvatar(1, ptc.DriveFileId);
            toView += "\n update successful";

            return(toView);
        }
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var ptc    = protocol as AskBeFriendRequestProtocol;
            var toView = new ToViewStringFormat(DateTime.Now, client.GetEndPoint().ToString(), ptc.SenderEmail, "Send a friend requset to user[" + ptc.ReceiverEmail + "]");


            try
            {
                var request = new FriendResquestNotExcept(ptc.SenderEmail, ptc.ReceiverEmail, DateTime.Now);
                Insert(request);
                toView.Message += "\n insert request successful";
            }
            catch (Exception ex)
            {
                toView.Message += "\n insert request to db Failed \n detail : " + ex.Message;;
                return(toView.ToString());
            }

            IChatClient _client = null;

            if (Instance.OnlineUser.TryGetValue(ptc.ReceiverEmail, out _client))
            {
                _client.ResponseGetListUserRequestAddFriend(ListRequestOfUser(ptc.ReceiverEmail));
                toView.Message += " send friend request successful!";
            }

            var accounts = new List <Account>();

            try
            {
                accounts = GetRequestIAsk(ptc.SenderEmail);
            }
            catch (Exception ex)
            {
                toView.Message += "error get list user from db \n detail : " + ex.Message;
                return(toView.ToString());
            }

            client.ResponseGetListUserIRequestAddFriend(accounts);

            return(toView.ToString());
        }
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var ptc    = protocol as HistoryChatGroupRequestProtocol;
            var toView = "[" + DateTime.Now + "] [" + client.GetEndPoint() + "] [user:"******"] get history with group chat [" + ptc.GroupId + "]";

            try
            {
                var messages = GetMessages(ptc.GroupId);
                if (messages.Count != 0)
                {
                    client.ResponseGetChatGroupHistory(messages);
                    toView += "\n get history successul";
                }
            }
            catch (Exception)
            {
                toView += "\n get history failed";
            }
            return(toView);
        }
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var            ptc      = protocol as GetFriendNotInGroupRequestProtocol;
            var            toView   = "[" + DateTime.Now + "] [" + client.GetEndPoint() + "] [user: "******"] get list friend not in group [" + ptc.GroupId + "]";
            List <Account> accounts = new List <Account>();

            try
            {
                accounts = GetAccountNotInGroup(ptc.Email, ptc.GroupId);
            }
            catch (Exception ex)
            {
                toView += "\n Get List Account not in Group Failed \n detail: " + ex.Message;
                return(toView);
            }
            if (accounts.Count > 0)
            {
                client.ResponseFriendNotInGroup(accounts);
            }
            toView += "\n send list friend not in group chat successful";
            return(toView);
        }
Пример #19
0
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var ptc    = protocol as FindUserRequestProtocol;
            var toView = new Ulti.ToViewStringFormat(DateTime.Now, client.GetEndPoint().ToString(), ptc.Email, "find users has name is " + ptc.Query);

            var accounts = new List <Account>();

            try
            {
                accounts = FindUsersResult(ptc.Email, ptc.Query);
            }
            catch (Exception ex)
            {
                toView.Message += "error to find user \n detail : " + ex.Message;
                return(toView.ToString());
            }
            if (accounts.Count < 0)
            {
                toView.Message += "\n list empty";
            }
            client.ResponseUserDugOut(accounts);
            return(toView.ToString());
        }
Пример #20
0
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var    ptc    = protocol as MessageProtocol;
            string toView = "[" + DateTime.Now + "] [" + client.GetEndPoint() + "] [user:"******"] send a message to [user:"******"]";


            try
            {
                InsertCall(ptc.Message.Call);
            }
            catch (Exception ex)
            {
                toView += "\n Can't not update this Message to database \n detail : " + ex.Message;
            }

            try
            {
                InsertMessage(ptc.Message);
            }
            catch (Exception ex)
            {
                toView += "\n Can't not update this Message to database \n detail : " + ex.Message;
            }

            if (!IsUserOnline(ptc.Message.Receiver))
            {
                lock (lockInstance)
                {
                    Instance.MessageHadNotSended.Add(ptc.Message);
                    return(toView);
                }
            }

            GetUserOnline(ptc.Message.Receiver).SendMessage(ptc.Message);

            return(toView);
        }
Пример #21
0
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var ptc    = protocol as CreateGroupRequestProtocol;
            var toView = new ChatProtocol.Ulti.ToViewStringFormat(DateTime.Now, client.GetEndPoint().ToString(), ptc.Group.UserCreate, " request create a group with name " + ptc.Group.Name);

            int insert = 0;

            try
            {
                insert = Insert(ptc.Group);
            }
            catch (Exception ex)
            {
                toView.Message += "\n cannot insert Group to database \n detail: " + ex.Message;
                return(toView.ToString());
            }

            if (insert == 0)
            {
                client.ResponseCreateGroupChat(insert, new List <Group>()); return(toView.ToString());
            }

            try
            {
                InsertUserToGroup(ptc.Group.UserCreate, ptc.Group.Id);
            }
            catch (Exception ex)
            {
                toView.Message += "\n Error add user " + ptc.Group.UserCreate + " to groups " + ptc.Group.Id + " \n detail : " + ex.Message;
            }

            foreach (var item in ptc.Accounts)
            {
                try
                {
                    InsertUserToGroup(item, ptc.Group.Id);
                }
                catch (Exception ex)
                {
                    toView.Message += "\n Error add user " + item + " to groups " + ptc.Group.Id + " \n detail : " + ex.Message;
                }
            }

            var listGroup = new List <Group>();

            try
            {
                listGroup = GetListGroup(ptc.Group.UserCreate);
            }
            catch (Exception ex)
            {
                toView.Message += "\n Error get list group \n detail : " + ex.Message;
            }

            client.ResponseGetGroups(listGroup);

            foreach (var item in ptc.Accounts)
            {
                IChatClient _client = null;
                if (Instance.OnlineUser.TryGetValue(item, out _client))
                {
                    _client.ResponseGetGroups(GetListGroup(item));
                }
            }

            toView.Message += "\n Create Group Successful";

            return(toView.ToString());
        }
Пример #22
0
 private static void _server_OnNewConnect(IChatClient obj)
 {
     Console.WriteLine(obj.GetEndPoint().ToString());
 }
Пример #23
0
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var ptc    = protocol as AcceptFriendRequestProtocol;
            var toView = new ChatProtocol.Ulti.ToViewStringFormat(DateTime.Now, client.GetEndPoint().ToString(), ptc.UserAccept, "");
            //xóa record trong list lời mời
            int delete = 0;

            try
            {
                delete = DeleteRecord(new FriendResquestNotExcept(ptc.UserRequest, ptc.UserAccept, DateTime.Now));
            }
            catch (Exception ex)
            {
                toView.Message += "error to delete record \n detail : " + ex.Message;
                return(toView.ToString());
            }

            int insert = 0;

            if (ptc.IsAccept == 1)
            {
                try
                {
                    insert = InsertFriend(ptc.UserRequest, ptc.UserAccept);
                }
                catch (Exception ex)
                {
                    toView.Message += "error Insert Friend to db \n detail : " + ex.Message;
                    return(toView.ToString());
                }
            }

            /*
             * var requests = new List<Account>();
             * try
             * {
             *  requests = ListRequest(ptc.UserAccept);
             * }
             * catch (Exception ex)
             * {
             *  toView.Message += "error get from db \n detail : " + ex.Message;
             * }
             *
             * client.ResponseGetListUserRequestAddFriend(requests);
             */
            var accs = new List <Account>();

            try
            {
                accs = NewListFriend(ptc.UserAccept);
            }
            catch (Exception ex)
            {
                toView.Message += ex.Message;
            }

            client.ResponseGetListFriends(accs);

            IChatClient _client = null;

            if (!Instance.OnlineUser.TryGetValue(ptc.UserRequest, out _client))
            {
                return(toView.ToString());
            }
            var accounts = new List <Account>();

            try
            {
                accounts = NewListFriend(ptc.UserRequest);
            }
            catch (Exception ex)
            {
                toView.Message += ex.Message;
            }
            _client.ResponseGetListFriends(accounts);

            return(toView.ToString());
        }
        public string Handling(IProtocol protocol, IChatClient client)
        {
            var ptc = protocol as KickUserOutGroupRequestProtocol;

            ChatProtocol.Ulti.ToViewStringFormat toVIew = new ChatProtocol.Ulti.ToViewStringFormat(DateTime.Now, client.GetEndPoint().ToString(), ptc.EmailRequest, " request kick [user:"******"] out group [" + ptc.GroupId + "]");

            //check is this user create group
            bool _isUserCreateGroup;

            try
            {
                _isUserCreateGroup = IsUserCreateGroup(ptc.EmailRequest, ptc.GroupId);
            }
            catch (Exception ex)
            {
                toVIew.Message += "\n Check is user create group failed. \n detail : " + ex.Message;
                return(toVIew.ToString());
            }

            if (!_isUserCreateGroup)
            {
                client.ResponseKickUserOutGroup(0, ptc.GroupId, ptc.KickEmail, "Only the creator of the group can invite others out of the group");
                toVIew.Message += "User is not creator. Can not kick user out of group";
                return(toVIew.ToString());
            }

            int rowAffect = 0;

            try
            {
                rowAffect = DeleteUser(ptc.KickEmail, ptc.GroupId);
            }
            catch (Exception ex)
            {
                toVIew.Message += "\n can not delete user in group from database \n detail:" + ex.Message;
                return(toVIew.ToString());
            }

            client.ResponseKickUserOutGroup(1, ptc.GroupId, ptc.KickEmail, "kick successful");

            // gửi thông báo đến các user khác
            List <Group> group = new List <Group>();

            try
            {
                group = GetListGroup(ptc.KickEmail);
            }
            catch (Exception ex)
            {
                toVIew.Message += "can not get group \n detail: " + ex.Message;
                return(toVIew.ToString());
            }
            IChatClient _client = null;

            if (Instance.OnlineUser.TryGetValue(ptc.KickEmail, out _client))
            {
                _client.ResponseGetGroups(group);
            }

            var accounts = new List <Account>();

            try
            {
                accounts = GetListAccountInGroup(ptc.GroupId, ptc.EmailRequest);
            }
            catch (Exception ex)
            {
                toVIew.Message += " error \n detail : " + ex.Message;
                return(toVIew.ToString());
            }

            foreach (var item in accounts)
            {
                IChatClient _cl = null;
                if (Instance.OnlineUser.TryGetValue(item.Email, out _cl))
                {
                    _cl.ResponseGetUserInGroup(ptc.GroupId, accounts);
                }
            }

            return(toVIew.ToString());
        }