diff --git a/client/src/components/user-admin/EditUsers.js b/client/src/components/user-admin/EditUsers.js index 1e5f72e93..181b85910 100644 --- a/client/src/components/user-admin/EditUsers.js +++ b/client/src/components/user-admin/EditUsers.js @@ -1,138 +1,107 @@ import React, { useEffect, useState } from 'react'; +import { Grid, FormGroup, FormControlLabel, Switch, Button, Typography, Container, List, ListItem, ListItemText, Select, MenuItem, FormControl, InputLabel } from '@mui/material'; import '../../sass/UserAdmin.scss'; -import { FormGroup, FormControlLabel, Switch } from '@mui/material' -// child of UserAdmin. Displays form to update users. const EditUsers = ({ userToEdit, backToSearch, updateUserDb, projects, updateUserActiveStatus }) => { - const [userManagedProjects, setUserManagedProjects] = useState([]); // The projects that the selected user is assigned - const [projectValue, setProjectValue] = useState(''); // State and handler for form in EditUsers + const [userManagedProjects, setUserManagedProjects] = useState([]); + const [projectValue, setProjectValue] = useState(''); const [isActive, setIsActive] = useState(userToEdit.isActive); - // Prepare data for display const userName = `${userToEdit.name?.firstName} ${userToEdit.name?.lastName}`; const userEmail = userToEdit.email; const userProjects = userManagedProjects || []; - // Filter active projects for dropdown const activeProjects = Object.values(projects) .filter((project) => project.projectStatus === 'Active') .sort((a, b) => a.name?.localeCompare(b.name)) - // eslint-disable-next-line no-underscore-dangle .map((p) => [p._id, p.name]); - // add user projects to state useEffect(() => { setUserManagedProjects(userToEdit.managedProjects); }, [userToEdit]); - // Prepare user projects for display by connecting the ID with the project name const userProjectsToDisplay = activeProjects.filter((item) => userProjects.includes(item[0]) ); - // Handle the add project form submit const onSubmit = (event) => { event.preventDefault(); - - if ( - projectValue.length > 0 && - projectValue !== 'default' && - !userManagedProjects.includes(projectValue) - ) { + if (projectValue.length > 0 && projectValue !== 'default' && !userManagedProjects.includes(projectValue)) { const newProjects = [...userManagedProjects, projectValue]; updateUserDb(userToEdit, newProjects); setUserManagedProjects(newProjects); - setProjectValue([]); + setProjectValue(''); } else { - setProjectValue([]); + setProjectValue(''); } }; - // Remove projects from db const handleRemoveProject = (projectToRemove) => { - if (userManagedProjects.length > 0) { - const newProjects = userManagedProjects.filter( - (p) => p !== projectToRemove - ); - updateUserDb(userToEdit, newProjects); - setUserManagedProjects(newProjects); - } + const newProjects = userManagedProjects.filter((p) => p !== projectToRemove); + updateUserDb(userToEdit, newProjects); + setUserManagedProjects(newProjects); }; const handleSetIsActive = () => { - setIsActive(!isActive) - updateUserActiveStatus(userToEdit, !isActive) - } + setIsActive(!isActive); + updateUserActiveStatus(userToEdit, !isActive); + }; return ( -
-
-
Name:
-
{userName}
-
-
-
Email:
-
{userEmail}
-
-
-
Is Active:
-
- {isActive.toString()} - - } onClick={() => handleSetIsActive()} /> - -
-
-
-
Projects:
-
-
    - {userProjectsToDisplay.map((result) => { - return ( -
  • - {result[1]} - -
  • - ); - })} -
-
-
-
-
- - -
-
- -
-
-
+ + Name: {userName} + Email: {userEmail} + + Is Active: + } + label={isActive.toString()}/> + + Projects: + + {userProjectsToDisplay.map((result) => ( + + + + + + + + + + + ))} + + + Select a project + + + + + ); };