diff --git a/frontend/react-app/src/api/isMemberOfApi.js b/frontend/react-app/src/api/isMemberOfApi.js index cc444dc..89b4393 100644 --- a/frontend/react-app/src/api/isMemberOfApi.js +++ b/frontend/react-app/src/api/isMemberOfApi.js @@ -2,23 +2,16 @@ const BASE_URL = "http://localhost:8080/api/memberships"; //Add a member to a team export const addMemberToTeam = async (teamMemberId, teamId) => { - try { const response = await fetch(`${BASE_URL}/${teamMemberId}/team/${teamId}`, { method: 'POST', headers: { "Content-Type": "application/json" } }); if (!response.ok) { - console.error(`Failed to add member to team: ${response.status} ${response.statusText}`); - return false; + throw Error(`Failed to add member to team: ${response.status} ${response.statusText}`); } return true; - } - catch (error) { - console.error("Error adding member to team: ", error); - return false; - } }; //Remove a member from a team diff --git a/frontend/react-app/src/components/AddToTeam.jsx b/frontend/react-app/src/components/AddToTeam.jsx new file mode 100644 index 0000000..eb732d0 --- /dev/null +++ b/frontend/react-app/src/components/AddToTeam.jsx @@ -0,0 +1,74 @@ +import Select from 'react-select' +import {useForm, Controller} from 'react-hook-form' +import { addMemberToTeam } from '../api/isMemberOfApi'; +export default function AddToTeam({teamId, allTeamMembers, currentMembers}){ + console.log('allMembers', allTeamMembers) + const { register, handleSubmit, formState: {errors}, control} = useForm(); + function formatTeamData(){ + let returnArr = [] + allTeamMembers.map((member)=>{ + let isOnTeam = false; + currentMembers.map((currentMember)=>{ + if(member.accountId === currentMember){ + isOnTeam = true; + } + }) + if(!isOnTeam){ + returnArr= [...returnArr, {value: member.accountId, label: member.userName}] + } + + }) + return returnArr; + } + const onSubmit = async (data)=>{ + try { + await data.assignees.map(async(assignee)=>{ + const response = await addMemberToTeam(assignee.value, teamId); + }) + window.location.reload(); + } catch (error) { + console.log(error) + } + } + const customStyles = { + control: (provided) => ({ + ...provided, + width: '100%', + minWidth: '200px', + maxWidth: '100%', + minHeight: '30px', + maxHeight: '100%', + border: '2px solid grey', + borderRadius: '10px', + paddingLeft: '8px', + backgroundColor: '#BFCDE0', + margin: '10px 0px', + cursor: 'pointer' + }), + option: (provided, state) =>({ + ...provided, + cursor: state.isSelected ? 'default' : 'pointer', + }) + }; + + return( +
+ ( +