diff --git a/mapcon/pages/mapcon/protesto/add.jsx b/mapcon/pages/mapcon/protesto/add.jsx index d7f9ba3..114b664 100644 --- a/mapcon/pages/mapcon/protesto/add.jsx +++ b/mapcon/pages/mapcon/protesto/add.jsx @@ -1,68 +1,121 @@ +// Importa o botão estilizado do PrimeReact import { Button } from 'primereact/button'; +// Importa o campo de texto do PrimeReact import { InputText } from 'primereact/inputtext'; +// Importa funcionalidades do react-hook-form para manipulação de formulários import { useForm, Controller } from "react-hook-form"; +// Importa o componente de cartão (card) do PrimeReact import { Card } from 'primereact/card'; +// Biblioteca para fazer requisições HTTP import axios from 'axios'; +// Hook do Next.js para navegar entre páginas import { useRouter } from 'next/router'; +// Biblioteca para manipulação de datas import moment from 'moment'; +// Campo de entrada com máscara do PrimeReact (ex: para datas) import { InputMask } from 'primereact/inputmask'; +// Componente de toolbar personalizada para o site import ToolbarSite from '../../../components/toolbar_site'; +// Função do NextAuth para obter os dados da sessão do usuário logado import { getSession } from 'next-auth/react' - - -// TODO: Adicionar isSubmiting para evitar envio duplicado os dados +// Componente principal que renderiza o formulário para adicionar um protesto export default function ProtestoForm(props) { - const router = useRouter() + const router = useRouter(); // Usado para redirecionar após envio + // useForm é usado para controlar o formulário + // defaultValues define os valores iniciais, vindos de props const { control, watch, handleSubmit, formState: { errors } } = useForm({ defaultValues: props.form }); - - + // Função executada ao submeter o formulário const onSubmit = async data => { - data['data_protesto'] = moment(data['data_protesto'], 'DD/MM/YYYY').format('YYYY-MM-DD') + // Converte a data do formato brasileiro para o formato ISO (YYYY-MM-DD) + data['data_protesto'] = moment(data['data_protesto'], 'DD/MM/YYYY').format('YYYY-MM-DD'); + // Obtém a sessão do usuário atual const session = await getSession(); + + // Envia os dados via POST para a API axios.post('/api/mapcon/protesto', { - ...data, + ...data, // Dados do formulário user: { id: session.user.id, perfil: session.user.perfil } - }).then(r => router.push({ - pathname: '/mapcon/protesto/edit', - query: { id: r.data[0]['num_seq_protesto'] }, - })) - + }).then(r => + // Redireciona para a página de edição, passando o ID retornado na URL + router.push({ + pathname: '/mapcon/protesto/edit', + query: { id: r.data[0]['num_seq_protesto'] }, + }) + ); } + // JSX retornado: estrutura visual da página return (