Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 145 | Rev 653 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
145 stevensc 1
import React, { useState, useEffect } from "react";
2
import { axios } from "../../utils";
3
import { Modal } from "react-bootstrap";
4
import { addNotification } from "../../redux/notification/notification.actions";
5 stevensc 5
 
6
const AddMemberModal = ({
7
  isShow = false,
145 stevensc 8
  linkInvite = "",
5 stevensc 9
  handleClose = function () {},
10
}) => {
145 stevensc 11
  const [users, setUsers] = useState([]);
12
  const [search, setSearch] = useState("");
5 stevensc 13
 
145 stevensc 14
  const handleChange = ({ target }) => setSearch(target.value);
5 stevensc 15
 
145 stevensc 16
  const searchMember = async (url, search) => {
17
    if (!url) return;
18
 
5 stevensc 19
    try {
145 stevensc 20
      const { data } = await axios.get(url + "?search=" + search);
21
      setUsers(data.data);
5 stevensc 22
    } catch (error) {
145 stevensc 23
      console.log(">>: error > ", error);
5 stevensc 24
    }
145 stevensc 25
  };
5 stevensc 26
 
27
  const invite = (uuid) => {
145 stevensc 28
    const formData = new FormData();
29
    formData.append("id", uuid);
5 stevensc 30
    axios
31
      .post(linkInvite, formData)
32
      .then(({ data }) => {
33
        if (!data.success) {
145 stevensc 34
          return addNotification({ msg: data.data, style: "danger" });
5 stevensc 35
        }
145 stevensc 36
        addNotification({ msg: data.data, style: "success" });
37
        handleClose();
5 stevensc 38
      })
39
      .catch(() =>
40
        addNotification({
145 stevensc 41
          msg: "Disculpe, ha ocurrido un error",
42
          style: "danger",
5 stevensc 43
        })
145 stevensc 44
      );
45
  };
5 stevensc 46
 
47
  useEffect(() => {
145 stevensc 48
    searchMember(linkInvite, search);
146 stevensc 49
  }, [search, linkInvite]);
5 stevensc 50
 
51
  return (
52
    <Modal show={isShow} onHide={handleClose}>
53
      <Modal.Header closeButton>
54
        <h3>Escribe el nombre</h3>
55
      </Modal.Header>
56
      <Modal.Body>
57
        <div className="container">
58
          <div className="mb-2">
59
            <input
60
              onChange={handleChange}
61
              name="search"
62
              placeholder="Escribe el nombre del usuario"
63
            />
64
          </div>
145 stevensc 65
          <ul className="d-flex flex-column w-100" style={{ gap: "1rem" }}>
66
            {users.map((element, index) => (
67
              <li key={index}>
68
                <div
69
                  className="d-flex align-items-center justify-content-between flex-column flex-md-row"
70
                  style={{ gap: ".5rem" }}
71
                >
72
                  <span>{element.text}</span>
73
                  <button
74
                    className="btn btn-primary"
75
                    onClick={() => invite(element.value)}
5 stevensc 76
                  >
145 stevensc 77
                    Invitar
78
                  </button>
79
                </div>
80
              </li>
81
            ))}
5 stevensc 82
          </ul>
83
        </div>
84
      </Modal.Body>
85
    </Modal>
145 stevensc 86
  );
87
};
5 stevensc 88
 
145 stevensc 89
export default AddMemberModal;