diff --git a/src/app/(protected)/(cadastros)/cadastros/(g_cidade)/cidades/page.tsx b/src/app/(protected)/(cadastros)/cadastros/(g_cidade)/cidades/page.tsx index 930b565..cd890e7 100644 --- a/src/app/(protected)/(cadastros)/cadastros/(g_cidade)/cidades/page.tsx +++ b/src/app/(protected)/(cadastros)/cadastros/(g_cidade)/cidades/page.tsx @@ -48,21 +48,22 @@ export default function GCidadePage() { setIsFormOpen(true); }, []); - /** - * Fecha o formulário e limpa o andamento selecionado - */ - const handleCloseForm = useCallback(() => { - setSelectedCidade(null); - setIsFormOpen(false); - }, []); + /** + * Fecha o formulário e limpa o andamento selecionado + */ + const handleCloseForm = useCallback((_: null, __: boolean) => { + setSelectedCidade(null); + setIsFormOpen(false); + }, []); - /** - * Salva os dados do formulário - */ - const handleSave = useCallback( - async (formData: GCidadeInterface) => { - // Aguarda salvar o registro - await saveGCidade(formData); + /** + * Salva os dados do formulário + */ + const handleSave = useCallback(async (formData: GCidadeInterface) => { + + + // Aguarda salvar o registro + await saveGCidade(formData); // Atualiza a lista de dados fetchGCidade(); diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/g_cidade/GCidadeForm.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/g_cidade/GCidadeForm.tsx index 5efad47..37142d0 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_components/g_cidade/GCidadeForm.tsx +++ b/src/app/(protected)/(cadastros)/cadastros/_components/g_cidade/GCidadeForm.tsx @@ -67,9 +67,29 @@ export default function GCidadeForm({ isOpen, data, onClose, onSave }: Props) { // Quando recebe dados para edição, atualiza os valores do formulário useEffect(() => { - // Se existir dados, reseta o formulário com os dados informados - if (data) form.reset(data); + if (data) { + // Se for edição, carrega os dados recebidos + form.reset({ + cidade_id: data.cidade_id, + uf: data.uf ?? '', + cidade_nome: data.cidade_nome ?? '', + codigo_ibge: data.codigo_ibge ?? '', + codigo_gyn: data.codigo_gyn ?? '', + }); + } else { + // Se for novo cadastro, limpa o formulário com valores padrão + form.reset({ + cidade_id: 0, + uf: '', + cidade_nome: '', + codigo_ibge: '', + codigo_gyn: '', + }); + } + + // Carrega todos os estados + // brasileiros para o formulário const loadData = async () => { // Aguarda a busca terminar await fetchGUf(); @@ -77,6 +97,7 @@ export default function GCidadeForm({ isOpen, data, onClose, onSave }: Props) { // Dispara a função loadData(); + }, [data, form]); return ( @@ -105,7 +126,7 @@ export default function GCidadeForm({ isOpen, data, onClose, onSave }: Props) { Descrição - + @@ -120,7 +141,7 @@ export default function GCidadeForm({ isOpen, data, onClose, onSave }: Props) { Código IBGE - + @@ -134,11 +155,10 @@ export default function GCidadeForm({ isOpen, data, onClose, onSave }: Props) { render={({ field }) => ( UF - field.onChange(val)} + > diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GCidade/GCidadeIndexData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GCidade/GCidadeIndexData.ts index 26a5afb..8453416 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_data/GCidade/GCidadeIndexData.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GCidade/GCidadeIndexData.ts @@ -1,81 +1,24 @@ +// Importa o serviço de API que será utilizado para realizar requisições HTTP import API from '@/services/api/Api'; + +// Importa o enum que contém os métodos HTTP disponíveis (GET, POST, PUT, DELETE) import { Methods } from '@/services/api/enums/ApiMethodEnum'; -export default async function GCidadeIndexData() { - return Promise.resolve({ - status: 200, - message: 'Dados localizados', - data: [ - { - cidade_id: 1, - uf: 'AC', - cidade_nome: 'Acrelândia', - codigo_ibge: null, - codigo_gyn: null, - }, - { - cidade_id: 2, - uf: 'AC', - cidade_nome: 'Assis Brasil', - codigo_ibge: null, - codigo_gyn: null, - }, - { - cidade_id: 3, - uf: 'AC', - cidade_nome: 'Brasiléia', - codigo_ibge: null, - codigo_gyn: null, - }, - { - cidade_id: 4, - uf: 'AC', - cidade_nome: 'Bujari', - codigo_ibge: null, - codigo_gyn: null, - }, - { - cidade_id: 5, - uf: 'AC', - cidade_nome: 'Capixaba', - codigo_ibge: null, - codigo_gyn: null, - }, - { - cidade_id: 6, - uf: 'AC', - cidade_nome: 'Cruzeiro do Sul', - codigo_ibge: null, - codigo_gyn: null, - }, - { - cidade_id: 7, - uf: 'AC', - cidade_nome: 'Epitaciolândia', - codigo_ibge: null, - codigo_gyn: null, - }, - { - cidade_id: 8, - uf: 'AC', - cidade_nome: 'Feijó', - codigo_ibge: null, - codigo_gyn: null, - }, - { - cidade_id: 9, - uf: 'AC', - cidade_nome: 'Jordão', - codigo_ibge: null, - codigo_gyn: null, - }, - { - cidade_id: 10, - uf: 'AC', - cidade_nome: 'Mâncio Lima', - codigo_ibge: null, - codigo_gyn: null, - }, - ], +// Importa função que encapsula chamadas assíncronas e trata erros automaticamente +import { withClientErrorHandler } from '@/actions/withClientErrorHandler/withClientErrorHandler'; + +// Função assíncrona que implementa a lógica de salvar (criar/atualizar) uma cidade +async function executeGcidadeIndexData() { + + // 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: Methods.GET, // GET listar todos os itens + endpoint: `administrativo/g_cidade/` // endpoint dinâmico }); } + +// Exporta a função de salvar cidade já encapsulada com tratamento de erros +export const GCidadeIndexData = withClientErrorHandler(executeGcidadeIndexData); diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GCidade/GCidadeRemoveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GCidade/GCidadeRemoveData.ts index 880e75e..cd67260 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_data/GCidade/GCidadeRemoveData.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GCidade/GCidadeRemoveData.ts @@ -1,11 +1,27 @@ +// Importa o serviço de API que será utilizado para realizar requisições HTTP import API from '@/services/api/Api'; + +// Importa o enum que contém os métodos HTTP disponíveis (GET, POST, PUT, DELETE) import { Methods } from '@/services/api/enums/ApiMethodEnum'; + +// Importa a interface tipada que define a estrutura dos dados de uma cidade import GCidadeInterface from '../../_interfaces/GCidadeInterface'; -export default async function GCidadeRemoveData(data: GCidadeInterface) { - return Promise.resolve({ - status: 200, - message: 'Dados removidos', - data: null, +// Importa função que encapsula chamadas assíncronas e trata erros automaticamente +import { withClientErrorHandler } from '@/actions/withClientErrorHandler/withClientErrorHandler'; + +// Função assíncrona que implementa a lógica de salvar (criar/atualizar) uma cidade +async function executeGcidadeRemoveData(data: GCidadeInterface) { + + // 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: Methods.DELETE, // Verbo DELETE para exclusão + endpoint: `administrativo/g_cidade/${data.cidade_id}`, // endpoint dinâmico }); } + +// Exporta a função de salvar cidade já encapsulada com tratamento de erros +export const GCidadeRemoveData = withClientErrorHandler(executeGcidadeRemoveData); diff --git a/src/app/(protected)/(cadastros)/cadastros/_data/GCidade/GCidadeSaveData.ts b/src/app/(protected)/(cadastros)/cadastros/_data/GCidade/GCidadeSaveData.ts index 827819d..d1f2433 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_data/GCidade/GCidadeSaveData.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_data/GCidade/GCidadeSaveData.ts @@ -12,6 +12,7 @@ import { withClientErrorHandler } from '@/actions/withClientErrorHandler/withCli // Função assíncrona que implementa a lógica de salvar (criar/atualizar) uma cidade async function executeGcidadeSaveData(data: GCidadeInterface) { + // Verifica se existe ID da cidade para decidir se é atualização (PUT) ou criação (POST) const isUpdate = Boolean(data.cidade_id); diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_cidade/useGCidadeRemoveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_cidade/useGCidadeRemoveHook.ts index 8b0fddd..74501c8 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_cidade/useGCidadeRemoveHook.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_cidade/useGCidadeRemoveHook.ts @@ -1,6 +1,6 @@ -import { useResponse } from '@/app/_response/ResponseContext'; // Contexto global para gerenciar respostas da API -import GCidadeInterface from '../../_interfaces/GCidadeInterface'; // Interface tipada da cidade -import GCidadeRemoveData from '../../_data/GCidade/GCidadeRemoveData'; // Função que remove a cidade via API +import { useResponse } from "@/app/_response/ResponseContext"; // Contexto global para gerenciar respostas da API +import GCidadeInterface from "../../_interfaces/GCidadeInterface"; // Interface tipada da cidade +import { GCidadeRemoveData } from "../../_data/GCidade/GCidadeRemoveData"; // Função que remove a cidade via API // Hook customizado para remoção de cidades export const useGCidadeRemoveHook = () => { diff --git a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_cidade/useGCidadeSaveHook.ts b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_cidade/useGCidadeSaveHook.ts index d8555c4..9837722 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_hooks/g_cidade/useGCidadeSaveHook.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_hooks/g_cidade/useGCidadeSaveHook.ts @@ -8,29 +8,18 @@ export const useGCidadeSaveHook = () => { const [gCidade, setGCidade] = useState(null); // controla se o formulário está aberto ou fechado - const [isOpen, setIsOpen] = useState(false); + // const [isOpen, setIsOpen] = useState(false); const saveGCidade = async (data: GCidadeInterface) => { const response = await GCidadeSaveService(data); // Guardar os dados localizados setGCidade(response.data); - // Guardar os dados localizados - setGCidade(response.data); - - console.log(response); // Manda a resposta para o verificador de resposta setResponse(response); - // Fecha o formulário automaticamente após salvar - setIsOpen(false); - - console.log(response); - - // Manda a resposta para o verificador de resposta - setResponse(response); - }; + } return { gCidade, saveGCidade }; }; diff --git a/src/app/(protected)/(cadastros)/cadastros/_services/g_cidade/GCidadeIndexService.ts b/src/app/(protected)/(cadastros)/cadastros/_services/g_cidade/GCidadeIndexService.ts index 525b6cc..2374ecc 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_services/g_cidade/GCidadeIndexService.ts +++ b/src/app/(protected)/(cadastros)/cadastros/_services/g_cidade/GCidadeIndexService.ts @@ -1,6 +1,6 @@ import { withClientErrorHandler } from '@/actions/withClientErrorHandler/withClientErrorHandler'; // Função que envolve qualquer ação assíncrona para capturar e tratar erros do cliente -import GCidadeIndexData from '../../_data/GCidade/GCidadeIndexData'; +import { GCidadeIndexData } from '../../_data/GCidade/GCidadeIndexData'; // Função que retorna os dados da lista de cidades (chamada à API ou mock) // Função assíncrona que executa a chamada para buscar os dados de cidades diff --git a/src/app/(protected)/(cadastros)/cadastros/pessoas/complementos/page.tsx b/src/app/(protected)/(cadastros)/cadastros/pessoas/complementos/page.tsx index 5b30175..15f662f 100644 --- a/src/app/(protected)/(cadastros)/cadastros/pessoas/complementos/page.tsx +++ b/src/app/(protected)/(cadastros)/cadastros/pessoas/complementos/page.tsx @@ -50,8 +50,8 @@ export default function CadastrosPage() {
{items.map((item, key) => ( - - + + diff --git a/src/app/_response/response.tsx b/src/app/_response/response.tsx index 367f60d..d3bd34e 100644 --- a/src/app/_response/response.tsx +++ b/src/app/_response/response.tsx @@ -12,6 +12,8 @@ export default function Response() { useEffect(() => { switch (Number(response?.status)) { + + case 201: toast.success(response.message); break;