financeiro/financeiro-web/src/features/clientes/services/clientesService.ts

68 lines
1.6 KiB
TypeScript

import { api } from '../../../services/api';
import type {
ApiResponse,
AtualizarClienteRequest,
Cliente,
ClientesListResponse,
CriarClienteRequest,
} from '../types/clienteTypes';
export type OrderDirection = 'ASC' | 'DESC';
export type ListarClientesParams = {
limite?: number;
offset?: number;
page?: number;
busca?: string;
pessoafisica?: string;
habilitado?: number | '';
cidade?: string;
estado?: string;
orderBy?: string;
orderDirection?: OrderDirection;
};
export async function listarClientes(
params?: ListarClientesParams
): Promise<ClientesListResponse> {
const response = await api.get<ClientesListResponse>('/clientes', {
params,
});
return response.data;
}
export async function buscarClientePorId(id: number): Promise<Cliente> {
const response = await api.get<ApiResponse<Cliente>>(`/clientes/${id}`);
return response.data.data;
}
export async function criarCliente(
data: CriarClienteRequest
): Promise<Cliente> {
const response = await api.post<ApiResponse<Cliente>>('/clientes', data);
return response.data.data;
}
export async function atualizarCliente(
id: number,
data: AtualizarClienteRequest
): Promise<Cliente> {
const response = await api.put<ApiResponse<Cliente>>(`/clientes/${id}`, data);
return response.data.data;
}
export async function alterarHabilitadoCliente(
id: number,
habilitado: number
): Promise<Cliente> {
const response = await api.patch<ApiResponse<Cliente>>(`/clientes/${id}/habilitado`, {
habilitado,
});
return response.data.data;
}
export async function deletarCliente(id: number): Promise<void> {
await api.delete(`/clientes/${id}`);
}