From 3e68efe7ec04ee7690fb698e532203aaad674721 Mon Sep 17 00:00:00 2001 From: keven Date: Tue, 7 Oct 2025 11:59:32 -0300 Subject: [PATCH] [MVPTN-87] feat(CRUD): Adiciona os endpoints funcionais do backend --- src/components/ui/input.tsx | 3 +- .../TImovelUnidadeUrbanoForm.tsx | 2 +- .../TImovelUnidadeUrbanoPage.tsx | 2 +- .../data/TImovel/TImovelDeleteData.ts | 12 ++++--- .../TImovelUnidadeUrbanoDeleteData.ts | 10 ++++-- .../TImovelUnidadeUrbanoSaveData.ts | 16 ++++++++-- .../hooks/TImovel/useTImovelIndexHook.ts | 2 +- .../useTImovelUnidadeUrbanoDeleteHook.ts | 2 -- .../useTImovelUnidadeUrbanoIndexHook.ts | 3 +- .../useTImovelUnidadeUrbanoSaveHook.ts | 3 ++ .../TImovelUnidadePageInterface.ts | 2 +- .../TImovelUnidadeUrbanoFormInterface.ts | 2 +- .../TImovelUnidadeUrbanoInterface.ts | 32 +++++++++---------- .../TImovelUnidadeUrbanoSchema.ts | 28 ++++++++-------- .../TImovelUnidadeUrbanoDeleteService.ts | 4 ++- src/shared/actions/text/GetCapitalize.ts | 2 +- 16 files changed, 73 insertions(+), 52 deletions(-) diff --git a/src/components/ui/input.tsx b/src/components/ui/input.tsx index 3c1cfca..147cfce 100644 --- a/src/components/ui/input.tsx +++ b/src/components/ui/input.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { cn } from '@/lib/utils'; -function Input({ className, type, ...props }: React.ComponentProps<'input'>) { +function Input({ className, value, type, ...props }: React.ComponentProps<'input'>) { return ( ) { 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive', className, )} + value={value ?? ''} {...props} /> ); diff --git a/src/packages/administrativo/components/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoForm.tsx b/src/packages/administrativo/components/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoForm.tsx index e58dcb6..0c7f0a8 100644 --- a/src/packages/administrativo/components/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoForm.tsx +++ b/src/packages/administrativo/components/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoForm.tsx @@ -381,7 +381,7 @@ export default function TImovelUnidadeUrbanoForm({ isOpen, data, onClose, onSave )} /> - {/* UnidadeUrbano */} + {/* Unidade Urbano */}
{ - return Promise.resolve({ - status: 200, - message: 'Dados Removidos' + const api = new API(); + + return await api.send({ + method: Methods.DELETE, + endpoint: `administrativo/t_imovel/${data.imovel_id}` }); } diff --git a/src/packages/administrativo/data/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoDeleteData.ts b/src/packages/administrativo/data/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoDeleteData.ts index f4f7a88..38390e4 100644 --- a/src/packages/administrativo/data/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoDeleteData.ts +++ b/src/packages/administrativo/data/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoDeleteData.ts @@ -1,11 +1,15 @@ import { withClientErrorHandler } from "@/shared/actions/withClientErrorHandler/withClientErrorHandler"; import { TImovelUnidadeUrbanoInterface } from "@/packages/administrativo/interfaces/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoInterface"; +import API from "@/shared/services/api/Api"; +import { Methods } from "@/shared/services/api/enums/ApiMethodEnum"; async function executeTImovelUnidadeUrbanoDeleteData(data: TImovelUnidadeUrbanoInterface) { - return Promise.resolve({ - status: 200, - message: 'Dados Removidos' + const api = new API(); + + return api.send({ + method: Methods.DELETE, + endpoint: `administrativo/t_imovel_unidade/${data.imovel_unidade_id}` }); } diff --git a/src/packages/administrativo/data/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoSaveData.ts b/src/packages/administrativo/data/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoSaveData.ts index 852378a..d4ab5ca 100644 --- a/src/packages/administrativo/data/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoSaveData.ts +++ b/src/packages/administrativo/data/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoSaveData.ts @@ -1,11 +1,21 @@ import { withClientErrorHandler } from "@/shared/actions/withClientErrorHandler/withClientErrorHandler"; import { TImovelUnidadeUrbanoInterface } from "@/packages/administrativo/interfaces/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoInterface"; +import API from "@/shared/services/api/Api"; +import { Methods } from "@/shared/services/api/enums/ApiMethodEnum"; async function executeTImovelUnidadeUrbanoSaveData(data: TImovelUnidadeUrbanoInterface) { - return Promise.resolve({ - status: 200, - message: 'Dados salvos', + // Verifica se existe ID da cidade para decidir se é atualização (PUT) ou criação (POST) + const isUpdate = Boolean(data.imovel_unidade_id); + + // Instancia o cliente da API para enviar a requisição + const api = new API(); + + // Executa a requisição para a API com o método apropriado e envia os dados no corpo + return await api.send({ + method: isUpdate ? Methods.PUT : Methods.POST, // PUT se atualizar, POST se criar + endpoint: `administrativo/t_imovel_unidade/${data.imovel_unidade_id || ''}`, // endpoint dinâmico + body: data, // payload enviado para a API }); } diff --git a/src/packages/administrativo/hooks/TImovel/useTImovelIndexHook.ts b/src/packages/administrativo/hooks/TImovel/useTImovelIndexHook.ts index 63f79dc..09f3dcb 100644 --- a/src/packages/administrativo/hooks/TImovel/useTImovelIndexHook.ts +++ b/src/packages/administrativo/hooks/TImovel/useTImovelIndexHook.ts @@ -8,7 +8,7 @@ import { TImovelIndexData } from '../../data/TImovel/TImovelIndexData'; export const useTImovelIndexHook = () => { const { setResponse } = useResponse(); - const [tImovel, setTImovel] = useState(); + const [tImovel, setTImovel] = useState([]); const indexTImovel = async () => { const response = await TImovelIndexData(); diff --git a/src/packages/administrativo/hooks/TImovelUnidade/TImovelUnidadeUrbano/useTImovelUnidadeUrbanoDeleteHook.ts b/src/packages/administrativo/hooks/TImovelUnidade/TImovelUnidadeUrbano/useTImovelUnidadeUrbanoDeleteHook.ts index 8c625fb..cff9ebc 100644 --- a/src/packages/administrativo/hooks/TImovelUnidade/TImovelUnidadeUrbano/useTImovelUnidadeUrbanoDeleteHook.ts +++ b/src/packages/administrativo/hooks/TImovelUnidade/TImovelUnidadeUrbano/useTImovelUnidadeUrbanoDeleteHook.ts @@ -10,9 +10,7 @@ export const useTImovelUnidadeUrbanoDeleteHook = () => { const deleteTImovelUnidadeUrbano = async (data: TImovelUnidadeUrbanoInterface) => { const response = await TImovelUnidadeUrbanoDeleteService(data); - setTImovelUnidadeUrbano(data); - setResponse(response); }; diff --git a/src/packages/administrativo/hooks/TImovelUnidade/TImovelUnidadeUrbano/useTImovelUnidadeUrbanoIndexHook.ts b/src/packages/administrativo/hooks/TImovelUnidade/TImovelUnidadeUrbano/useTImovelUnidadeUrbanoIndexHook.ts index cd60c80..cb0323c 100644 --- a/src/packages/administrativo/hooks/TImovelUnidade/TImovelUnidadeUrbano/useTImovelUnidadeUrbanoIndexHook.ts +++ b/src/packages/administrativo/hooks/TImovelUnidade/TImovelUnidadeUrbano/useTImovelUnidadeUrbanoIndexHook.ts @@ -9,8 +9,7 @@ import TImovelUnidadePageInterface from '@/packages/administrativo/interfaces/TI export const useTImovelUnidadeUrbanoIndexHook = () => { const { setResponse } = useResponse(); - const [tImovelUnidadeUrbano, setTImovelUnidadeUrbano] = useState< - TImovelUnidadeUrbanoInterface[]>(); + const [tImovelUnidadeUrbano, setTImovelUnidadeUrbano] = useState([]); const indexTImovelUnidadeUrbano = async (data: TImovelUnidadePageInterface) => { diff --git a/src/packages/administrativo/hooks/TImovelUnidade/TImovelUnidadeUrbano/useTImovelUnidadeUrbanoSaveHook.ts b/src/packages/administrativo/hooks/TImovelUnidade/TImovelUnidadeUrbano/useTImovelUnidadeUrbanoSaveHook.ts index e63b6db..b4fa294 100644 --- a/src/packages/administrativo/hooks/TImovelUnidade/TImovelUnidadeUrbano/useTImovelUnidadeUrbanoSaveHook.ts +++ b/src/packages/administrativo/hooks/TImovelUnidade/TImovelUnidadeUrbano/useTImovelUnidadeUrbanoSaveHook.ts @@ -14,6 +14,9 @@ export const useTImovelUnidadeUrbanoSaveHook = () => { const [isOpen, setIsOpen] = useState(false); const saveTImovelUnidadeUrbano = async (data: TImovelUnidadeUrbanoInterface) => { + + console.log(data); + const response = await TImovelUnidadeUrbanoSaveService(data); // Armazena os dados da repsota diff --git a/src/packages/administrativo/interfaces/TImovelUnidade/TImovelUnidadePageInterface.ts b/src/packages/administrativo/interfaces/TImovelUnidade/TImovelUnidadePageInterface.ts index f859b88..e7ed9bc 100644 --- a/src/packages/administrativo/interfaces/TImovelUnidade/TImovelUnidadePageInterface.ts +++ b/src/packages/administrativo/interfaces/TImovelUnidade/TImovelUnidadePageInterface.ts @@ -1,3 +1,3 @@ export default interface TImovelUnidadePageInterface { - imovel_id : number; + imovel_id? : number; } \ No newline at end of file diff --git a/src/packages/administrativo/interfaces/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoFormInterface.ts b/src/packages/administrativo/interfaces/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoFormInterface.ts index 89ae221..8a646a9 100644 --- a/src/packages/administrativo/interfaces/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoFormInterface.ts +++ b/src/packages/administrativo/interfaces/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoFormInterface.ts @@ -6,4 +6,4 @@ export interface TImovelUnidadeUrbanoFormInterface { onClose: (item: null, isFormStatus: boolean) => void; onSave: (data: TImovelUnidadeUrbanoFormValues) => void; buttonIsLoading: boolean; -} \ No newline at end of file +} diff --git a/src/packages/administrativo/interfaces/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoInterface.ts b/src/packages/administrativo/interfaces/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoInterface.ts index 39b5e50..7984ce9 100644 --- a/src/packages/administrativo/interfaces/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoInterface.ts +++ b/src/packages/administrativo/interfaces/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoInterface.ts @@ -1,21 +1,21 @@ import TImovelUnidadeInterface from "../TImovelUnidadeInterface"; export interface TImovelUnidadeUrbanoInterface extends TImovelUnidadeInterface { - quadra?: string; - lote?: string; - inscricao_municipal?: string; - tb_tipologradouro_id?: number; + quadra?: string | null; + lote?: string | null; + inscricao_municipal?: string | null; + tb_tipologradouro_id?: number | null; logradouro: string; - tipo_imovel?: number; - tipo_construcao?: number; - iptu?: string; - numero_unidade?: string; - torre?: string; - nomecondominio?: string; - nomeloteamento?: string; - numero?: number; - complemento?: string; - numero_edificacao?: string; - cnm_numero?: string; - cib?: string; + tipo_imovel?: number | null; + tipo_construcao?: number | null; + iptu?: string | null; + numero_unidade?: string | null; + torre?: string | null; + nomecondominio?: string | null; + nomeloteamento?: string | null; + numero?: number | null; + complemento?: string | null; + numero_edificacao?: string | null; + cnm_numero?: string | null; + cib?: string | null; } diff --git a/src/packages/administrativo/schemas/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoSchema.ts b/src/packages/administrativo/schemas/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoSchema.ts index 50719b1..33c42cb 100644 --- a/src/packages/administrativo/schemas/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoSchema.ts +++ b/src/packages/administrativo/schemas/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoSchema.ts @@ -2,21 +2,21 @@ import { z } from "zod"; import { TImovelUnidadeSchema } from "../TImovelUnidadeSchema"; export const TImovelUnidadeUrbanoSchema = TImovelUnidadeSchema.extend({ - quadra: z.string().optional(), - lote: z.string().optional(), - inscricao_municipal: z.string().optional(), - tb_tipologradouro_id: z.number().optional(), + quadra: z.string().nullable().optional(), + lote: z.string().nullable().optional(), + inscricao_municipal: z.string().nullable().optional(), + tb_tipologradouro_id: z.number().nullable().optional(), logradouro: z.string().min(1, "O logradouro é obrigatório"), - iptu: z.string().optional(), - numero_unidade: z.string().optional(), - torre: z.string().optional(), - nomecondominio: z.string().optional(), - nomeloteamento: z.string().optional(), - numero: z.number().optional(), - complemento: z.string().optional(), - numero_edificacao: z.string().optional(), - cnm_numero: z.string().optional(), - cib: z.string().optional(), + iptu: z.string().nullable().optional(), + numero_unidade: z.string().nullable().optional(), + torre: z.string().nullable().optional(), + nomecondominio: z.string().nullable().optional(), + nomeloteamento: z.string().nullable().optional(), + numero: z.number().nullable().optional(), + complemento: z.string().nullable().optional(), + numero_edificacao: z.string().nullable().optional(), + cnm_numero: z.string().nullable().optional(), + cib: z.string().nullable().optional(), }); export type TImovelUnidadeUrbanoFormValues = z.infer; diff --git a/src/packages/administrativo/services/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoDeleteService.ts b/src/packages/administrativo/services/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoDeleteService.ts index cadb758..c9b6c99 100644 --- a/src/packages/administrativo/services/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoDeleteService.ts +++ b/src/packages/administrativo/services/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoDeleteService.ts @@ -1,8 +1,10 @@ import { withClientErrorHandler } from '@/shared/actions/withClientErrorHandler/withClientErrorHandler'; import { TImovelUnidadeUrbanoInterface } from '@/packages/administrativo/interfaces/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoInterface'; +import { TImovelUnidadeUrbanoDeleteData } from '@/packages/administrativo/data/TImovelUnidade/TImovelUnidadeUrbano/TImovelUnidadeUrbanoDeleteData'; async function executeTImovelUnidadeUrbanoDeleteService(data: TImovelUnidadeUrbanoInterface) { - const response = await (data); + + const response = await TImovelUnidadeUrbanoDeleteData(data); return response; } diff --git a/src/shared/actions/text/GetCapitalize.ts b/src/shared/actions/text/GetCapitalize.ts index 0d1fe3c..100fccf 100644 --- a/src/shared/actions/text/GetCapitalize.ts +++ b/src/shared/actions/text/GetCapitalize.ts @@ -4,7 +4,7 @@ * @param text - Texto que será capitalizado * @returns String com a primeira letra em maiúscula */ -export default function GetCapitalize(text: string): string { +export default function GetCapitalize(text?: string): string { if (!text) return ''; return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();