"use client"; import Check from "@mui/icons-material/Check"; import Close from "@mui/icons-material/Close"; import Button from "@mui/material/Button"; import Stack from "@mui/material/Stack"; import Tab from "@mui/material/Tab"; import Tabs, { TabsProps } from "@mui/material/Tabs"; import { useRouter } from "next/navigation"; import React, { useCallback, useState, useLayoutEffect, useEffect } from "react"; import { useTranslation } from "react-i18next"; import { Task, TaskTemplate } from "@/app/api/tasks"; import { FieldErrors, FormProvider, SubmitErrorHandler, SubmitHandler, useForm, } from "react-hook-form"; import { EditPositionInputs, editPosition, fetchPositionDetails, savePosition } from "@/app/api/positions/actions"; import { Error } from "@mui/icons-material"; import { ProjectCategory } from "@/app/api/projects"; import { Typography } from "@mui/material"; import PositionDetails from "./PositionDetails"; import { useSearchParams } from 'next/navigation' import { PositionResult } from "@/app/api/positions"; const EditPosition: React.FC = ({ // allTasks, // projectCategories, // taskTemplates, // teamLeads, }) => { const [serverError, setServerError] = useState(""); const { t } = useTranslation(); const searchParams = useSearchParams() const router = useRouter(); const [positionDetails, setPositionDetails] = useState() const positionId = searchParams.get("id") const fetchPositionDetail = async () =>{ console.log(positionId) try{ if (positionId !== null && parseInt(positionId) > 0) { const postionDetails = await fetchPositionDetails(parseInt(positionId)) const updatedArray: EditPositionInputs[] = postionDetails.map((obj) => { return { id: obj.id, positionCode: obj.code, positionName: obj.name, description: obj.description }; }); setPositionDetails(updatedArray[0]) } } catch (error){ console.log(error) setServerError(t("An error has occurred. Please try again later.")); } } const handleCancel = () => { router.back(); }; const onSubmit = useCallback>( async (data) => { try { if (positionId !== null && parseInt(positionId) > 0) { console.log(data); setServerError(""); // console.log(JSON.stringify(data)); data.id = parseInt(positionId) console.log(data); await editPosition(data) router.replace("/settings/position"); } } catch (e) { setServerError(t("An error has occurred. Please try again later.")); } }, [router, t], ); const onSubmitError = useCallback>( (errors) => { console.log(errors) }, [], ); const formProps = useForm({ // defaultValues: { // positionCode: positionDetails ? positionDetails.code : "AAA", // positionName: positionDetails ? positionDetails.name : "BBB", // description: positionDetails ? positionDetails.description : "CCC", // }, }); const errors = formProps.formState.errors; useEffect(() => { fetchPositionDetail() }, []) useEffect(() => { if (positionDetails !== null && positionDetails !== undefined) { console.log(positionDetails) formProps.reset(positionDetails) } }, [positionDetails]) return ( { positionDetails && } ); }; export default EditPosition;