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 { useCookies } from "react-cookie"; import classNames from 'classnames'; const GuardasSeguridad = () => { let emptyGuarda = { _id: null, dni: '', name: '', last_name: '', email: '', phone: '', password: '', user_type: '1', status: '1', status_text: '', date_entry: Date.now(), community_id: '', }; const [listaGuardas, setListaGuardas] = useState([]); const [urlFetch, setUrlFetch] = useState('http://localhost:4000/user/findGuards/'); const [guarda, setGuarda] = useState(emptyGuarda); const [selectedGuardas, setSelectedGuardas] = useState(null); const [globalFilter, setGlobalFilter] = useState(null); const [deleteGuardaDialog, setDeleteGuardaDialog] = useState(false); const [deleteGuardasDialog, setDeleteGuardasDialog] = useState(false); const [saveButtonTitle, setSaveButtonTitle] = useState("Registrar"); const toast = useRef(null); const dt = useRef(null); const [cookies, setCookie] = useCookies(); const [changeStatusGuardDialog, setChangeStatusGuardDialog] = useState(false); const [guardDialog, setGuardDialog] = useState(false); const [submitted, setSubmitted] = useState(false); const [formGuardDialog, setFormGuardDialog] = useState(false); async function listaGuardasF() { let nombres = await fetch((urlFetch + cookies.community_id), { method: 'GET' }); let listaGuardasRes = await nombres.json(); let data = await listaGuardasRes.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'; } }) setListaGuardas(await data); } useEffect(() => { listaGuardasF(); }, []) function registrarGuarda() { var data = { dni: document.getElementById('dni').value, name: document.getElementById('name').value, last_name: document.getElementById('last_name').value, email: document.getElementById('email').value, phone: document.getElementById('phone').value, password: document.getElementById('email').value, user_type: "4", //4 es guarda status: "1", date_entry: Date.now(), community_id: cookies.community_id }; if (guarda._id === null) { console.log('ssss'); fetch('http://localhost:4000/user/createGuard', { cache: 'no-cache', method: 'POST', mode: 'cors', body: JSON.stringify(data), headers: { 'Content-Type': 'application/json' } }).then((response) => { if (response.status != 201) console.log(`Ocurrió un error con el servicio: ${response.status}`); else return response.json(); }).then(() => { listaGuardasF(); setFormGuardDialog(false) setGuarda(emptyGuarda) }).catch( err => console.log('Ocurrió un error con el fetch', err) ); } else { data._id = guarda._id; console.log(`Actualizando guarda: ${data}`); fetch(`http://localhost:4000/user/updateGuard/${guarda._id}`, { cache: 'no-cache', method: 'PUT', body: JSON.stringify(data), headers: { 'Content-Type': 'application/json', }, }).then((response) => { if (response.status !== 200) console.log(`Ocurrió un error con el servicio: ${response.status}`); else return response.json(); }).then(() => { toast.current.show({ severity: 'success', summary: 'Guarda actualizada', detail: 'Guarda actualizado correctamente' }); setGuarda(emptyGuarda); setFormGuardDialog(false) listaGuardasF(); }) } setSaveButtonTitle("Registrar"); } const cambiarStatusUser = () => { if (guarda.status == '1') { guarda.status = '0'; guarda.status_text = 'Inactivo'; } else if (guarda.status == '0') { guarda.status = '1'; guarda.status_text = 'Activo'; } var data = { id: guarda._id, status: guarda.status, }; fetch('http://localhost:4000/user/changeStatus', { cache: 'no-cache', method: 'POST', body: JSON.stringify(data), headers: { 'Content-Type': 'application/json' } }).then((response) => { if (response.status != 201) console.log(`Ocurrió un error con el servicio: ${response.status}`); else return response.json(); }).then(() => { setChangeStatusGuardDialog(false); toast.current.show({ severity: 'success', summary: 'Éxito', detail: 'Guarda de Seguridad Actualizado', life: 3000, }); }).catch( err => console.log('Ocurrió un error con el fetch', err) ); } const deleteGuarda = () => { fetch(`http://localhost:4000/user/deleteAdminSystem/${guarda._id}`, { cache: 'no-cache', method: 'DELETE', headers: { 'Content-Type': 'application/json' } }).then((response) => { if (response.status != 201) console.log(`Ocurrió un error con el servicio: ${response.status}`); else return response.json(); }).then(function () { let _guarda = listaGuardas.filter(val => val._id !== guarda._id); setListaGuardas(_guarda); setDeleteGuardaDialog(false); setGuarda(emptyGuarda); 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 deleteSelectedGuardas = () => { let _guardas = listaGuardas.filter(val => !selectedGuardas.includes(val)); selectedGuardas.map((item) => { fetch('http://localhost:4000/user/deleteAdminSystem/' + item._id, { cache: 'no-cache', method: 'DELETE', headers: { 'Content-Type': 'application/json' } }) }) setListaGuardas(_guardas); setDeleteGuardasDialog(false); setSelectedGuardas(null); toast.current.show({ severity: 'success', summary: 'Éxito', detail: 'Administradores del Sistema Eliminados', life: 3000 }); } const hideDeleteGuardaDialog = () => { setDeleteGuardaDialog(false); } const hideDeleteGuardasDialog = () => { setDeleteGuardasDialog(false); } const confirmDeleteGuarda = (guarda) => { setGuarda(guarda); setDeleteGuardaDialog(true); } const confirmDeleteSelected = () => { setDeleteGuardasDialog(true); } const hideChangeStatusGuardDialog = () => { setChangeStatusGuardDialog(false); }; const confirmChangeStatusGuard = (guard) => { setGuarda(guard); setChangeStatusGuardDialog(true); }; const hideGuardDialog = () => { setSubmitted(false); setGuardDialog(false); }; const infoGuard = (guard) => { setGuarda(guard); setGuardDialog(true); }; const editGuard = (guard) => { setGuarda(guard); setFormGuardDialog(true) setSaveButtonTitle("Actualizar"); } const cancelEdit = () => { setGuarda(emptyGuarda); setSaveButtonTitle("Registrar"); setFormGuardDialog(false) } const openNewGuard = () => { setGuarda(emptyGuarda); setFormGuardDialog(true) setSubmitted(false); }; const hideFormGuardDialog = () => { setSubmitted(false); setFormGuardDialog(false) setGuarda(emptyGuarda); setSaveButtonTitle('Registrar'); } const actionsGuard = (rowData) => { let icono = ''; let text = ''; if (rowData.status == '0') { icono = "pi pi-eye"; text = "Activar Guarda de Seguridad" } else if (rowData.status == '1') { icono = "pi pi-eye-slash"; text = "Inactivar Guarda de Seguridad" } return (
); } const leftToolbarTemplate = () => { return (
) } const rightToolbarTemplate = () => { return (