import React, { useEffect, useState, useRef } from 'react'; import { useCookies } from "react-cookie"; import { DataTable } from 'primereact/datatable'; import { Column } from 'primereact/column'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faHome, faUserAlt } from '@fortawesome/free-solid-svg-icons'; import { faMapLocationDot } from '@fortawesome/free-solid-svg-icons'; import { faPhoneAlt } from '@fortawesome/free-solid-svg-icons'; import { faHashtag } from '@fortawesome/free-solid-svg-icons'; import { faCircleQuestion } from '@fortawesome/free-solid-svg-icons'; import { Button } from 'primereact/button'; import { Toast } from 'primereact/toast'; import { Dialog } from 'primereact/dialog'; import { Toolbar } from 'primereact/toolbar'; import { InputText } from 'primereact/inputtext'; import classNames from 'classnames'; import md5 from 'md5'; const PerfilAdminComunidad = () => { let emptyAdminCommunity = { _id: null, dni: '', name: '', last_name: '', email: '', phone: '', password: '', confirmPassword: '', community_id: '', community_name: '', user_type: '2', date_entry: new Date(), status: '1', status_text: '', }; let emptyCommunity = { _id: null, name: '', province: '', canton: '', district: '', phone: '', num_houses: 0, status: '1', status_text: '', date_entry: new Date(), houses: [], }; let emptyNewPassword = { _id: null, passwordOld: '', passwordNew: '', passwordConfirm: '' } const [admin, setAdmin] = useState(emptyAdminCommunity); const [community, setCommunity] = useState(emptyCommunity); const [cookies, setCookie] = useCookies(); const [globalFilter, setGlobalFilter] = useState(null); //para el perfil de la comunidad const [tenants, setTenants] = useState([]); const [commonAreaList, setCommonAreaList] = useState([]); const [provincesList, setProvincesList] = useState([]); const [cantonsList, setCantonsList] = useState([]); const [districtsList, setDistrictsList] = useState([]); const [editAdminDialog, setEditAdminDialog] = useState(false); const [editPasswordDialog, setEditPasswordDialog] = useState(false); const [submitted, setSubmitted] = useState(false); const toast = useRef(null); const [newPassword, setNewPassword] = useState(emptyNewPassword); async function getProvinces() { const response = await fetch('assets/demo/data/provincias.json', { method: 'GET', }); return await response.json(); } async function getCantons() { const response = await fetch('assets/demo/data/cantones.json', { method: 'GET', }); return await response.json(); } async function getDistricts() { const response = await fetch('assets/demo/data/distritos.json', { method: 'GET', }); return await response.json(); } async function getAdmin() { await fetch('http://localhost:4000/user/findUserById/' + cookies.id, { method: 'GET' }) .then((response) => response.json()) .then(data => { let item = data.message; setAdmin(item); if (item.community_id || item.community_id != '') { getCommunity() } else { item.community_name = "Sin Comunidad Asignada"; } }) } useEffect(() => { getAdmin(); }, []) async function getCommunity() { let pList = await getProvinces(); let cList = await getCantons(); let dList = await getDistricts(); await fetch(`http://localhost:4000/community/findCommunityName/${cookies.community_id}`, { method: 'GET' }) .then((response2) => response2.json()) .then(data => data.message) .then(data => { data.province = pList.find((p) => p.code === data.province).name; data.canton = cList.find((p) => p.code === data.canton).name; data.district = dList.find((p) => p.code === data.district).name; setCommunity(data) }) } useEffect(() => { getCommunity(); }, []) async function tenantsList(id) { await fetch(`http://localhost:4000/user/findTenants/${id}`, { method: 'GET' }) .then((response) => response.json()) .then(data => data.message) .then(data => { data = data.filter( (val) => val.status != -1, ) setTenants(data) }); } useEffect(() => { tenantsList(cookies.community_id); }, []) const saveAdmin = () => { let _admin = { ...admin }; _admin.community_id = cookies.community_id; if (_admin.name && _admin.dni && _admin.last_name && _admin.email && _admin.phone) { console.log(`Actualizando admnistrador de comunidad: ${_admin}`) _admin.community_id = cookies.community_id; console.log(`Actualizando admnistrador de comunidad: ${_admin}`) fetch(`http://localhost:4000/user/updateAdminCommunity/${_admin._id}`, { cache: 'no-cache', method: 'PUT', body: JSON.stringify(_admin), headers: { 'Content-Type': 'application/json', }, }).then((response) => { if (response.status !== 200) console.log(`Hubo un error en el servicio: ${response.status}`) else return response.json() }).then((response) => { toast.current.show({ severity: 'success', summary: 'Éxito', detail: 'Administrador de comunidad actualizado', life: 3000, }) setAdmin(response.message); setEditAdminDialog(false); }) } else { setSubmitted(true); } } const savePassword = () => { let _admin = { ...admin }; let _newPassword = { ...newPassword }; if (_newPassword.passwordOld && _newPassword.passwordNew && _newPassword.passwordNew === _newPassword.passwordConfirm) { _admin.password = md5(_newPassword.passwordNew); console.log(`Actualizando admnistrador de comunidad: ${_admin}`) fetch(`http://localhost:4000/user/changePassword/${_admin._id}`, { cache: 'no-cache', method: 'PUT', body: JSON.stringify(_admin), headers: { 'Content-Type': 'application/json', }, }).then((response) => { if (response.status !== 200) console.log(`Hubo un error en el servicio: ${response.status}`) else return response.json() }).then((response) => { toast.current.show({ severity: 'success', summary: 'Éxito', detail: 'Administrador de comunidad actualizado', life: 3000, }) setAdmin(_admin); setEditPasswordDialog(false); }) } else { setSubmitted(true); } } const findRepeated = async (name, value) => { let _administrators; await fetch('http://localhost:4000/user/findAdminComunidad/', { method: 'GET' }) .then((response) => response.json()) .then((data) => data.message) .then(data => { data = data.filter( (val) => val.status != -1, ); _administrators = data; }); let value_filtered = await _administrators.filter(item => item[`${name}`] === value); return value_filtered.length; } function findNameTenant(tenant_id) { let name = ''; if (tenant_id == '') { name = 'Sin inquilino'; } else { let tenant = tenants.find(t => t._id == tenant_id) name = tenant['name'] + ' ' + tenant['last_name']; } return name; } const onInputChange = (e, name) => { const val = (e.target && e.target.value) || ''; let _admin = { ...admin }; _admin[`${name}`] = val; setAdmin(_admin); } const onInputChangePassword = (e, name) => { const val = (e.target && e.target.value) || ''; let _pass = { ...newPassword }; _pass[`${name}`] = val; setNewPassword(_pass); } const editAdmin = (admin) => { setAdmin(admin); setEditAdminDialog(true); } const editPassword = () => { setNewPassword(emptyNewPassword); setEditPasswordDialog(true); } const hideEditAdminDialog = () => { setSubmitted(false); setEditAdminDialog(false); } const hideEditPasswordDialog = () => { setSubmitted(false); setEditPasswordDialog(false); } const actionsAdminCommunity = (rowData) => { return ( <>
) } const editAdminDialogFooter = ( <>