diff --git a/src/app/(protected)/(cadastros)/cadastros/(t_censec)/censec/page.tsx b/src/app/(protected)/(cadastros)/cadastros/(t_censec)/censec/page.tsx index e4050c9..24287f2 100644 --- a/src/app/(protected)/(cadastros)/cadastros/(t_censec)/censec/page.tsx +++ b/src/app/(protected)/(cadastros)/cadastros/(t_censec)/censec/page.tsx @@ -18,6 +18,10 @@ import TCensecInterface from "../../_interfaces/TCensecInterface"; import Header from "@/app/_components/structure/Header"; export default function TTBAndamentoServico() { + + // Controle de estado do botão + const [buttonIsLoading, setButtonIsLoading] = useState(false); + // Hooks para leitura e salvamento const { tCensec, fetchTCensec } = useTCensecReadHook(); const { saveTCensec } = useTCensecSaveHook(); @@ -61,9 +65,15 @@ export default function TTBAndamentoServico() { */ const handleSave = useCallback(async (formData: TCensecInterface) => { + // Coloca o botão em estado de loading + setButtonIsLoading(true); + // Aguarda salvar o registro await saveTCensec(formData); + // Remove o botão em estado de loading + setButtonIsLoading(false); + // Atualiza a lista de dados fetchTCensec(); @@ -114,7 +124,7 @@ export default function TTBAndamentoServico() { /** * Tela de loading enquanto carrega os dados */ - if (!tCensec) { + if (tCensec.length == 0) { return ; } @@ -157,6 +167,7 @@ export default function TTBAndamentoServico() { data={selectedAndamento} onClose={handleCloseForm} onSave={handleSave} + buttonIsLoading={buttonIsLoading} /> ); 4 diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/t_censec/TCensecForm.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/t_censec/TCensecForm.tsx index 93576d7..a5e58fd 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_components/t_censec/TCensecForm.tsx +++ b/src/app/(protected)/(cadastros)/cadastros/_components/t_censec/TCensecForm.tsx @@ -28,6 +28,8 @@ import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { TCensecSchema } from "../../_schemas/TCensecSchema"; +import { SituacoesEnum } from "@/enums/SituacoesEnum"; +import LoadingButton from "@/app/_components/loadingButton/LoadingButton"; type FormValues = z.infer; @@ -36,15 +38,16 @@ interface Props { data: FormValues | null; onClose: (item: null, isFormStatus: boolean) => void; onSave: (data: FormValues) => void; + buttonIsLoading: boolean; } -export default function TCensecForm({ isOpen, data, onClose, onSave }: Props) { +export default function TCensecForm({ isOpen, data, onClose, onSave, buttonIsLoading }: Props) { // Inicializa o react-hook-form com schema zod const form = useForm({ resolver: zodResolver(TCensecSchema), defaultValues: { descricao: "", - situacao: "A", + situacao: SituacoesEnum.A, censec_id: 0, }, }); @@ -112,9 +115,8 @@ export default function TCensecForm({ isOpen, data, onClose, onSave }: Props) { Cancelar - + {/* Botão de loading */} + {/* Campo oculto */} diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecDeleteData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecDeleteData.ts index f3f367a..0a0dffe 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecDeleteData.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecDeleteData.ts @@ -1,10 +1,17 @@ +import API from "@/services/api/Api"; import TCensecInterface from "../../_interfaces/TCensecInterface"; +import { Methods } from "@/services/api/enums/ApiMethodEnum"; +import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler"; -export default async function TCensecDeleteData(data: TCensecInterface) { +async function executeTCensecDeleteData(data: TCensecInterface) { - return Promise.resolve({ - message: 'Dados removidos', - status: 200 + const api = new API(); + + return await api.send({ + method: Methods.DELETE, + endpoint: `administrativo/t_censec/${data.censec_id}`, }); -} \ No newline at end of file +} + +export const TCensecDeleteData = withClientErrorHandler(executeTCensecDeleteData); \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecIndexData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecIndexData.ts index d1747cf..d8a5896 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecIndexData.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecIndexData.ts @@ -1,30 +1,16 @@ -export default async function TCensecIndexData() { +import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler"; +import API from "@/services/api/Api"; +import { Methods } from "@/services/api/enums/ApiMethodEnum"; - return Promise.resolve({ - message: 'Dados localizados', - status: 200, - data: [ - { - censec_id: 1.00, - descricao: 'CEP - Escritura e Procurações Diversas', - situacao: 'A' - }, - { - censec_id: 2.00, - descricao: 'CESDI - Escrituras Lei 11.441', - situacao: 'A' - }, - { - censec_id: 3.00, - descricao: 'RCTO - Testamentos', - situacao: 'A' - }, - { - censec_id: 9.00, - descricao: 'Não Possui', - situacao: 'A' - } - ] +async function executeTCensecIndexData() { + + const api = new API(); + + return await api.send({ + method: Methods.GET, + endpoint: `administrativo/t_censec/`, }); -} \ No newline at end of file +} + +export const TCensecIndexData = withClientErrorHandler(executeTCensecIndexData); \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecSaveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecSaveData.ts index eefb0f8..49804e5 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecSaveData.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_data/TCensec/TCensecSaveData.ts @@ -1,15 +1,20 @@ +import API from "@/services/api/Api"; +import { Methods } from "@/services/api/enums/ApiMethodEnum"; import TCensecInterface from "../../_interfaces/TCensecInterface"; +import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler"; -export default async function TCensecSaveData(data: TCensecInterface) { +async function executeTCensecSaveData(data: TCensecInterface) { - return Promise.resolve({ - message: 'Dados salvos', - status: 201, - data: { - censec_id: 9.00, - descricao: 'Não Possui', - situacao: 'A' - } + const isUpdate = Boolean(data.censec_id); + + const api = new API(); + + return await api.send({ + method: isUpdate ? Methods.PUT : Methods.POST, + endpoint: `administrativo/t_censec/${data.censec_id || ''}`, + body: data }); -} \ No newline at end of file +} + +export const TCensecSaveData = withClientErrorHandler(executeTCensecSaveData); \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecDeleteHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecDeleteHook.ts index 6542033..1ac288a 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecDeleteHook.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecDeleteHook.ts @@ -1,6 +1,6 @@ import { useResponse } from "@/app/_response/ResponseContext" import TCensecInterface from "../../_interfaces/TCensecInterface"; -import TCensecDeleteService from "../../_services/t_censec/TCensecDeleteService"; +import { TCensecDeleteService } from "../../_services/t_censec/TCensecDeleteService"; export const useTCensecDeleteHook = () => { diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecReadHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecReadHook.ts index b71e8c3..3fd4148 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecReadHook.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecReadHook.ts @@ -1,5 +1,5 @@ import { useResponse } from "@/app/_response/ResponseContext" -import TCensecIndexService from "../../_services/t_censec/TCensecIndexService"; +import { TCensecIndexService } from "../../_services/t_censec/TCensecIndexService"; import { useState } from "react"; import TCensecInterface from "../../_interfaces/TCensecInterface"; @@ -17,8 +17,6 @@ export const useTCensecReadHook = () => { setResponse(response); - return response - } return { tCensec, fetchTCensec } diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecSaveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecSaveHook.ts index a1412b7..7efbb56 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecSaveHook.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/t_censec/useTCensecSaveHook.ts @@ -3,7 +3,7 @@ import { useResponse } from "@/app/_response/ResponseContext" import { useState } from "react"; import TCensecInterface from "../../_interfaces/TCensecInterface"; -import TCensecSaveService from "../../_services/t_censec/TCensecSaveService"; +import { TCensecSaveService } from "../../_services/t_censec/TCensecSaveService"; export const useTCensecSaveHook = () => { diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecDeleteService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecDeleteService.ts index f70eea2..8a12cad 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecDeleteService.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecDeleteService.ts @@ -1,10 +1,13 @@ -import TCensecDeleteData from "../../_data/TCensec/TCensecDeleteData"; +import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler"; +import { TCensecDeleteData } from "../../_data/TCensec/TCensecDeleteData"; import TCensecInterface from "../../_interfaces/TCensecInterface"; -export default async function TCensecDeleteService(data: TCensecInterface) { +async function executeTCensecDeleteService(data: TCensecInterface) { const response = await TCensecDeleteData(data); return response; -} \ No newline at end of file +} + +export const TCensecDeleteService = withClientErrorHandler(executeTCensecDeleteService); \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecIndexService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecIndexService.ts index 1e37031..7909527 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecIndexService.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecIndexService.ts @@ -1,9 +1,12 @@ -import TCensecIndexData from "../../_data/TCensec/TCensecIndexData"; +import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler"; +import { TCensecIndexData } from "../../_data/TCensec/TCensecIndexData"; -export default async function TCensecIndexService() { +export default async function executeTCensecIndexService() { const response = await TCensecIndexData(); return response; -} \ No newline at end of file +} + +export const TCensecIndexService = withClientErrorHandler(executeTCensecIndexService); \ No newline at end of file diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecSaveService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecSaveService.ts index 0240cb8..f7d1739 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecSaveService.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_services/t_censec/TCensecSaveService.ts @@ -1,10 +1,13 @@ -import TCensecSaveData from "../../_data/TCensec/TCensecSaveData"; +import { withClientErrorHandler } from "@/actions/withClientErrorHandler/withClientErrorHandler"; +import { TCensecSaveData } from "../../_data/TCensec/TCensecSaveData"; import TCensecInterface from "../../_interfaces/TCensecInterface"; -export default async function TCensecSaveService(data: TCensecInterface) { +async function executeTCensecSaveService(data: TCensecInterface) { const response = await TCensecSaveData(data); return response; -} \ No newline at end of file +} + +export const TCensecSaveService = withClientErrorHandler(executeTCensecSaveService); \ No newline at end of file