import React, { useEffect, useState, useRef } from 'react'; import { InputText } from 'primereact/inputtext'; import { Button } from 'primereact/button'; import { DataTable } from 'primereact/datatable'; import { Column } from 'primereact/column'; import { Toast } from 'primereact/toast'; import { Dialog } from 'primereact/dialog'; import { Toolbar } from 'primereact/toolbar'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faUserAlt } from '@fortawesome/free-solid-svg-icons'; import { faPhoneAlt } from '@fortawesome/free-solid-svg-icons'; import { faAt } from '@fortawesome/free-solid-svg-icons'; import { faIdCardAlt } from '@fortawesome/free-solid-svg-icons'; 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/', ); const [sysadmin, setSysAdmin] = useState(emptySysAdmin); const [selectedAdministrators, setSelectedAdministrators] = useState(null); const [globalFilter, setGlobalFilter] = useState(null); const [deleteAdminSystemDialog, setDeleteAdminSystemDialog] = useState(false); const [deleteAdminsSystemDialog, setDeleteAdminsSystemDialog] = useState(false); const toast = useRef(null); const dt = useRef(null); const [changeStatusAdminSystemDialog, setChangeStatusAdminSystemDialog] = useState(false); const [changeStatusAdminsSystemDialog, setChangeStatusAdminsSystemDialog] = useState(false); const [adminDialog, setAdminDialog] = useState(false); const [submitted, setSubmitted] = useState(false); const [formAdminDialog, setFormAdminDialog] = useState(false); const [saveButtonTitle, setSaveButtonTitle] = useState("Registrar") async function fetchP() { let nombres = await fetch(urlFetch, { method: 'GET' }); let adminRes = await nombres.json(); let data = await adminRes.message.filter( (val) => val.status != -1, ) await data.map((item) => { if (item.status == '1') { item.status_text = 'Activo'; } else if (item.status == '0') { item.status_text = 'Inactivo'; } }) setAdministrators(await data); } useEffect(() => { fetchP(); }, []) const findIndexById = (id) => { let index = -1; for (let i = 0; i < administrators.length; i++) { if (administrators[i]._id === id) { index = i; break; } } return index; } 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 (_admin.name && _admin.dni && _admin.last_name && _admin.email && _admin.phone) { 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) setFormAdminDialog(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) setFormAdminDialog(false) } ) .catch( err => console.log('Ocurrió un error con el fetch', err) ); } } } else { setSubmitted(true); } } const cambiarStatusUser = () => { if (sysadmin.status == '1') { sysadmin.status = '0'; sysadmin.status_text = 'Inactivo'; } else if (sysadmin.status == '0') { sysadmin.status = '1'; sysadmin.status_text = 'Activo'; } var data = { id: sysadmin._id, status: sysadmin.status, }; fetch('http://localhost:4000/user/changeStatus', { 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) { setChangeStatusAdminSystemDialog(false); toast.current.show({ severity: 'success', summary: 'Éxito', detail: 'Administrador del Sistema Actualizado', life: 3000, }); } ) .catch( err => console.log('Ocurrió un error con el fetch', err) ); } const confirmDeleteAdminSystem = (sysAdmin) => { setSysAdmin(sysAdmin); setDeleteAdminSystemDialog(true); }; const confirmDeleteSelected = () => { setDeleteAdminsSystemDialog(true); }; const hideDeleteAdminSystemDialog = () => { setDeleteAdminSystemDialog(false); }; const hideDeleteAdminsSystemDialog = () => { setDeleteAdminsSystemDialog(false); }; const hideChangeStatusAdminDialog = () => { setChangeStatusAdminSystemDialog(false); }; const confirmChangeStatusAdminSystem = (sysAdmin) => { setSysAdmin(sysAdmin); setChangeStatusAdminSystemDialog(true); }; const hideAdminDialog = () => { setSubmitted(false); setAdminDialog(false); setSysAdmin(emptySysAdmin); }; const infoAdmin = (sysadmin) => { setSysAdmin({ ...sysadmin }); setAdminDialog(true); }; const cancelEdit = () => { setSaveButtonTitle('Registrar'); setSubmitted(false); setSysAdmin(emptySysAdmin); } const editAdmin = (sysadmin) => { setSysAdmin({ ...sysadmin }); setSaveButtonTitle('Actualizar'); setFormAdminDialog(true) }; const openNewAdmin = () => { setSysAdmin(emptySysAdmin); setFormAdminDialog(true) setSubmitted(false); }; const hideFormAdminDialog = () => { setSubmitted(false); setFormAdminDialog(false) setSysAdmin(emptySysAdmin); setSaveButtonTitle('Registrar'); }; const deleteSysAdmin = () => { fetch('http://localhost:4000/user/deleteAdminSystem/' + sysadmin._id, { cache: 'no-cache', method: 'DELETE', 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) { let _sysadmin = administrators.filter( (val) => (val._id !== sysadmin._id || val.status != -1), ); setAdministrators(_sysadmin); setDeleteAdminSystemDialog(false); setSysAdmin(emptySysAdmin); toast.current.show({ severity: 'success', summary: 'Éxito', detail: 'Administrador del Sistema Eliminado', life: 3000, }); }) .catch((err) => { console.log('Ocurrió un error con el fetch', err); toast.current.show({ severity: 'danger', summary: 'Error', detail: 'Administrador del Sistema no se pudo Eliminar', life: 3000, }); }); }; const deleteSelectedAdminsSystem = () => { let _administrators = administrators.filter( (val) => (!selectedAdministrators.includes(val)), ); selectedAdministrators.map((item) => { fetch('http://localhost:4000/user/deleteAdminSystem/' + item._id, { cache: 'no-cache', method: 'DELETE', headers: { 'Content-Type': 'application/json', }, }); }); _administrators = _administrators.filter( (val) => val.status != -1, ) setAdministrators(_administrators); setDeleteAdminsSystemDialog(false); setSelectedAdministrators(null); toast.current.show({ severity: 'success', summary: 'Éxito', detail: 'Administradores del Sistema Eliminados', life: 3000, }); }; const actionsAdmin = (rowData) => { let icono = ''; let text = ''; if (rowData.status == '0') { icono = "pi pi-eye"; text = "Activar Administrador" } else if (rowData.status == '1') { icono = "pi pi-eye-slash"; text = "Inactivar Administrador" } return (
); }; const leftToolbarTemplate = () => { return (
); }; const rightToolbarTemplate = () => { return (