import React, { useState, useEffect, useContext } from "react"; import { useCookies } from "react-cookie"; import { useNavigate } from "react-router-dom"; import classes from "../assets/styles/adminPanel.module.scss"; import { UserData } from "../context"; import { getListUserApi, editUserApi, addUserApi, removeUserApi, editUserPass } from "../hooks/api/profileApi.js"; import { verifyUser } from "../hooks/services/profile.js"; import DefaultModal from "../components/DefaultModal.jsx"; import EditUserAdminPanel from "../components/bodyModal/EditUserAdminPanel.jsx"; import MyButton from "../components/MyButton.jsx"; import CheckModal from "../components/CheckModal.jsx"; const AdminPanel = () => { const navigate = useNavigate(); const [cookies, setCookies] = useCookies(["user"]); const {user, setUser, userRef} = useContext(UserData); const [listUser, setListUser] = useState([]); const [email, setEmail] = useState(""); const [firstName, setFirstName] = useState(""); const [id, setId] = useState(false); const [isAdmin, setIsAdmin] = useState(false); const [isTeacher, setIsTeacher] = useState(false); const [lastName, setLastName] = useState(""); const [login, setLogin] = useState(""); const [phone, setPhone] = useState(""); const [pass, setPass] = useState(""); useEffect(() => { async function getListUser() { const responseListUser = await getListUserApi(cookies.token); if ( responseListUser.status === 200 ) { setListUser(responseListUser.data) } else if ( responseListUser.status === 401 ) { // navigate("/enter") setUser(false) } else { console.log(responseListUser) } } getListUser() }, []); function clearState() { setEmail("") setFirstName("") setId("") setIsAdmin("") setIsTeacher("") setLastName("") setLogin("") setPhone("") setPass("") }; async function addUser() { const currentState = { email: email, first_name: firstName, id: id, is_admin: isAdmin, is_teacher: isTeacher, last_name: lastName, login: login, phone: phone } const response = await addUserApi(cookies.token, currentState) if (response.status === 200) { setListUser([...listUser, currentState]) if (pass) { await editUserPass(cookies.token, login, pass); } } else if ( response.status === 401 ) { // navigate("/enter") setUser(false) } else { console.log(response) } clearState() }; async function editUser() { const currentState = { email: email, first_name: firstName, id: id, is_admin: isAdmin, is_teacher: isTeacher, last_name: lastName, login: login, phone: phone }; const response = await editUserApi(cookies.token, currentState); if (response.status === 200) { setListUser(listUser.map(item => item.id === id ? currentState : item)); if (pass) { await editUserPass(cookies.token, login, pass); }; } else if ( response.status === 401 ) { // navigate("/enter") setUser(false) } else { console.log(response) } clearState(); }; function openUser(user) { setEmail(user.email) setFirstName(user.first_name) setId(user.id) setIsAdmin(user.is_admin) setIsTeacher(user.is_teacher) setLastName(user.last_name) setLogin(user.login) setPhone(user.phone) } async function removeUser(login) { const response = await removeUserApi(cookies.token, login) if (response.status === 200) { setListUser(listUser.filter(item => item.login !== login)) } else if ( response.status === 401 ) { // navigate("/enter") setUser(false) } else { console.log(response) } } return (
{/*
navigate("/profile")}>Профиль
*/}

Пользователи

Логин
Фамилия
Email
Учитель
Администратор
{listUser.map(item =>
openUser(item)} > {item.login}
{item.last_name ? item.last_name : '-'}
{item.email ? item.email : '-'}
{ item.is_teacher ? : }
{ item.is_admin ? : }
?`} action={{ execute: () => removeUser(item.login), cancel: () => {} }} />
)} } btn={[ {text: id ? "Изменить" : "Сохранить", dismiss: "modal", class: "main__green", action: id ? () => editUser() : () => addUser()}, {text: "Отмена", dismiss: "modal", class: "main__white", action: () => clearState()} ]} />
) } export default AdminPanel;