From 6e80b5409a2eae8b90a34307dbf803b57d3ce86f Mon Sep 17 00:00:00 2001
From: = <=>
Date: Tue, 23 Sep 2025 16:04:39 -0300
Subject: [PATCH 1/2] [MVPTN-77] refactor(geral): implementando gerenciador de
erro, removendo mock de dados e usando o botao de loading
---
.../(g_tb_estadocivil)/estado-civil/page.tsx | 30 ++++++++--
.../g_tb_estadocivil/GTBEstadoCivilForm.tsx | 9 +--
.../GTBEstadoCivil/GTBEstadoCivilIndexData.ts | 6 --
.../GTBEstadoCivilRemoveData.ts | 7 ++-
.../GTBEstadoCivil/GTBEstadoCivilSaveData.ts | 7 ++-
.../_data/GTBEstadoCivil/mockEstadoCivil.ts | 58 -------------------
.../GTBEstadoCivilIndexService.ts | 7 ++-
7 files changed, 44 insertions(+), 80 deletions(-)
delete mode 100644 src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/mockEstadoCivil.ts
diff --git a/src/app/(protected)/(cadastros)/cadastros/(g_tb_estadocivil)/estado-civil/page.tsx b/src/app/(protected)/(cadastros)/cadastros/(g_tb_estadocivil)/estado-civil/page.tsx
index 536b2be..c794868 100644
--- a/src/app/(protected)/(cadastros)/cadastros/(g_tb_estadocivil)/estado-civil/page.tsx
+++ b/src/app/(protected)/(cadastros)/cadastros/(g_tb_estadocivil)/estado-civil/page.tsx
@@ -15,6 +15,7 @@ import { useGTBEstadoCivilSaveHook } from "../../_hooks/g_tb_estadocivil/useGTBE
import { useGTBEstadoCivilRemoveHook } from "../../_hooks/g_tb_estadocivil/useGTBEstadoCivilRemoveHook";
import { GTBEstadoCivilInterface } from "../../_interfaces/GTBEstadoCivilInterface";
+import { useResponse } from "@/app/_response/ResponseContext";
const initalEstadoCivil: GTBEstadoCivilInterface = {
tb_estadocivil_id: 0,
@@ -25,6 +26,12 @@ const initalEstadoCivil: GTBEstadoCivilInterface = {
export default function TBEstadoCivilPage() {
+ // Controle de exibição de respostas
+ const { setResponse } = useResponse();
+
+ // Controle de estado do botão
+ const [buttonIsLoading, setButtonIsLoading] = useState(false);
+
// Hooks para leitura e salvamento
const { gTBEstadoCivil, fetchGTBEstadoCivil } = useGTBEstadoCivilReadHook();
const { saveGTBEstadoCivil } = useGTBEstadoCivilSaveHook();
@@ -39,7 +46,6 @@ export default function TBEstadoCivilPage() {
const {
isOpen: isConfirmOpen,
openDialog: openConfirmDialog,
- handleConfirm,
handleCancel,
} = useConfirmDialog();
@@ -55,7 +61,11 @@ export default function TBEstadoCivilPage() {
}, []);
const handleSave = useCallback(async (data: GTBEstadoCivilInterface) => {
+ // Coloca o botão em estado de loading
+ setButtonIsLoading(true);
await saveGTBEstadoCivil(data);
+ // Remove o botão do estado de loading
+ setButtonIsLoading(false);
await fetchGTBEstadoCivil(); // Atualiza a tabela após salvar
handleCloseForm();
}, [saveGTBEstadoCivil, fetchGTBEstadoCivil]);
@@ -67,10 +77,17 @@ export default function TBEstadoCivilPage() {
}, [openConfirmDialog]);
const handleDelete = useCallback(async () => {
- if (itemToDelete) {
- await removeGTBEstadoCivil(itemToDelete);
- await fetchGTBEstadoCivil(); // Atualiza a tabela após remover
- }
+ if (!itemToDelete) {
+
+ // Define os dados da resposta visual
+ setResponse({
+ status: 400,
+ message: 'Não foi informado um registro para exclusão'
+ });
+ return;
+ };
+ await removeGTBEstadoCivil(itemToDelete);
+ await fetchGTBEstadoCivil(); // Atualiza a tabela após remover
handleCancel();
}, [itemToDelete, fetchGTBEstadoCivil, handleCancel]);
@@ -78,7 +95,7 @@ export default function TBEstadoCivilPage() {
useEffect(() => {
fetchGTBEstadoCivil();
}, []);
-
+
// Mostra tela de loading enquanto os dados não são carregados
if (!gTBEstadoCivil) {
return ;
@@ -123,6 +140,7 @@ export default function TBEstadoCivilPage() {
data={selectedEstadoCivil}
onClose={handleCloseForm}
onSave={handleSave}
+ buttonIsLoading={buttonIsLoading}
/>
);
diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_estadocivil/GTBEstadoCivilForm.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_estadocivil/GTBEstadoCivilForm.tsx
index 6e94347..8669364 100644
--- a/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_estadocivil/GTBEstadoCivilForm.tsx
+++ b/src/app/(protected)/(cadastros)/cadastros/_components/g_tb_estadocivil/GTBEstadoCivilForm.tsx
@@ -5,6 +5,7 @@ import { useEffect } from "react";
import { useForm, Controller } from "react-hook-form";
import { zodResolver } from "@hookform/resolvers/zod";
+import LoadingButton from "@/app/_components/loadingButton/LoadingButton";
import { Button } from "@/components/ui/button";
import { Checkbox } from "@/components/ui/checkbox";
import {
@@ -37,9 +38,10 @@ interface TBEstadoCivilFormProps {
data: FormValues | null;
onClose: (item: null, isFormStatus: boolean) => void;
onSave: (data: FormValues) => void;
+ buttonIsLoading: boolean;
}
-export default function GTBEstadoCivilForm({ isOpen, data, onClose, onSave }: TBEstadoCivilFormProps) {
+export default function GTBEstadoCivilForm({ isOpen, data, onClose, onSave, buttonIsLoading }: TBEstadoCivilFormProps) {
// Inicializa o react-hook-form com o schema Zod
const form = useForm({
resolver: zodResolver(GTBEstadoCivilSchema),
@@ -113,9 +115,8 @@ export default function GTBEstadoCivilForm({ isOpen, data, onClose, onSave }: TB
Cancelar
-
+ {/* Botão de loading */}
+
{/* Campos ocultos */}
diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilIndexData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilIndexData.ts
index efa8787..c9895bc 100644
--- a/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilIndexData.ts
+++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilIndexData.ts
@@ -1,14 +1,8 @@
import API from "@/services/api/Api";
import { Methods } from "@/services/api/enums/ApiMethodEnum";
-import EstadoCivilMockDeDados from "./mockEstadoCivil";
-const useMock = true
export default async function GTBEstadoCivilIndexData() {
- if (useMock) {
- console.log(EstadoCivilMockDeDados())
- return await EstadoCivilMockDeDados();
- }
const api = new API();
try {
diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilRemoveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilRemoveData.ts
index 306b3c4..cfcd994 100644
--- a/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilRemoveData.ts
+++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilRemoveData.ts
@@ -1,8 +1,9 @@
import API from "@/services/api/Api";
import { GTBEstadoCivilInterface } from "../../_interfaces/GTBEstadoCivilInterface";
import { Methods } from "@/services/api/enums/ApiMethodEnum";
+import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler";
-export default async function GTBEstadoCivilRemoveData(data: GTBEstadoCivilInterface) {
+async function executeGTBEstadoCivilRemoveData(data: GTBEstadoCivilInterface) {
const api = new API();
@@ -11,4 +12,6 @@ export default async function GTBEstadoCivilRemoveData(data: GTBEstadoCivilInter
endpoint: `administrativo/g_tb_bairro/${data.tb_estadocivil_id}`
});
-}
\ No newline at end of file
+}
+
+export const GTBEstadoCivilRemoveData = withClientErrorHandler(executeGTBEstadoCivilRemoveData)
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilSaveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilSaveData.ts
index da800a6..f48410e 100644
--- a/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilSaveData.ts
+++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilSaveData.ts
@@ -1,8 +1,9 @@
import API from "@/services/api/Api";
import { GTBEstadoCivilInterface } from "../../_interfaces/GTBEstadoCivilInterface";
import { Methods } from "@/services/api/enums/ApiMethodEnum";
+import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler";
-export default async function GTBEstadoCivilSaveData(data: GTBEstadoCivilInterface) {
+async function executeGTBEstadoCivilSaveData(data: GTBEstadoCivilInterface) {
const isUpdate = Boolean(data.tb_estadocivil_id);
@@ -14,4 +15,6 @@ export default async function GTBEstadoCivilSaveData(data: GTBEstadoCivilInterfa
body: data
});
-}
\ No newline at end of file
+}
+
+export const GTBEstadoCivilSaveData = withClientErrorHandler(executeGTBEstadoCivilSaveData)
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/mockEstadoCivil.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/mockEstadoCivil.ts
deleted file mode 100644
index 04e8155..0000000
--- a/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/mockEstadoCivil.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-import { GTBBairroInterface } from "../../_interfaces/GTBBairroInterface";
-
-export default async function EstadoCivilMockDeDados() {
- return Promise.resolve({
- status: 200,
- message: 'Dados localizados',
- data: [
- {
- tb_estadocivil_id: 26.00,
- sistema_id: 2.00,
- descricao: "casado",
- situacao: "A",
- },
- {
- tb_estadocivil_id: 27.00,
- sistema_id: 2.00,
- descricao: "solteiro(a)",
- situacao: "A",
- },
- {
- tb_estadocivil_id: 28.00,
- sistema_id: 2.00,
- descricao: "desquitado(a)",
- situacao: "A",
- },
- {
- tb_estadocivil_id: 29.00,
- sistema_id: 2.00,
- descricao: "divorciado(a)",
- situacao: "A",
- },
- {
- tb_estadocivil_id: 30.00,
- sistema_id: 2.00,
- descricao: "espólio",
- situacao: "A",
- },
- {
- tb_estadocivil_id: 31.00,
- sistema_id: 2.00,
- descricao: "menor impúbere",
- situacao: "A",
- },
- {
- tb_estadocivil_id: 32.00,
- sistema_id: 2.00,
- descricao: "menor púbere",
- situacao: "A",
- },
- {
- tb_estadocivil_id: 33.00,
- sistema_id: 2.00,
- descricao: "não consta",
- situacao: "A",
- }
- ]
- });
-}
diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilIndexService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilIndexService.ts
index 11c0b1d..f14c950 100644
--- a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilIndexService.ts
+++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilIndexService.ts
@@ -1,6 +1,7 @@
+import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler";
import GTBEstadoCivilIndexData from "../../_data/GTBEstadoCivil/GTBEstadoCivilIndexData";
-export default async function GTBEstadoCivilIndexService() {
+async function executeGTBEstadoCivilIndexService() {
try {
const response = await GTBEstadoCivilIndexData();
@@ -9,4 +10,6 @@ export default async function GTBEstadoCivilIndexService() {
console.log(error)
return error
}
-}
\ No newline at end of file
+}
+
+export const GTBEstadoCivilIndexService = withClientErrorHandler(executeGTBEstadoCivilIndexService)
\ No newline at end of file
From 46296ec8a95503a015822891ad6e111fc5414eb2 Mon Sep 17 00:00:00 2001
From: = <=>
Date: Tue, 23 Sep 2025 16:07:16 -0300
Subject: [PATCH 2/2] [MVPTN-77] refactor(geral): implementando gerenciador de
erro, removendo mock de dados e usando o botao de loading
---
.../_data/GTBEstadoCivil/GTBEstadoCivilRemoveData.ts | 7 ++-----
.../_data/GTBEstadoCivil/GTBEstadoCivilSaveData.ts | 7 ++-----
.../g_tb_estadocivil/GTBEstadoCivilIndexService.ts | 1 -
.../g_tb_estadocivil/GTBEstadoCivilRemoveService.ts | 7 +++++--
.../g_tb_estadocivil/GTBEstadoCivilSaveService.ts | 9 +++++----
5 files changed, 14 insertions(+), 17 deletions(-)
diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilRemoveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilRemoveData.ts
index cfcd994..4b210db 100644
--- a/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilRemoveData.ts
+++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilRemoveData.ts
@@ -1,9 +1,8 @@
import API from "@/services/api/Api";
import { GTBEstadoCivilInterface } from "../../_interfaces/GTBEstadoCivilInterface";
import { Methods } from "@/services/api/enums/ApiMethodEnum";
-import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler";
-async function executeGTBEstadoCivilRemoveData(data: GTBEstadoCivilInterface) {
+export default async function executeGTBEstadoCivilRemoveData(data: GTBEstadoCivilInterface) {
const api = new API();
@@ -12,6 +11,4 @@ async function executeGTBEstadoCivilRemoveData(data: GTBEstadoCivilInterface) {
endpoint: `administrativo/g_tb_bairro/${data.tb_estadocivil_id}`
});
-}
-
-export const GTBEstadoCivilRemoveData = withClientErrorHandler(executeGTBEstadoCivilRemoveData)
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilSaveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilSaveData.ts
index f48410e..da800a6 100644
--- a/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilSaveData.ts
+++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilSaveData.ts
@@ -1,9 +1,8 @@
import API from "@/services/api/Api";
import { GTBEstadoCivilInterface } from "../../_interfaces/GTBEstadoCivilInterface";
import { Methods } from "@/services/api/enums/ApiMethodEnum";
-import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler";
-async function executeGTBEstadoCivilSaveData(data: GTBEstadoCivilInterface) {
+export default async function GTBEstadoCivilSaveData(data: GTBEstadoCivilInterface) {
const isUpdate = Boolean(data.tb_estadocivil_id);
@@ -15,6 +14,4 @@ async function executeGTBEstadoCivilSaveData(data: GTBEstadoCivilInterface) {
body: data
});
-}
-
-export const GTBEstadoCivilSaveData = withClientErrorHandler(executeGTBEstadoCivilSaveData)
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilIndexService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilIndexService.ts
index f14c950..db35804 100644
--- a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilIndexService.ts
+++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilIndexService.ts
@@ -7,7 +7,6 @@ async function executeGTBEstadoCivilIndexService() {
const response = await GTBEstadoCivilIndexData();
return response;
} catch (error) {
- console.log(error)
return error
}
}
diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilRemoveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilRemoveService.ts
index 4c19f10..da73a58 100644
--- a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilRemoveService.ts
+++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilRemoveService.ts
@@ -1,10 +1,13 @@
+import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler";
import GTBEstadoCivilSaveData from "../../_data/GTBEstadoCivil/GTBEstadoCivilSaveData";
import { GTBEstadoCivilInterface } from "../../_interfaces/GTBEstadoCivilInterface";
-export default async function GTBEstadoCivilRemoveService(data: GTBEstadoCivilInterface) {
+async function executeGTBEstadoCivilRemoveService(data: GTBEstadoCivilInterface) {
const response = await GTBEstadoCivilSaveData(data);
return response;
-}
\ No newline at end of file
+}
+
+export const GTBEstadoCivilRemoveService = withClientErrorHandler(executeGTBEstadoCivilRemoveService)
\ No newline at end of file
diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilSaveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilSaveService.ts
index 0567d52..3b479a7 100644
--- a/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilSaveService.ts
+++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_tb_estadocivil/GTBEstadoCivilSaveService.ts
@@ -1,12 +1,13 @@
+import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler";
import GTBEstadoCivilSaveData from "../../_data/GTBEstadoCivil/GTBEstadoCivilSaveData";
import { GTBEstadoCivilInterface } from "../../_interfaces/GTBEstadoCivilInterface";
-export default async function GTBEstadoCivilSaveService(data: GTBEstadoCivilInterface) {
+async function executeGTBEstadoCivilSaveService(data: GTBEstadoCivilInterface) {
const response = await GTBEstadoCivilSaveData(data);
- console.log('GTBRegimeComunhaoSaveData', response)
-
return response;
-}
\ No newline at end of file
+}
+
+export const GTBEstadoCivilSaveService = withClientErrorHandler(executeGTBEstadoCivilSaveService)
\ No newline at end of file