Пример #1
0
        /// <summary>
        /// Cài đặt thông tin user
        /// </summary>
        /// <param name="UserID">ID của user</param>
        public void Init(int UserID)
        {
            userId = UserID;

            groupFriend = FriendList(userId);                                   //Lấy danh sách bạn bè trên CSDL
            List <Users> Requests           = FriendRequests(userId);           //Lấy các yêu cầu kết bạn trên CSDL
            List <Users> UnresponseRequests = UnresponseFriendRequests(userId); //Lấy các yêu cầu kết bạn đang đợi phản hồi trên CSDL

            //CÁC CÀI ĐẶT CHO CÁC MODULE
            changeAvatarModule.ChangeAvatarFor(userId);

            addFriendModule = new AddFriend.AddFriend();
            addFriendModule.SetUser(userId);
            addFriendModule.SetGroups(GroupFriend.FriendGroups);
            addFriendModule.OnAddFriendSuccess += new AddFriend.AddFriend.AddingHandler(AddFriendModule_OnAddFriendSuccess);
            addFriendModule.OnAddFriendError   += new AddFriend.AddFriend.AddingHandler(AddFriendModule_OnAddFriendError);

            removeGroupModule = new Module.RemoveGroup.RemoveGroup();
            removeGroupModule.SetUser(userId);
            removeGroupModule.SetGroups(GroupFriend.FriendGroups);
            removeGroupModule.IntegratedWith(this);

            contactViewerModule = new ContactViewer.ContactViewer();

            groupTree = new GroupTreeViewModel(GroupFriend.FriendGroups);
            groupTree.OnMoveContact   += new GroupTreeViewModel.FriendHandler(GroupTree_OnMoveContact);
            groupTree.OnRemoveContact += new GroupTreeViewModel.FriendHandler(GroupTree_OnRemoveContact);

            requestVM = new RequestViewModel(Requests);
            requestVM.OnAcceptRequest += new RequestViewModel.RequestHandler(RequestVM_OnAcceptRequest);
            requestVM.OnIgnoreRequest += new RequestViewModel.RequestHandler(RequestVM_OnIgnoreRequest);

            unrespRequestVM = new RequestViewModel(UnresponseRequests);

            //Gửi yêu cầu kiểm tra trạng thái online/offline của bạn bè
            foreach (FriendGroup group in GroupFriend.FriendGroups)
            {
                foreach (Users friend in group.Friends)
                {
                    this.Get <Client>().SendCommand(Core.Data.CommandType.CheckOnline, "SERVER", friend.Username);
                }
            }

            this.DataContext = this;

            //Khởi tạo đối tượng dùng để cập nhập liên tục các yêu cầu kết bạn mới và những yêu cầu kết bạn đang chờ phản hồi đã được chấp nhận

            updateRequest          = new DispatcherTimer();
            updateRequest.Interval = TimeSpan.FromMilliseconds(1000);
            updateRequest.Tick    += new EventHandler(UpdateRequest_Tick);

            updateUnresponseRequest          = new DispatcherTimer();
            updateUnresponseRequest.Interval = TimeSpan.FromMilliseconds(1000);
            updateUnresponseRequest.Tick    += new EventHandler(UpdateUnresponseRequest_Tick);

            updateRequest.Start();
            updateUnresponseRequest.Start();
        }
Пример #2
0
        public static GroupFriendList FriendList(this Users um, int UserID)
        {
            List <FriendGroup> Groups = db.FriendGroup
                                        .Include(g => g.Owner)
                                        .Where(g => g.Owner.UserID == UserID)
                                        .DistinctList();

            List <FriendMap> FriendMap = db.FriendMap
                                         .Include(m => m.User)
                                         .Include(m => m.Friend)
                                         .Include(m => m.FriendGroup)
                                         .Where(
                m => m.User.UserID == UserID &&
                m.IsAccepted == true && m.IsIgnored == false
                )
                                         .DistinctList();

            foreach (FriendGroup Group in Groups)
            {
                List <FriendMap> FriendMapFiltered = FriendMap.Where(fm => fm.FriendGroup.GroupID == Group.GroupID).ToList();
                List <Users>     MyFriends         = FriendMapFiltered.Select(mf => mf.Friend).ToList();

                foreach (Users friend in MyFriends)
                {
                    if (!Group.Friends.Contains(friend))
                    {
                        Group.Friends.Add(friend);
                    }
                }
            }

            GroupFriendList GroupFriendList = new GroupFriendList();

            foreach (FriendGroup Group in Groups)
            {
                GroupFriendList.FriendGroups.Add(Group);
            }

            return(GroupFriendList);
        }