42 lines
2 KiB
TypeScript
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
|