import { withIronSessionSsr } from "iron-session/next"; import { useState, useEffect } from 'react'; import Box from '@mui/material/Box'; import CssBaseline from '@mui/material/CssBaseline'; import AdminAppBar from '../../component/admin/theComponent/appBar'; import AdminDrawer from '../../component/admin/theComponent/drawer'; import AdminDrawerHeader from "../../component/admin/theComponent/drawerHeadaer"; import AdminMain from '../../component/admin/theComponent/main'; import AdminDialog from '../../component/admin/theComponent/adminDialog'; import Backdrop from '@mui/material/Backdrop'; import CircularProgress from '@mui/material/CircularProgress'; import Grid from '@mui/material/Grid'; import Card from '@mui/material/Card'; import Typography from '@mui/material/Typography'; // sweet alert import Swal from 'sweetalert2' import withReactContent from 'sweetalert2-react-content' const MySwal = withReactContent(Swal) import { ToastContainer, toast, Zoom, Bounce } from 'react-toastify' import 'react-toastify/dist/ReactToastify.css'; import Table from '@mui/material/Table'; import TableBody from '@mui/material/TableBody'; import TableCell, { tableCellClasses } from '@mui/material/TableCell'; import TableContainer from '@mui/material/TableContainer'; import TableHead from '@mui/material/TableHead'; import TableRow from '@mui/material/TableRow'; import Paper from '@mui/material/Paper'; import { styled } from '@mui/material/styles'; const StyledTableCell = styled(TableCell)(({ theme }) => ({ [`&.${tableCellClasses.head}`]: { backgroundColor: "#046767", color: "white", }, })); import IconButton from '@mui/material/IconButton'; import InfoIcon from '@mui/icons-material/Info'; // import CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline'; import DoNotDisturbOffIcon from '@mui/icons-material/DoNotDisturbOff'; const io = require('socket.io-client'); const socket = io("http://localhost:3001/"); function ListUSer(props) { const title = 'list_user' const [openDrawer, setOpenDrawer] = useState(false); const [loadingData, setLoadingData] = useState(0); const [loadingData1, setLoadingData1] = useState(0); const [dataKurir, setDataKurir] = useState([]); const [dataPengirim, setDataPengirim] = useState([]); // const [socketId, setSocketId] = useState([]); let socketId; socket.on('connect', function () { const sessionID = socket.id; console.log('connected disini'); console.log(sessionID); // socketId = sessionID; // push sessionID to socketId socketId = sessionID; // console.log(socketId); }); socket.on('tambah_verifikasi_kurir', async function () { toast.info('Ada kurir baru menunggu verifikasi', { toastId: 'tambah_verifikasi_kurir', }) }); socket.on('tambah_verifikasi_pengirim', async function () { // const sessionID = socket.socket; // console.log('connected'); // console.log(sessionID); // setLoadingData(0); try { let http_server = "http://localhost:3001/api/admin/get_all_pengirim" const response = await fetch(http_server, { // timeout: 10000, method: 'GET', headers: { 'Content-Type': 'application/json', 'allow-cors-origin': '*', 'crossDomain': true, 'Authorization': 'Bearer ' + props.accessToken } }); const json = await response.json(); // console.log(json); // console.log(response.status); if (response.status === 200) { setDataPengirim(json.data); // setBackdrop(false); // console.log(data); setLoadingData(1); toast.info('Ada pengirim baru terdaftar', { toastId: 'tambah_verifikasi_pengirim', }) } } catch (error) { console.log(error); // setLoadingData(2); } }); useEffect(() => { // fetch const fetchData = async () => { let http_server = "/api/admin/get_all_kurir" // console.log(http_server); const response = await fetch(http_server, { // timeout: 10000, method: 'GET', headers: { 'Content-Type': 'application/json', 'allow-cors-origin': '*', 'crossDomain': true, 'Authorization': 'Bearer ' + props.accessToken } }); const json = await response.json(); // console.log(json); // console.log(response.status); if (response.status === 200) { setDataKurir(json.data); // setBackdrop(false); // console.log(data); setLoadingData(1); } } const fetchDataPengirim = async () => { let http_server = "/api/admin/get_all_pengirim" console.log(http_server); const response = await fetch(http_server, { // timeout: 10000, method: 'GET', headers: { 'Content-Type': 'application/json', 'allow-cors-origin': '*', 'crossDomain': true, 'Authorization': 'Bearer ' + props.accessToken } }); const json = await response.json(); // console.log(json); // console.log(response.status); if (response.status === 200) { setDataPengirim(json.data); // setBackdrop(false); // console.log(data); setLoadingData1(1); } } fetchData().catch(error => { console.log(error); setLoadingData(2); }).finally(() => { setBackdrop(false); }) fetchDataPengirim().catch(error => { console.log(error); setLoadingData1(2); }).finally(() => { setBackdrop(false); }) }, []); const [backdrop, setBackdrop] = useState(true); const [openDialog, setOpenDialog] = useState(false); const [dataClicked, setDataClicked] = useState({}); const [roleClicked, setRoleClicked] = useState(''); const handleDrawerOpen = () => { setOpenDrawer(true); }; const handleDrawerClose = () => { setOpenDrawer(false); }; const handleDialogOpen = () => { setOpenDialog(true); }; const handleDialogClose = () => { setOpenDialog(false); }; // function disconnectSocket() { // console.log("sini disconnected") // // socket.emit('disconnect_it', socketId); // // socket.disconnect(); // }; return ( { // console.log(val) beforeTerimaKurir(val, "terima") } } batalKurir={ (val) => { // console.log(val) beforeTerimaKurir(val, "terima") } } /> theme.zIndex.drawer + 1 }}> { // console.log("sini disconnected") // disconnectSocket() } } /> List Kurir { loadingData === 0 ? ( <> ) : loadingData === 1 ? ( <> { dataKurir.length > 0 ? ( <> NIK Nama No Kenderaan No Telpon Aksi {dataKurir.map((row) => ( {row.nik} {row.nama} {row.no_kenderaan} {row.no_telp} { handleDialogOpen(); setDataClicked(row); setRoleClicked('kurir'); } } > {/* { // handleDialogOpen(); setDataClicked(row); setRoleClicked('kurir'); beforeTerimaKurir(row._id, "terima"); } } > */} { // handleDialogOpen(); setDataClicked(row); setRoleClicked('kurir'); beforeTerimaKurir(row._id, "batalkan"); } } > ))}
) : ( <> Tiada Data Verifikasi Kurir ) } ) : ( <> Error Loading Data ) }
List Pengirim { loadingData1 === 0 ? ( <> ) : loadingData1 === 1 ? ( <> { dataPengirim.length > 0 ? ( <> Nama No Telpon Email Aksi {dataPengirim.map((row) => ( {row.nama} {row.no_telp} {row.email} { handleDialogOpen(); setDataClicked(row); setRoleClicked('pengirim'); } } > {/* { // handleDialogOpen(); setDataClicked(row); setRoleClicked('kurir'); beforeTerimaKurir(row._id, "terima"); } } > */} { // handleDialogOpen(); setDataClicked(row); setRoleClicked('pengirim'); beforeTerimaKurir(row._id, "batalkan"); } } > ))}
) : ( <> Tiada Data Verifikasi Kurir ) } ) : ( <> Error Loading Data ) }
); } export const getServerSideProps = withIronSessionSsr( async function getServerSideProps({ req }) { const data = req.session.data; // console.log(data) if (!data) { return { redirect: { destination: '/?error=true', permanent: false, } }; } if (data.role != "admin") { try { console.log("jalankannya ini di admin") const url = process.env.HTTP_URL + "/api/login_admin/logout"; await fetch(url, { method: 'GET', headers: { 'Content-Type': 'application/json', 'allow-cors-origin': '*', 'crossDomain': true, }, }) } catch (err) { } return { redirect: { destination: '/?error=true', permanent: false, } }; } return { props: { // user: req.session.user, accessToken: data.accessToken, }, }; }, { cookieName: "myapp_cookiename", password: "complex_password_at_least_32_characters_long123456789", // secure: true should be used in production (HTTPS) but can't be used in development (HTTP) cookieOptions: { secure: process.env.NODE_ENV === "production", }, }, ); export default ListUSer;