'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