private void RequestVM_OnAcceptRequest(Users Friend) { FriendGroup AvailableGroup = cbRequestGroup.SelectedItem as FriendGroup; //Lấy nhóm có sẵn đã được chọn trên Combobox int NewGroupID = 0; if (RequestNewGroupName != null) { if (!AddNewGroup(userId, RequestNewGroupName, ref NewGroupID)) { MessageBox.Show("Thêm nhóm mới không thành công"); } } else if (AvailableGroup == null && RequestNewGroupName == null) { MessageBox.Show("Không tồn tại nhóm có sẵn cũng như thông tin nhóm mới không hợp lệ nên không thể 'chấp nhận' yêu cầu kết bạn"); return; } FriendGroup newGroup = GetGroup(NewGroupID); //Chấp nhận yêu cầu kết bạn và thêm bạn bè vào nhóm mới nếu thông tin không bỏ trống, ngược lại sẽ thêm vào nhóm sẵn có AcceptRequest(userId, Friend.UserID, NewGroupID != 0 ? newGroup.GroupID : AvailableGroup.GroupID); //Bổ sung bạn bè cây dữ liệu GroupTree.AppendFriend(Friend, NewGroupID != 0 ? newGroup : AvailableGroup); RequestVM.RemoveRequest(Friend); //Xóa yêu cầu sau khi chấp nhận friendRequestZone.UpdateLayout(); treeFriend.UpdateLayout(); }
private void RequestVM_OnIgnoreRequest(Users Friend) { IgnoreRequest(userId, Friend.UserID); //Từ chối yêu cầu kết bạn và cập nhập thông tin lên CSDL RequestVM.RemoveRequest(Friend); //Xóa yêu cầu sau khi từ chối friendRequestZone.UpdateLayout(); }
private void UpdateRequest_Tick(object sender, EventArgs e) { int totalRequest = RequestVM.Requests.Count; requestTaskZone.Visibility = totalRequest == 0 ? Visibility.Collapsed : Visibility.Visible; List <Users> Requests = FriendRequests(userId); if (Requests.Count >= totalRequest) //Trường hợp nếu có request mới trên CSDL hoặc số request không thay đổi so với trước đó { Requests = Requests.Skip(totalRequest).ToList(); //Bỏ qua tổng số request đã lấy trước đó } else if (Requests.Count < totalRequest) //Ngược lại số request giảm (request đã được user chấp nhận hoặc từ chối { if (Requests.Count == 0) //Số request đã hết -> xóa tất cả các request đã hiển thị trên giao diện { RequestVM.ClearRequest(); } List <int> posToDelete = new List <int>(); foreach (Users Friend in Requests) //Lấy ra vị trí (index) của những request đã được user chấp nhận { for (int i = 0; i < totalRequest; i++) { if (!RequestVM.Requests[i].Friend.Equals(Friend)) { if (!posToDelete.Contains(i)) { posToDelete.Add(i); } } } } for (int i = 0; i < posToDelete.Count; i++) //Xóa những request đã được user chấp nhận khỏi danh sách request { Users MatchUser = RequestVM.Requests[i].Friend; RequestVM.RemoveRequest(MatchUser); } } if (Requests.Count == 0) //Trường hợp không có request sẽ không bổ sung vào danh sách request { return; } foreach (Users Friend in Requests) //Thêm request mới vào danh sách { RequestVM.AppendRequest(Friend); } friendRequestZone.UpdateLayout(); }