'use client'; import { zodResolver } from '@hookform/resolvers/zod'; import { Button } from '@repo/shadcn/button'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@repo/shadcn/form'; import { Input } from '@repo/shadcn/input'; import { signIn } from 'next-auth/react'; import { useRouter, useSearchParams } from 'next/navigation'; import { useState, useTransition } from 'react'; import { useForm } from 'react-hook-form'; import { toast } from 'sonner'; import { SelectSearchable } from '@repo/shadcn/select-searchable' import { createUserValue, createUser } from '../schemas/register'; import { useRegisterUser } from "../hooks/use-mutation-users"; import React from 'react'; import { useStateQuery, useMunicipalityQuery, useParishQuery } from '@/feactures/location/hooks/use-query-location'; export default function UserAuthForm() { const router = useRouter(); const searchParams = useSearchParams(); const callbackUrl = searchParams.get('callbackUrl'); const [loading, startTransition] = useTransition(); const [error, SetError] = useState(null); const [state, setState] = React.useState(0); const [municipality, setMunicipality] = React.useState(0); const [parish, setParish] = React.useState(0); const [disabledMunicipality, setDisabledMunicipality] = React.useState(true); const [disabledParish, setDisabledParish] = React.useState(true); const { data : dataState } = useStateQuery() const { data : dataMunicipality } = useMunicipalityQuery(state) const { data : dataParish } = useParishQuery(municipality) const stateOptions = dataState?.data || [{id:0,name:'Sin estados'}] const municipalityOptions = dataMunicipality?.data || [{id:0,stateId:0,name:'Sin Municipios'}] const parishOptions = dataParish?.data || [{id:0,municipalityId:0,name:'Sin Parroquias'}] const defaultValues = { username: '', password: '', confirmPassword: '', fullname: '', lastname: '', email: '', phone: '', role: 5 }; const form = useForm({ resolver: zodResolver(createUser), defaultValues, }); const { mutate: saveAccountingAccounts, isPending: isSaving, isError, } = useRegisterUser(); const onSubmit = async (data: createUserValue) => { SetError(null); const formData = {role: 5, ...data } saveAccountingAccounts(formData, { onSuccess: () => { form.reset(); toast.success('Registro Exitoso!'); router.push(callbackUrl ?? '/'); }, onError: (e) => { // form.setError('root', { // type: 'manual', // message: 'Error al guardar la cuenta contable', // }); SetError(e.message); toast.error(e.message); }, }) } return ( <>

Sistema Integral Fondemi

Ingresa tus datos

{ error ? (

{error}

): null }
( Usuario )} /> ( Nombre Completo )} /> ( Teléfono )} /> ( Correo )} /> ( Estado ({ value: item.id.toString(), label: item.name, })) || [] } onValueChange={(value : any) => {field.onChange(Number(value)); setState(value); setDisabledMunicipality(false); setDisabledParish(true)} } placeholder="Selecciona un estado" defaultValue={field.value?.toString()} // disabled={readOnly} /> )} /> ( Municipio ({ value: item.id.toString(), label: item.name, })) || [] } onValueChange={(value : any) => {field.onChange(Number(value)); setMunicipality(value); setDisabledParish(false)} } placeholder="Selecciona un Municipio" defaultValue={field.value?.toString()} disabled={disabledMunicipality} /> )} /> ( Parroquia ({ value: item.id.toString(), label: item.name, })) || [] } onValueChange={(value : any) => field.onChange(Number(value)) } placeholder="Selecciona una Parroquia" defaultValue={field.value?.toString()} disabled={disabledParish} /> )} /> ( Contraseña )} /> ( Repita la contraseña )} />
{error && ( {error} )}{' '}
¿Ya tienes una cuenta?{" "} Inicia Sesión
); }