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..4b210db 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilRemoveData.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GTBEstadoCivil/GTBEstadoCivilRemoveData.ts @@ -2,7 +2,7 @@ import API from "@/services/api/Api"; import { GTBEstadoCivilInterface } from "../../_interfaces/GTBEstadoCivilInterface"; import { Methods } from "@/services/api/enums/ApiMethodEnum"; -export default async function GTBEstadoCivilRemoveData(data: GTBEstadoCivilInterface) { +export default async function executeGTBEstadoCivilRemoveData(data: GTBEstadoCivilInterface) { const api = new API(); 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..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 @@ -1,12 +1,14 @@ +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(); return response; } catch (error) { - console.log(error) return error } -} \ No newline at end of file +} + +export const GTBEstadoCivilIndexService = withClientErrorHandler(executeGTBEstadoCivilIndexService) \ No newline at end of file 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