Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import React, { useState, useContext } from "react";
import { Redirect, useParams } from "react-router-dom";
import { LinkContainer } from "react-router-bootstrap";
import { Form, Col, Spinner, Alert, Button, Modal } from "react-bootstrap";
import MemberForm from "./MemberForm";
import Sender from "../Sender";
import Fetcher from "../Fetcher";
import AuthContext from "../AuthContext";
import { url } from "../util";
function MemberEditer() {
const { num } = useParams();
const auth = useContext(AuthContext);
const [member, setMember] = useState({
num: "",
name: "",
email: "",
phone: "",
role: "member",
});
const [error, setError] = useState("");
const [showDelete, setShowDelete] = useState(false);
const [loading, setLoading] = useState(false);
const [redirect, setRedirect] = useState(false);
const setMembers = (members) => {
const mem = members.find((m) => m.num === parseInt(num));
if (!mem) {
setError("Numero de socia invalido");
} else {
setMember({
num: mem.num,
name: mem.name,
email: mem.email,
phone: mem.phone,
role: mem.role,
});
}
};
const handleClose = () => setShowDelete(false);
const delMember = () => {
setLoading(true);
fetch(url("/api/member/" + num), {
headers: { "x-authentication": auth.token },
method: "DELETE",
}).then((response) => {
if (!response.ok) {
setError(
"No pudo eliminar la socia: " +
response.status.toString() +
" " +
response.statusText
);
} else {
setRedirect(true);
}
});
};
if (redirect) {
return <Redirect to="/members" />;
}
if (loading) {
return <Spinner animation="border" />;
}
if (error) {
return <Alert variant="danger">{error}</Alert>;
}
const invalid = !member.num || !member.name || !member.email;
return (
<Fetcher url="/api/member" onFetch={setMembers} oneShot>
<Sender
url={"/api/member/" + num}
method="PUT"
body={member}
onSuccess={() => setRedirect(true)}
>
<MemberForm value={member} onChange={setMember} />
<Form.Row>
<Button type="submit" disabled={invalid}>
Guardar
</Button>
<LinkContainer to="/members">
<Button variant="secondary">Cancelar</Button>
</LinkContainer>
<Col className="text-right">
<Button variant="danger" onClick={() => setShowDelete(true)}>
Eliminar
</Button>
</Col>
</Form.Row>
<Modal show={showDelete} onHide={handleClose}>
<Modal.Header closeButton>
<Modal.Title>Confirmar la elminicacion</Modal.Title>
</Modal.Header>
<Modal.Body>
¿Borrar la cuenta permanentemente la cuenta de {member.name}?
</Modal.Body>
<Modal.Footer>
<Button variant="secondary" onClick={handleClose}>
Cancelar
</Button>
<Button variant="danger" onClick={delMember}>
Eliminar
</Button>
</Modal.Footer>
</Modal>
</Sender>
</Fetcher>
);
}
export default MemberEditer;