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());
        }
예제 #2
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());
        }
        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());
        }
예제 #4
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());
        }
예제 #5
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());
        }
        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());
        }
예제 #7
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());
        }