Change user status to Active/Blocked from users table using check boxes in react

Viewed 17

I have user list in table and i wanted to change users status with selected checkbox to Active/Blocked. First i implemented checkbox and according to selected checkboxes i was deleting users with BE using nodejs and mongoose. So i wanted to select all or one user and change its status to Active/Blocked as u can see below screenshot. Can anyone help me? Here i am deleting multiple users:

 const [users, setUsers] = useState([]);
 const [isCheckAll, setIsCheckAll] = useState(false);
 const [isChecked, setisChecked] = useState([]);

const handleDeleteUser = async () => {
    const response = await fetch(`http://localhost:3001/users/deleteUsers`, {
      method: "DELETE",
      body: JSON.stringify(isChecked),
      headers: {
        "Content-Type": "application/json",
      },
    });
    if(response.status === 200){
      const data = await response.json()
      setUsers(users.filter(user => !data.find(row => row === user._id)))
    }
  };

  const handlecheckbox = (e) => {
    const { value, checked } = e.target;
    if (checked) {
      setisChecked([...isChecked, value]);
    } else {
      setisChecked(isChecked.filter((e) => e !== value));
    }
  };

  const handleSelectAll=()=> {
    setIsCheckAll(!isCheckAll);
    setisChecked(users.map(user => user._id));
    if (isCheckAll) {
      setisChecked([]);
    }
  }

Here is BE code :

userRouter.delete("/deleteUsers", async (req, res, next) => {
  try {
    const selectedUsers = req.body;
    // HARD DELETE
    UsersModel.deleteMany(
      {
        _id: {
          $in: selectedUsers,
        },
      },
      function (err, result) {
        if (err) {
          res.status(404).send(err);
        } else {
          res.status(200).send(selectedUsers);
        }
      }
    );
  } catch (error) {
    next(error);
  }
});

enter image description here

0 Answers
Related