import { useEffect, useState } from "react";
import { useToast } from "@/components/ui/use-toast";
import { trpc } from "@/app/_trpc/client";
import useFormHandler from "@/hooks/useFormHandler";
import { removeLocalOffsetFromDate } from "@/lib/utils";
import { createProjectSchema } from "@/lib/schemas/projectSchema";
import { z } from "zod";
type CustomNames={
residence:boolean
typeCotization:boolean
}
const useProjectForm = () => {
const defaultValues: z.infer<typeof createProjectSchema> = {
name: "",
costPerMeter: 0,
startDate: new Date(),
estimatedEndDate: undefined,
laborCost: 0,
typeCotization: "metro",
residence: "apartamento",
};
const [isCustomNames,setIsCustomNames]=useState<CustomNames>({
residence:false,
typeCotization:false
})
function resetCustonName(key:keyof CustomNames){
setIsCustomNames((prev) => ({ ...prev, [key]: false }));
form.resetField(key)
}
const utils = trpc.useUtils();
const { form, isInputChanged } = useFormHandler(createProjectSchema, defaultValues);
const { toast } = useToast();
const [open, setOpen] = useState<boolean>(false);
const { mutate: createProjectMutation, isPending } =
trpc.projects.createProject.useMutation({
onSuccess: () => {
toast({ title: "Éxito!", description: "Proyecto creado con éxito" });
utils.projects.getProjects.invalidate();
setOpen(false);
},
onError: (err) => {
console.log('err',err)
toast({ title: "Error!", description: "Error al crear proyecto", variant: "destructive" });
},
});
const onSubmit = (values: z.infer<typeof createProjectSchema>) => {
createProjectMutation(values);
};
const residenceFormValue = form.watch('residence')
const typeCotizationVale = form.watch('typeCotization')
useEffect(()=>{
if(residenceFormValue.toLocaleLowerCase() === 'otro'){
setIsCustomNames({...isCustomNames,residence:true})
form.setValue('residence','')
}
if(typeCotizationVale.toLocaleLowerCase() === 'otro'){
setIsCustomNames({...isCustomNames,typeCotization:true})
form.setValue('typeCotization','')
}
},[residenceFormValue,typeCotizationVale])
return {
form,
isInputChanged,
open,
setOpen,
onSubmit,
isPending,
isCustomNames,
resetCustonName
};
};
export default useProjectForm;