Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

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