monitoring-app/src/packages/administrativo/data/Client/ClientSaveData.ts

42 lines
2 KiB
TypeScript

'use server'
// Define que este módulo será executado no lado do servidor (Server Action do Next.js)
import { Methods } from '@/shared/services/api/enums/ApiMethodEnum';
// Importa o enumerador que define os métodos HTTP disponíveis (GET, POST, PUT, DELETE)
import API from '@/shared/services/api/Api';
// Importa a classe responsável por realizar as chamadas HTTP centralizadas da aplicação
import { withClientErrorHandler } from '@/withClientErrorHandler/withClientErrorHandler';
// Importa o decorador que adiciona tratamento global de erros à função principal
import { ClientInterface } from '../../interfaces/Client/ClientInterface';
// Importa a tipagem do objeto de cliente, garantindo consistência nos dados enviados
// Função principal responsável por salvar (criar ou atualizar) os dados de um cliente
async function executeClientSaveData(form: ClientInterface) {
// Verifica se existe um `client_id`; se sim, trata-se de uma atualização (PUT), caso contrário, é um novo cadastro (POST)
const isUpdate = Boolean(form.client_id);
// Cria uma nova instância da classe API para enviar a requisição
const api = new API();
// Envia a requisição para o endpoint responsável por salvar os dados do cliente
const response = await api.send({
// Define o método HTTP dinamicamente com base no tipo de operação (POST ou PUT)
'method': isUpdate ? Methods.PUT : Methods.POST,
// Define o endpoint, incluindo o `client_id` se for atualização
'endpoint': `administrativo/client/${form.client_id || ''}`,
// Corpo da requisição contendo os dados do formulário
'body': form
});
// Retorna a resposta da API (pode conter status, dados ou mensagens)
return response;
}
// Exporta a função encapsulada com o tratador global de erros
export const ClientSaveData = withClientErrorHandler(executeClientSaveData);
// `withClientErrorHandler` assegura que qualquer erro durante a execução será capturado e tratado de forma padronizada