"use client"; import { useRouter, useSearchParams } from "next/navigation"; import React, { useCallback, useEffect, useMemo, useState } from "react"; import SearchResults, { Column } from "../SearchResults"; // import { TeamResult } from "@/app/api/team"; import { useTranslation } from "react-i18next"; import { Button, Stack, Tab, Tabs, TabsProps, Typography } from "@mui/material"; import { CreateTeamInputs, saveTeam } from "@/app/api/team/actions"; import { FieldErrors, FormProvider, SubmitHandler, useForm, useFormContext, } from "react-hook-form"; import { Check, Close, Error, RestartAlt } from "@mui/icons-material"; import TeamInfo from "../EditTeam/TeamInfo"; import Allocation from "./Allocation"; import { StaffResult } from "@/app/api/staff"; import { IndivTeam } from "@/app/api/team"; interface Props { staff: StaffResult[]; teamInfo: IndivTeam; } const EditTeam: React.FC = async ({ staff, teamInfo }) => { const { team, staffIds } = teamInfo; const { t } = useTranslation(); const formProps = useForm(); const searchParams = useSearchParams(); const idString = searchParams.get("id"); // const [allStaffs, setAllStaffs] = useState(); // const [teamLead, setTeamLead] = useState(); const [tabIndex, setTabIndex] = useState(0); const router = useRouter(); const errors = formProps.formState.errors; const handleTabChange = useCallback>( (_e, newValue) => { setTabIndex(newValue); }, [] ); const [serverError, setServerError] = useState(""); // useEffect(() => { // let idList: number[] = []; // // console.log(desc) // if (idString) { // const filteredTeam = staff.filter((item) => { // return item.teamId === parseInt(idString); // }); // setTeamLead(team.teamLead); // if (filteredTeam.length > 0) { // const filteredIds: number[] = filteredTeam.map((i) => i.id); // // const teamLead = tempDesc[0].teamLead // // const index = filteredIds.indexOf(teamLead); // // if (index !== -1) { // // filteredIds.splice(index, 1); // // filteredIds.unshift(teamLead); // // } // idList = filteredIds; // } // formProps.reset({ description: team.description, addStaffIds: idList }); // } // // console.log(staff) // setAllStaffs(staff); // }, [searchParams]); const hasErrorsInTab = ( tabIndex: number, errors: FieldErrors ) => { switch (tabIndex) { case 0: return Object.keys(errors).length > 0; default: false; } }; const onSubmit = useCallback>( async (data) => { try { // console.log(data); const tempData = { description: data.description, addStaffIds: data.addStaffIds, deleteStaffIds: data.deleteStaffIds, id: parseInt(idString!!), }; console.log(tempData); // await saveTeam(tempData); // router.replace("/settings/team"); } catch (e) { console.log(e); setServerError(t("An error has occurred. Please try again later.")); } }, [router] ); const resetTeam = React.useCallback(() => { formProps.reset({ name: team.name, code: team.code, description: team.description, addStaffIds: staffIds, deleteStaffIds: [] }); }, []); useEffect(() => { resetTeam(); }, [team]); return ( <> {serverError && ( {serverError} )} {t("Edit Team")} - {team.name} ) : undefined } iconPosition="end" /> {tabIndex === 0 && } {tabIndex === 1 && ( )} ); }; export default EditTeam;