Initial commit for new panel

This commit is contained in:
AmirReza Jamali
2025-09-09 11:20:26 +03:30
commit 1d4ccb3575
343 changed files with 20031 additions and 0 deletions
@@ -0,0 +1,87 @@
"use client";
import { useCreateCompany, useUpdateCompany } from "@/hooks/queries";
import { ICreateCompanyCredentials } from "@/lib/api";
import { useIsMutating } from "@tanstack/react-query";
import { useRouter } from "next/navigation";
import { SubmitHandler, useForm } from "react-hook-form";
interface IProps {
editMode?: boolean;
defaultValues?: ICreateCompanyCredentials;
id?: string;
}
const useCreateCompanyPresenter = ({ defaultValues, editMode, id }: IProps) => {
const isMutating = useIsMutating();
const {
register,
formState: { errors },
handleSubmit,
reset,
} = useForm<ICreateCompanyCredentials>({ mode: "onChange", defaultValues });
const router = useRouter();
const { mutate: createCompany, isPending: isCreating } = useCreateCompany();
const { mutate: updateCompany, isPending: isUpdating } = useUpdateCompany(
id as string,
);
const onSubmit: SubmitHandler<ICreateCompanyCredentials> = (data) => {
const formattedData = {
...data,
founded_year: data.founded_year ? +data.founded_year : 0,
employee_count: data.employee_count ? +data.employee_count : 0,
annual_revenue: data.annual_revenue ? +data.annual_revenue : 0,
tags: {
keywords: data.tags?.keywords
? (data.tags.keywords as unknown as string)
.split(",")
.map((s) => s.trim())
: [],
categories: data.tags?.categories
? (data.tags.categories as unknown as string)
.split(",")
.map((s) => s.trim())
: [],
specializations: data.tags?.specializations
? (data.tags.specializations as unknown as string)
.split(",")
.map((s) => s.trim())
: [],
certifications: data.tags?.certifications
? (data.tags.certifications as unknown as string)
.split(",")
.map((s) => s.trim())
: [],
cpv_codes: data.tags?.cpv_codes
? (data.tags.cpv_codes as unknown as string)
.split(",")
.map((s) => s.trim())
: [],
},
};
if (editMode) {
updateCompany({
id: id as string,
credentials: formattedData as ICreateCompanyCredentials,
});
} else {
createCompany(formattedData as ICreateCompanyCredentials);
}
};
const handleCancel = () => {
reset();
router.back();
};
return {
errors,
register,
handleSubmit,
onSubmit,
handleCancel,
isMutating,
isCreating,
isUpdating,
router
};
};
export default useCreateCompanyPresenter;