import { useCallback, useMemo, useState, useEffect } from 'react'; import Head from 'next/head'; import { subDays, subHours } from 'date-fns'; import ArrowDownOnSquareIcon from '@heroicons/react/24/solid/ArrowDownOnSquareIcon'; import ArrowUpOnSquareIcon from '@heroicons/react/24/solid/ArrowUpOnSquareIcon'; import PlusIcon from '@heroicons/react/24/solid/PlusIcon'; import { Box, Button, CircularProgress, Container, Dialog, DialogContent, DialogTitle, Stack, SvgIcon, Typography, DialogActions, TextField, Backdrop, } from '@mui/material'; import { useSelection } from 'src/hooks/use-selection'; import { Layout as DashboardLayout } from 'src/layouts/dashboard/layout'; import { CustomersTable } from 'src/sections/customer/customers-table'; import { CustomersSearch } from 'src/sections/customer/customers-search'; import { applyPagination } from 'src/utils/apply-pagination'; import { useAuth } from 'src/hooks/use-auth'; import { useRouter } from 'next/router'; import { is } from 'date-fns/locale'; import { set } from 'nprogress'; const Page = () => { const auth = useAuth(); const router = useRouter(); const validateEmail = (email) => { return email.match( /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ ); }; //const [page, setPage] = useState(0); //const [rowsPerPage, setRowsPerPage] = useState(5); const [loading, setLoading] = useState(true); const [creatingNewUser, setCreatingNewUser] = useState(false); const [users, setUsers] = useState([]); const [selected, setSelected] = useState([]); const [addDeviceDialogOpen, setAddDeviceDialogOpen] = useState(false); const [newUserData, setNewUserData] = useState({}); const [isPasswordEmpty, setIsPasswordEmpty] = useState(false); const [isEmailEmpty, setIsEmailEmpty] = useState(false); const [isEmailExistent, setIsEmailExistent] = useState(false); const deleteUser = (id) => { console.log("request to delete user: ", id) var myHeaders = new Headers(); myHeaders.append("Content-Type", "application/json"); myHeaders.append("Authorization", auth.user.token); var requestOptions = { method: 'DELETE', headers: myHeaders, redirect: 'follow' } return fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/auth/delete/${id}`, requestOptions) .then(response => { if (response.status === 401) { router.push("/auth/login") } else if (response.status === 403) { return router.push("/403") } setUsers(users.filter(user => user.email !== id)) }) .catch(error => { return console.error('Error:', error) }); } const fetchUsers = async () => { console.log("fetching users data...") var myHeaders = new Headers(); myHeaders.append("Content-Type", "application/json"); myHeaders.append("Authorization", auth.user.token); var requestOptions = { method: 'GET', headers: myHeaders, redirect: 'follow' } return fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/users`, requestOptions) .then(response => { if (response.status === 401) { router.push("/auth/login") } else if (response.status === 403) { return router.push("/403") } return response.json() }) .then(json => { console.log("users: ", json) setUsers(json) // setPages(json.pages + 1) // setPage(json.page +1) // setDevices(json.devices) setLoading(false) }) .catch(error => { return console.error('Error:', error) }); } useEffect(() => { // if (auth.user.token) { // console.log("auth.user.token =", auth.user.token) // }else{ // auth.user.token = localStorage.getItem("token") // } //console.log("auth.user.token =", auth.user.token) fetchUsers() }, []); // const handlePageChange = useCallback( // (event, value) => { // setPage(value); // }, // [] // ); // const handleRowsPerPageChange = useCallback( // (event) => { // setRowsPerPage(event.target.value); // }, // [] // ); const createUser = async (data) => { var myHeaders = new Headers(); myHeaders.append("Content-Type", "application/json"); myHeaders.append("Authorization", auth.user.token); var raw = JSON.stringify(data); var requestOptions = { method: 'POST', headers: myHeaders, body: raw, redirect: 'follow' }; let result = await fetch(`${process.env.NEXT_PUBLIC_REST_ENDPOINT || ""}/api/auth/register`, requestOptions) if (result.status == 200) { console.log("user created: deu boa raça !!") }else if (result.status == 403) { console.log("num tenx permissão, seu boca de sandália") setCreatingNewUser(false) return router.push("/403") }else if (result.status == 401){ console.log("taix nem autenticado, sai fora oh") setCreatingNewUser(false) return router.push("/auth/login") }else if (result.status == 409){ console.log("usuário já existe, seu boca de bagre") setIsEmailExistent(true) setCreatingNewUser(false) return }else if (result.status == 400){ console.log("faltou mandar dados jow") setAddDeviceDialogOpen(false) setNewUserData({}) setIsPasswordEmpty(false) setIsEmailEmpty(false) setIsEmailExistent(false) setCreatingNewUser(false) return }else { console.log("agora quebrasse ux córno mô quiridu") const content = await result.json() setCreatingNewUser(false) throw new Error(content); } setAddDeviceDialogOpen(false) data["_id"] = data.email data["createdAt"] = new Date().toLocaleDateString('es-pa') data["level"] = 0 setUsers([...users, data]) setNewUserData({}) setIsPasswordEmpty(false) setIsEmailEmpty(false) setIsEmailExistent(false) setCreatingNewUser(false) } return ( <>