diff --git a/src/app/(protected)/(cadastros)/cadastros/(t_tb_andamentoservico)/andamentos/page.tsx b/src/app/(protected)/(cadastros)/cadastros/(t_tb_andamentoservico)/andamentos/page.tsx index 2f9fb14..a11eecb 100644 --- a/src/app/(protected)/(cadastros)/cadastros/(t_tb_andamentoservico)/andamentos/page.tsx +++ b/src/app/(protected)/(cadastros)/cadastros/(t_tb_andamentoservico)/andamentos/page.tsx @@ -91,6 +91,9 @@ export default function TTBAndamentoServico() { */ const handleDelete = useCallback(async () => { + // Protege contra null + if (!itemToDelete) return; + // Executa o Hook de remoção await deleteTTBAndamentoServico(itemToDelete); @@ -168,5 +171,5 @@ export default function TTBAndamentoServico() { onSave={handleSave} /> - ); + );4 } \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/(t_tb_reconhecimentotipo)/reconhecimentos/page.tsx b/src/app/(protected)/(cadastros)/cadastros/(t_tb_reconhecimentotipo)/reconhecimentos/page.tsx index d24425b..2372e32 100644 --- a/src/app/(protected)/(cadastros)/cadastros/(t_tb_reconhecimentotipo)/reconhecimentos/page.tsx +++ b/src/app/(protected)/(cadastros)/cadastros/(t_tb_reconhecimentotipo)/reconhecimentos/page.tsx @@ -6,8 +6,8 @@ import { Card, CardContent } from "@/components/ui/card"; import { PlusIcon } from "lucide-react"; import Loading from "@/app/_components/loading/loading"; -import TTBAndamentoServicoTable from "../../_components/t_tb_reconhecimentotipo/TTBReconhecimentoTipoTable"; -import TTBAndamentoServicoForm from "../../_components/t_tb_reconhecimentotipo/TTBReconhecimentoTipoForm"; +import TTBReconhecimentoTipoTable from "../../_components/t_tb_reconhecimentotipo/TTBReconhecimentoTipoTable"; +import TTBReconhecimentoTipoForm from "../../_components/t_tb_reconhecimentotipo/TTBReconhecimentoTipoForm"; import { useTTBReconhecimentoTipoReadHook } from "../../_hooks/t_tb_reconhecimentotipo/useTTBReconhecimentoTipoReadHook"; import { useTTBReconhecimentoTipoSaveHook } from "../../_hooks/t_tb_reconhecimentotipo/useTTBReconhecimentoTipoSaveHook"; @@ -17,7 +17,6 @@ import ConfirmDialog from "@/app/_components/confirm_dialog/ConfirmDialog"; import { useConfirmDialog } from "@/app/_components/confirm_dialog/useConfirmDialog"; import TTBReconhecimentoTipoInterface from "../../_interfaces/TTBReconhecimentoTipoInterface"; -import TTBReconhecimentoTipoFormProps from "../../_components/t_tb_reconhecimentotipo/TTBReconhecimentoTipoForm"; export default function TTBAndamentoServico() { @@ -93,6 +92,9 @@ export default function TTBAndamentoServico() { */ const handleDelete = useCallback(async () => { + // Protege contra null + if (!itemToDelete) return; + // Executa o Hook de remoção await deleteTTBReconhecimentoTipo(itemToDelete); @@ -142,7 +144,7 @@ export default function TTBAndamentoServico() { {/* Tabela de andamentos */} - {/* Formulário de criação/edição */} - ; @@ -38,14 +39,14 @@ interface TTBReconhecimentoTipoFormProps { onSave: (data: FormValues) => void; } -export default function TTBReconhecimentoTipoFormProps({ isOpen, data, onClose, onSave }: TTBReconhecimentoTipoFormProps) { +export default function TTBReconhecimentoTipoForm({ isOpen, data, onClose, onSave }: TTBReconhecimentoTipoFormProps) { // Inicializa o react-hook-form com schema zod const form = useForm({ resolver: zodResolver(TTBReconhecimentoTipoSchema), defaultValues: { tb_reconhecimentotipo_id: 0, descricao: "", - situacao: "A", + situacao: situacaoEnum.ATIVO, }, }); diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_tb_reconhecimentotipo/useTTBReconhecimentoTipoReadHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_tb_reconhecimentotipo/useTTBReconhecimentoTipoReadHook.ts index 3f62408..5817953 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_tb_reconhecimentotipo/useTTBReconhecimentoTipoReadHook.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_tb_reconhecimentotipo/useTTBReconhecimentoTipoReadHook.ts @@ -9,7 +9,7 @@ export const useTTBReconhecimentoTipoReadHook = () => { const { setResponse } = useResponse(); - const [tTBReconhecimentosTipos, setReconhecimenntosTipos] = useState(); + const [tTBReconhecimentosTipos, setReconhecimenntosTipos] = useState([]); const fetchTTBReconhecimentosTipos = async () => { diff --git a/src/app/(protected)/(cadastros)/cadastros/_interfaces/TTBAndamentoServicoInterface.ts b/src/app/(protected)/(cadastros)/cadastros/_interfaces/TTBAndamentoServicoInterface.ts index 5322010..26ad9e2 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_interfaces/TTBAndamentoServicoInterface.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_interfaces/TTBAndamentoServicoInterface.ts @@ -1,8 +1,9 @@ export default interface TTBAndamentoServicoInteface { - tb_andamentoservico_id: number, - descricao: null | string, - situacao: null | string, - tipo: null | tipoEnum, + tb_andamentoservico_id?: number, + descricao: string, + situacao: string, + tipo: tipoEnum, + usa_email: string } export enum tipoEnum { diff --git a/src/app/(protected)/(cadastros)/cadastros/_interfaces/TTBReconhecimentoTipoInterface.ts b/src/app/(protected)/(cadastros)/cadastros/_interfaces/TTBReconhecimentoTipoInterface.ts index 8eef0fe..46daae9 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_interfaces/TTBReconhecimentoTipoInterface.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_interfaces/TTBReconhecimentoTipoInterface.ts @@ -1,5 +1,12 @@ -export default interface TTBReconhecimentoTipoInterface{ - tb_reconhecimentotipo_id: number, +export default interface TTBReconhecimentoTipoInterface { + tb_reconhecimentotipo_id?: number, descricao: string, - situacao: string, + situacao: situacaoEnum, +} + +export enum situacaoEnum { + + ATIVO = 'A', + INATIVO = 'I', + } \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_schemas/TTBAndamentoServicoSchema.ts b/src/app/(protected)/(cadastros)/cadastros/_schemas/TTBAndamentoServicoSchema.ts index 7a326bc..4677fdf 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_schemas/TTBAndamentoServicoSchema.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_schemas/TTBAndamentoServicoSchema.ts @@ -1,11 +1,12 @@ import { z } from 'zod'; +import { tipoEnum } from '../_interfaces/TTBAndamentoServicoInterface'; export const TTBAndamentoServicoSchema = z.object({ tb_andamentoservico_id: z.number().optional(), descricao: z.string().min(1, "Descrição Obrigatória"), situacao: z.string().min(1, "Situação Obrigatória"), - tipo: z.string().min(1, "Tipo Obrigatória"), + tipo: z.nativeEnum(tipoEnum, { message: "Tipo inválido" }), usa_email: z.string().min(1, "Email Obrigatória"), }); \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_schemas/TTBReconhecimentoTipoSchema.ts b/src/app/(protected)/(cadastros)/cadastros/_schemas/TTBReconhecimentoTipoSchema.ts index c8e73dc..f9c8f27 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_schemas/TTBReconhecimentoTipoSchema.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_schemas/TTBReconhecimentoTipoSchema.ts @@ -1,9 +1,8 @@ import { z } from 'zod'; +import { situacaoEnum } from '../_interfaces/TTBReconhecimentoTipoInterface'; export const TTBReconhecimentoTipoSchema = z.object({ - tb_reconhecimentotipo_id: z.number(), - descricao: z.string().min(1), - situacao: z.enum(["A", "I"], { - errorMap: () => ({ message: "Situação deve ser 'A' ou 'I'" }) - }), + tb_reconhecimentotipo_id: z.number().optional(), + descricao: z.string().min(1, "Campo descrição deve ser preenchido"), + situacao: z.nativeEnum(situacaoEnum, { message: "Tipo inválido" }), }); \ No newline at end of file