import { Button } from 'primereact/button' import { InputText } from 'primereact/inputtext' import React, { useEffect, useRef, useState } from 'react' import { DataTable } from 'primereact/datatable' import { Column } from 'primereact/column' import { Dropdown } from 'primereact/dropdown' 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 { faHashtag } from '@fortawesome/free-solid-svg-icons' import { faCircleQuestion } from '@fortawesome/free-solid-svg-icons' import { useCookies } from 'react-cookie' const Inquilinos = () => { let emptyTenant = { _id: null, dni: '', name: '', last_name: '', email: '', phone: '', password: '', community_id: '', community_name: '', number_house: 'Sin número de vivienda', user_type: '4', date_entry: new Date(), status: '1', status_text: '', } const [tenants, setTenants] = useState([]) const [tenant, setTenant] = useState(emptyTenant) const [selectedTentants, setSelectedTenants] = useState(null) const [globalFilter, setGlobalFilter] = useState(null) const [deleteTenantDialog, setDeleteTenantDialog] = useState(false) const [deleteTenantsDialog, setDeleteTenantsDialog] = useState(false) const [communitiesList, setCommunitiesList] = useState([]) const [communityId, setCommunityId] = useState(null) const [submitted, setSubmitted] = useState(false) const toast = useRef(null) const dt = useRef(null) const [cookies, setCookie] = useCookies() const [changeStatusTenantDialog, setChangeStatusTenantDialog] = useState(false) async function tenantsList() { await fetch( `http://localhost:4000/user/findTenants/${cookies.community_id}`, { method: 'GET' }, ) .then((response) => response.json()) .then((data) => data.message) .then((data) => { data = data.filter((val) => val.status != -1) data.map((item) => { if (item.status == '1') { item.status_text = 'Activo' } else if (item.status == '0') { item.status_text = 'Inactivo' } if (item.number_house == '') { item.number_house = 'Sin vivienda asignada' } }) setTenants(data) }) } async function getCommunites() { let response = await fetch( 'http://localhost:4000/community/allCommunities', { method: 'GET' }, ) let resList = await response.json() let list = await resList.message list = await list.filter((val) => val.status != -1) setCommunitiesList(await list) } useEffect(() => { tenantsList() }, []) useEffect(() => { getCommunites() }, []) const cList = communitiesList.map((item) => ({ label: item.name, value: item._id, })) function registrarInquilino() { let newTenant = { _id: null, dni: '', name: '', last_name: '', email: document.getElementById('correo_electronico').value, phone: '', password: '', community_id: document.getElementById('numero_vivienda').value, community_name: '', number_house: 'Sin número de vivienda', date_entry: new Date(), user_type: '3', status: '1', status_text: '', } fetch('http://localhost:3000/api/createUser', { method: 'POST', cache: 'no-cache', body: JSON.stringify(newTenant), headers: { 'Content-Type': 'application/json', }, }).then((response) => { if (response.ok) { alert('Inquilino registrado correctamente') } else { alert('Error al registrar inquilino') } }) } const deleteTenant = () => { let _tenants = tenants.filter((val) => val._id !== tenant._id) setTenants(_tenants) setDeleteTenantDialog(false) setTenant(emptyTenant) toast.current.show({ severity: 'success', summary: 'Inquilino Eliminado', life: 3000, }) } const deleteSelectedTenants = () => { let _tenants = tenants.filter((val) => !selectedTentants.includes(val)) setTenants(_tenants) setDeleteTenantsDialog(false) setSelectedTenants(null) toast.current.show({ severity: 'success', summary: 'Éxito', detail: 'Inquilinos Eliminados', life: 3000, }) } const cambiarStatusUser = () => { if (tenant.status == '1') { tenant.status = '0' tenant.status_text = 'Inactivo' } else if (tenant.status == '0') { tenant.status = '1' tenant.status_text = 'Activo' } var data = { id: tenant._id, status: tenant.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(() => { setChangeStatusTenantDialog(false) toast.current.show({ severity: 'success', summary: 'Éxito', detail: 'Inquilino Actualizado', life: 3000, }) }) .catch((err) => console.log('Ocurrió un error con el fetch', err)) } const hideDeleteTenantDialog = () => { setDeleteTenantDialog(false) } const hideDeleteTenantsDialog = () => { setDeleteTenantsDialog(false) } const confirmDeleteTenant = (tenant) => { setTenant(tenant) setDeleteTenantDialog(true) } const confirmDeleteSelected = () => { setDeleteTenantsDialog(true) } const hideChangeStatusTenantDialog = () => { setChangeStatusTenantDialog(false) } const confirmChangeStatusTenant = (tenant) => { setTenant(tenant) setChangeStatusTenantDialog(true) } const actionsTenant = (rowData) => { let icono = '' let text = '' if (rowData.status == '0') { icono = 'pi pi-eye' text = 'Activar Inquilino' } else if (rowData.status == '1') { icono = 'pi pi-eye-slash' text = 'Inactivar Inquilino' } return (
) } const leftToolbarTemplate = () => { return (
) } const rightToolbarTemplate = () => { return (