diff --git a/app/users/BulkCreateUsers.js b/app/users/BulkCreateUsers.js new file mode 100644 index 0000000..696565c --- /dev/null +++ b/app/users/BulkCreateUsers.js @@ -0,0 +1,74 @@ +import React, { useState } from 'react'; +import axios from 'axios'; +import { Container, Typography, TextField, Button, Snackbar } from '@mui/material'; +import Layout from '@/components/layout'; +import SimpleSnackbar from '@/components/SimpleSnackbar'; +import AuthService from '@/services/AuthService'; + +const BulkCreateUsers = () => { + const [userData, setUserData] = useState(''); + const [openSnackbar, setOpenSnackbar] = useState(false); + const [snackbarMessage, setSnackbarMessage] = useState(''); + + const handleUserChange = (e) => { + setUserData(e.target.value); + }; + + const handleSubmit = async () => { + try { + const token = localStorage.getItem('token'); + const response = await axios.post('http://localhost:3001/api/v1/users/bulkCreate', { + users: JSON.parse(userData) + }, { + headers: { + 'Authorization': `Bearer ${token}` + } + }); + if (response.status === 200) { + setSnackbarMessage('Users created successfully'); + setOpenSnackbar(true); + setUserData(''); + } else { + setSnackbarMessage('Failed to create users'); + setOpenSnackbar(true); + } + } catch (error) { + console.error('Error creating users:', error); + setSnackbarMessage('Error creating users'); + setOpenSnackbar(true); + } + }; + + const handleCloseSnackbar = () => { + setOpenSnackbar(false); + }; + + return ( + + + + Bulk Create Users + + + + + + + ); +}; + +export default BulkCreateUsers; diff --git a/app/users/Users.js b/app/users/Users.js new file mode 100644 index 0000000..97d999a --- /dev/null +++ b/app/users/Users.js @@ -0,0 +1,75 @@ +import React, { useState, useEffect } from 'react'; +import axios from 'axios'; +import { Container, Typography, TextField, Button } from '@mui/material'; +import Layout from '@/components/layout'; +import AuthService from '@/services/AuthService'; + +const Users = () => { + const [users, setUsers] = useState([]); + const [nameFilter, setNameFilter] = useState(''); + const [loginBeforeDateFilter, setLoginBeforeDateFilter] = useState(''); + const [loginAfterDateFilter, setLoginAfterDateFilter] = useState(''); + const [activeFilter, setActiveFilter] = useState(''); + + useEffect(() => { + fetchUsers(); + }, []); + + const fetchUsers = async () => { + try { + const token = localStorage.getItem('token'); + const response = await axios.get('http://localhost:3001/api/v1/users/findUsers', { + headers: { + 'Authorization': `Bearer ${token}` + }, + params: { + name: nameFilter, + login_before_date: loginBeforeDateFilter, + login_after_date: loginAfterDateFilter, + active: activeFilter + } + }); + setUsers(response.data); + } catch (error) { + console.error('Error fetching users:', error); + // Handle error, show message to user + } + }; + + const handleFilterSubmit = () => { + fetchUsers(); + }; + + return ( + + + + Users + + setNameFilter(e.target.value)} + /> + {/* Other filter inputs go here */} + +
+ {/* Render users here */} + {users.map((user) => ( +
+ {user.name} + Email: {user.email} + Status: {user.status ? 'Active' : 'Inactive'} + {/* Add more details as needed */} +
+ ))} +
+
+
+ ); +}; + +export default Users;