diff --git a/app/users/bulkcreate/page.js b/app/users/bulkcreate/page.js
new file mode 100755
index 0000000..b79613f
--- /dev/null
+++ b/app/users/bulkcreate/page.js
@@ -0,0 +1,101 @@
+"use client";
+import React, { useEffect, useState } from "react";
+import AuthService from "@/services/AuthService";
+import { Button, TextField, IconButton } from "@mui/material";
+import { Add, Delete } from "@mui/icons-material";
+
+import { useRouter } from "next/navigation";
+import Navbar from "../../../components/Navbar";
+
+const BulkCreateUsers = () => {
+ const router = useRouter();
+ const [users, setUsers] = useState([]);
+
+ useEffect(() => {
+ const user = JSON.parse(localStorage.getItem("user"));
+ if (!user) {
+ router.push("/login");
+ }
+ });
+
+ const handleAddUser = () => {
+ setUsers([
+ ...users,
+ {
+ name: "",
+ email: "",
+ password: "",
+ password_second: "",
+ cellphone: "",
+ },
+ ]);
+ };
+
+ const handleRemoveUser = (index) => {
+ const newUsers = [...users];
+ newUsers.splice(index, 1);
+ setUsers(newUsers);
+ };
+
+ const handleChange = (index, field, value) => {
+ const newUsers = [...users];
+ newUsers[index][field] = value;
+ setUsers(newUsers);
+ };
+
+ const handleSubmit = async () => {
+ const response = await AuthService.bulkCreateUsers(users);
+ console.log(response);
+ };
+
+ return (
+ <>
+
+
+
Bulk create
+ {users.map((user, index) => (
+
+ handleChange(index, "name", e.target.value)}
+ />
+ handleChange(index, "email", e.target.value)}
+ />
+ handleChange(index, "password", e.target.value)}
+ />
+
+ handleChange(index, "password_second", e.target.value)
+ }
+ />
+ handleChange(index, "cellphone", e.target.value)}
+ />
+ handleRemoveUser(index)}>
+
+
+
+ ))}
+
+
+
+ >
+ );
+};
+
+export default BulkCreateUsers;
diff --git a/app/users/findusers/page.js b/app/users/findusers/page.js
new file mode 100755
index 0000000..23bed75
--- /dev/null
+++ b/app/users/findusers/page.js
@@ -0,0 +1,130 @@
+"use client";
+import React, { useState, useEffect } from "react";
+import { Container, TextField, Button, Checkbox } from "@mui/material";
+import AuthService from "../../../services/AuthService";
+import Navbar from "../../../components/Navbar";
+
+import { useRouter } from "next/navigation";
+
+export default function FindUsersPage() {
+ const router = useRouter();
+ const [filters, setFilters] = useState({
+ name: "",
+ login_before_date: "",
+ login_after_date: "",
+ active: false,
+ });
+ const [users, setUsers] = useState([]);
+
+ useEffect(() => {
+ const user = JSON.parse(localStorage.getItem("user"));
+ if (!user) {
+ router.push("/login");
+ }
+ })
+
+ const handleInputChange = (event) => {
+ const { name, value } = event.target;
+ let finalValue = value;
+
+ if (value === "true" || value === "false") {
+ finalValue = value === "true";
+ }
+
+ setFilters({ ...filters, [name]: finalValue });
+ };
+
+ const handleSearch = async () => {
+ const users = await AuthService.findUsers(filters);
+ setUsers(users);
+ };
+
+ return (
+ <>
+
+
+
+
+
+
+
+ setFilters({ ...filters, active: e.target.checked })
+ }
+ name="active"
+ />
+
+
+ {users && users.length > 0 && (
+
+
+
+
+ Name
+ |
+
+ Email
+ |
+
+ Status
+ |
+
+
+
+ {users.map((user) => (
+
+
+ {user.name}
+ |
+
+ {user.email}
+ |
+
+ {user.status ? "Active" : "Inactive"}
+ |
+
+ ))}
+
+
+ )}
+
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/components/Navbar.js b/components/Navbar.js
index c281d22..c5e4b21 100644
--- a/components/Navbar.js
+++ b/components/Navbar.js
@@ -26,9 +26,16 @@ const Navbar = () => {
{user?.name}
+
+
+
)
diff --git a/services/AuthService.js b/services/AuthService.js
index 3b7920a..7a9aee1 100644
--- a/services/AuthService.js
+++ b/services/AuthService.js
@@ -18,6 +18,46 @@ const handleLogin = async (user, pass) => {
}
}
+const findUsers = async ({ name, login_before_date, login_after_date, active }) => {
+ try {
+ const response = await axios.get('http://localhost:3001/api/v1/users/findUsers', {
+ params: {
+ nombre: name,
+ antesSesion: login_before_date,
+ despuesSesion: login_after_date,
+ eliminados: active,
+ }
+ },
+ {
+ headers: {
+ token: localStorage.getItem('token')
+ }
+ }
+ );
+ return response.data;
+ } catch (e) {
+ console.error(e);
+ return [];
+ }
+};
+
+const bulkCreateUsers = async (users) => {
+ try {
+ const response = await axios.post('http://localhost:3001/api/v1/users/bulkCreate',
+ users,
+ {
+ headers: {
+ token: localStorage.getItem('token')
+ }
+ }
+ );
+ console.log(response)
+ return response.data
+ } catch (e) {
+ return null;
+ }
+}
+
const getUsers = async () => {
try {
//const response = await axios.get('fakeapi');
@@ -116,6 +156,8 @@ const updateUser = async (id, user, token) => {
export default {
handleLogin,
+ findUsers,
+ bulkCreateUsers,
getUsers,
getUserById,
logOut,