private void GroupTree_OnMoveContact(Users Friend, FriendGroup OldGroup) { FriendGroup NewGroup = cbNewGroup.SelectedItem as FriendGroup; //Lấy ra nhóm mới sẽ chuyển bạn bè tới int NewGroupID = 0; if (NewGroup == null || MoveNewGroupName != null) //Kiểm tra trường hợp nhóm chuyển tới (nhóm có sẵn) không có hoặc nhóm chuyển tới (nhóm mới) chưa được khai báo { if (MoveNewGroupName != null) //Nhóm mới đã khai báo thì thực hiện tạo nhóm mới trên CSDL { if (!AddNewGroup(userId, MoveNewGroupName, ref NewGroupID)) { MessageBox.Show("Thêm nhóm mới không thành công"); } } } //Thực hiện di chuyển bạn bè từ nhóm cũ tới nhóm mới. Nếu nhóm mới đã được khai báo thì di chuyển tới nhóm mới, ngược lại nếu sẽ chuyển tới nhóm có sẵn (đã chọn trước đó) MoveContact(userId, Friend.UserID, NewGroupID != 0 ? GetGroup(NewGroupID).GroupID : NewGroup.GroupID); //Di chuyển bạn bè sang nhóm mới trên cây dữ liệu. Thực hiện tương tự công việc của MoveContact GroupTree.MoveFriend(Friend, OldGroup, NewGroupID != 0 ? GetGroup(NewGroupID) : NewGroup); treeFriend.UpdateLayout(); }
/// <summary> /// Thực hiện thao tác xóa nhóm (Được gọi bởi module RemoveGroup /// </summary> /// <param name="RemoveContact">Trạng thái xóa bạn bè hay không</param> /// <param name="GroupToRemove">Đối tượng chứa thông tin nhóm sẽ xóa</param> /// <param name="GroupMoveTo">Đối tượng chứa thông tin nhóm sẽ chuyển bạn bè tới (Mặc định Null)</param> public void DoRemoveGroup(bool RemoveContact, FriendGroup GroupToRemove, FriendGroup GroupMoveTo = null) { //Trường hợp nhóm bị xóa có bạn bè và người dùng muốn xóa bạn bè trong nhóm thì... if (GroupToRemove.Friends.Count > 0 && RemoveContact) { RemoveGroup(GroupToRemove.GroupID, RemoveContact); //Xóa nhóm và tất cả bạn bè trong nhóm GroupTree.RemoveGroup(GroupToRemove); //Xóa nhóm trong cây dữ liệu treeFriend.UpdateLayout(); removeGroupWin.Close(); return; } else if (GroupToRemove.Friends.Count == 0) //Trường hợp nhóm bị xóa không có bạn bè thì.. { RemoveGroup(GroupToRemove.GroupID, false); //Xóa nhóm (Ko thực hiện thao tác xóa bạn bè) GroupTree.RemoveGroup(GroupToRemove); //Xóa nhóm trong cây dữ liệu treeFriend.UpdateLayout(); removeGroupWin.Close(); return; } //Trường hợp di chuyển bạn bè tới nhóm mới trước khi xóa //Duyệt qua tất cả bạn bè có trong nhóm cần xóa foreach (Users child in GroupToRemove.Friends) { MoveContact(userId, child.UserID, GroupMoveTo.GroupID); //Chuyển bạn bè sang nhóm mới (Cập nhập trên CSDL) GroupTree.MoveFriend(child, GroupToRemove, GroupMoveTo); //Chuyển bạn bè sang nhóm mới trong cây dữ liệu } GroupTree.RemoveGroup(GroupToRemove); //Xóa nhóm được chỉ định treeFriend.UpdateLayout(); removeGroupWin.Close(); }