diff --git a/web-ui/web-react/src/components/AdministradoresSistema.js b/web-ui/web-react/src/components/AdministradoresSistema.js index dd3f84af..7bd0bd6b 100644 --- a/web-ui/web-react/src/components/AdministradoresSistema.js +++ b/web-ui/web-react/src/components/AdministradoresSistema.js @@ -15,6 +15,22 @@ import { faCircleQuestion } from '@fortawesome/free-solid-svg-icons'; import classNames from 'classnames'; const AdministradoresSistema = () => { + + + let emptySysAdmin = { + _id: null, + dni: '', + name: '', + last_name: '', + email: '', + phone: '', + password: '', + user_type: '1', + status: '1', + status_text: '', + }; + + const [administrators, setAdministrators] = useState([]); const [urlFetch, setUrlFetch] = useState( 'http://localhost:4000/user/findAdminSistema/', @@ -37,19 +53,6 @@ const AdministradoresSistema = () => { const [editAdminDialog, setEditAdminDialog] = useState(false); - let emptySysAdmin = { - _id: null, - dni: '', - name: '', - last_name: '', - email: '', - phone: '', - password: '', - user_type: '1', - status: '1', - status_text: '', - }; - async function fetchP() { let nombres = await fetch(urlFetch, { method: 'GET' }); let adminRes = await nombres.json(); @@ -82,96 +85,110 @@ const AdministradoresSistema = () => { } + const findRepeated = (name, value) => { + let _administrators = [...administrators]; + let value_filtered = _administrators.filter(item => item[`${name}`] === value); + return value_filtered.length + } + + function guardarAdmin() { let _administrators = [...administrators]; let _admin = { ...sysadmin }; - if (sysadmin._id) { - if (sysadmin.name && sysadmin.dni && sysadmin.last_name && sysadmin.email && - sysadmin.phone) { + if (_admin.name && _admin.dni && _admin.last_name && _admin.email && + _admin.phone) { - fetch('http://localhost:4000/user/updateAdminSystem/', { - cache: 'no-cache', - method: 'POST', - body: JSON.stringify(_admin), - headers: { - 'Content-Type': 'application/json' - } - }) - .then( - function (response) { - if (response.status != 201) - console.log('Ocurrió un error con el servicio: ' + response.status); - else - return response.json(); - } - ) - .then( - function (response) { - const index = findIndexById(sysadmin._id); - _administrators[index] = _admin; - toast.current.show({ - severity: 'success', - summary: 'Exito', - detail: 'Administrador Actualizado', - life: 3000, - }); - setAdministrators(_administrators) - setEditAdminDialog(false); - setSysAdmin(emptySysAdmin); - } - ) - .catch( - err => console.log('Ocurrió un error con el fetch', err) - ); - } else { + if (findRepeated('email', _admin.email) || findRepeated('dni', _admin.dni)) { setSubmitted(true); + } else { + if (_admin._id) { + + + + fetch('http://localhost:4000/user/updateAdminSystem/', { + cache: 'no-cache', + method: 'POST', + body: JSON.stringify(_admin), + headers: { + 'Content-Type': 'application/json' + } + }) + .then( + function (response) { + if (response.status != 201) + console.log('Ocurrió un error con el servicio: ' + response.status); + else + return response.json(); + } + ) + .then( + function (response) { + const index = findIndexById(sysadmin._id); + + _administrators[index] = _admin; + toast.current.show({ + severity: 'success', + summary: 'Exito', + detail: 'Administrador Actualizado', + life: 3000, + }); + setAdministrators(_administrators) + setEditAdminDialog(false); + setSysAdmin(emptySysAdmin); + } + ) + .catch( + err => console.log('Ocurrió un error con el fetch', err) + ); + + + + + + + } else { + + + fetch('http://localhost:4000/user/createAdminSystem/', { + cache: 'no-cache', + method: 'POST', + body: JSON.stringify(_admin), + headers: { + 'Content-Type': 'application/json' + } + }) + .then( + function (response) { + if (response.status != 201) + console.log('Ocurrió un error con el servicio: ' + response.status); + else + return response.json(); + } + ) + .then( + function (response) { + _administrators.push(_admin); + setAdministrators(_administrators) + } + ) + .catch( + err => console.log('Ocurrió un error con el fetch', err) + ); + } } - } else { - var data = { - dni: document.getElementById('identificacion').value, - name: document.getElementById('nombre').value, - last_name: document.getElementById('apellidos').value, - email: document.getElementById('correo_electronico').value, - phone: document.getElementById('telefono').value, - password: document.getElementById('correo_electronico').value, - user_type: "1", //1 es admin - status: "1" - }; - setSysAdmin(data) - fetch('http://localhost:4000/user/createAdminSystem/', { - cache: 'no-cache', - method: 'POST', - body: JSON.stringify(data), - headers: { - 'Content-Type': 'application/json' - } - }) - .then( - function (response) { - if (response.status != 201) - console.log('Ocurrió un error con el servicio: ' + response.status); - else - return response.json(); - } - ) - .then( - function (response) { - _administrators.push(_admin); - setAdministrators(_administrators) - } - ) - .catch( - err => console.log('Ocurrió un error con el fetch', err) - ); + + } else { + setSubmitted(true); + } } @@ -256,11 +273,14 @@ const AdministradoresSistema = () => { const infoAdmin = (sysadmin) => { setSysAdmin({ ...sysadmin }); setAdminDialog(true); + }; const hideEditAdminDialog = () => { setSubmitted(false); setEditAdminDialog(false); + setSysAdmin(emptySysAdmin); + }; const editAdmin = (sysadmin) => { @@ -862,9 +882,10 @@ const AdministradoresSistema = () => { {submitted && sysadmin.name === '' && Nombre es requirido.} + -