diff --git a/src/components/CreateCompany/CompanyDetails.tsx b/src/components/CreateCompany/CompanyDetails.tsx index 893dadf..dd377f6 100644 --- a/src/components/CreateCompany/CompanyDetails.tsx +++ b/src/components/CreateCompany/CompanyDetails.tsx @@ -69,6 +69,12 @@ const CompanyDetails: React.FC = ({ required: "Company code required!", })} error={Boolean(errors.companyCode)} + helperText={ + Boolean(errors.companyCode) && + (errors.companyCode?.message + ? t(errors.companyCode.message) + : t("Please input correct company code")) + } /> @@ -83,7 +89,7 @@ const CompanyDetails: React.FC = ({ = ({ isEdit, company, + companyCodes, }) => { const [serverError, setServerError] = useState(""); const { t } = useTranslation(); const router = useRouter(); + console.log(companyCodes) + const handleCancel = () => { router.back(); }; @@ -41,11 +45,20 @@ const CreateCompany: React.FC = ({ const onSubmit = useCallback>( async (data) => { try { + let haveError = false + if (companyCodes.includes(data.companyCode)) { + haveError = true + formProps.setError("companyCode", { message: t("Duplicated Code."), type: "required" }) + } console.log(data); + if (haveError) { + return + } + console.log("passed") setServerError(""); // console.log(JSON.stringify(data)); - await saveCompany(data) - router.replace("/settings/company"); + // await saveCompany(data) + // router.replace("/settings/company"); } catch (e) { setServerError(t("An error has occurred. Please try again later.")); } diff --git a/src/components/CreateCompany/CreateCompanyWrapper.tsx b/src/components/CreateCompany/CreateCompanyWrapper.tsx index c4bb681..10e7905 100644 --- a/src/components/CreateCompany/CreateCompanyWrapper.tsx +++ b/src/components/CreateCompany/CreateCompanyWrapper.tsx @@ -1,4 +1,4 @@ -import { fetchCompanyDetails } from "@/app/api/companys"; +import { fetchCompanyDetails, fetchCompanys } from "@/app/api/companys"; import CreateCompany from "./CreateCompany"; type CreateCompanyProps = {isEdit: false} @@ -16,9 +16,10 @@ const CreateCompanyWrapper: React.FC = async (props) => { const companyDetails = props.isEdit ? await fetchCompanyDetails(props.companyId!) : undefined; - + const [ company ] = await Promise.all([fetchCompanys()]) + console.log(company) return ( - c.companyCode)} isEdit company={companyDetails} /> ) } diff --git a/src/components/CreateDepartment/CreateDepartment.tsx b/src/components/CreateDepartment/CreateDepartment.tsx index 2d95d28..9586ecc 100644 --- a/src/components/CreateDepartment/CreateDepartment.tsx +++ b/src/components/CreateDepartment/CreateDepartment.tsx @@ -27,17 +27,20 @@ import { DepartmentResult } from "@/app/api/departments"; interface Props { isEdit: Boolean; department?: CreateDepartmentInputs; + depCodes: string[] } const CreateDepartment: React.FC = ({ isEdit, department, + depCodes, }) => { const [serverError, setServerError] = useState(""); const { t } = useTranslation(); const router = useRouter(); console.log(department) + console.log(depCodes) const handleCancel = () => { router.back(); @@ -47,6 +50,15 @@ const CreateDepartment: React.FC = ({ async (data) => { try { console.log(data); + let haveError = false + if (depCodes.includes(data.code)) { + formProps.setError("code", { message: t("Duplicated code."), type: "required" }) + haveError = true + } + if (haveError) { + return + } + console.log("passed") setServerError(""); // console.log(JSON.stringify(data)); await saveDepartment(data) diff --git a/src/components/CreateDepartment/CreateDepartmentWrapper.tsx b/src/components/CreateDepartment/CreateDepartmentWrapper.tsx index 199ed1c..fbfc889 100644 --- a/src/components/CreateDepartment/CreateDepartmentWrapper.tsx +++ b/src/components/CreateDepartment/CreateDepartmentWrapper.tsx @@ -1,7 +1,7 @@ import { fetchAllTasks, fetchTaskTemplates } from "@/app/api/tasks"; import CreateDepartment from "./CreateDepartment"; import { fetchTeamLeads } from "@/app/api/staff"; -import { DepartmentResult, fetchDepartmentDetails } from "@/app/api/departments"; +import { DepartmentResult, fetchDepartmentDetails, fetchDepartments } from "@/app/api/departments"; type CreateDepartmentProps = { isEdit: false }; interface EditDepartmentProps { @@ -17,8 +17,10 @@ const CreateDepartmentWrapper: React.FC = async (props) => { ? await fetchDepartmentDetails(props.departmentId!) : undefined; + const [ department ] = await Promise.all([fetchDepartments()]) + return ( - d.code)} isEdit department={departmentInfo} /> ); }; diff --git a/src/components/CreateDepartment/DepartmentDetails.tsx b/src/components/CreateDepartment/DepartmentDetails.tsx index 8cd559c..2663cc5 100644 --- a/src/components/CreateDepartment/DepartmentDetails.tsx +++ b/src/components/CreateDepartment/DepartmentDetails.tsx @@ -43,6 +43,12 @@ const DepartmentDetails: React.FC = ({ required: "Department code required!", })} error={Boolean(errors.code)} + helperText={ + Boolean(errors.code) && + (errors.code?.message + ? t(errors.code.message) + : t("Please input correct department code")) + } />