testes/src/services/conciliacaoService.js

158 lines
6.2 KiB
JavaScript

import api from './api';
import { conciliacaoMock } from './mocks/conciliacaoMock';
import { handleRequest, simulateLatency } from './serviceUtils';
export const conciliacaoService = {
// ==================== FETCH ====================
fetchCategories: () => handleRequest({
mockFn: () => simulateLatency(conciliacaoMock.categories),
apiFn: async () => {
console.log('[conciliacaoService] Chamando GET /categorias/apresentar');
const response = await api.get('/categorias/apresentar');
console.log('[conciliacaoService] Resposta categorias:', response);
return response;
}
}),
fetchRules: () => handleRequest({
mockFn: () => simulateLatency(conciliacaoMock.rules),
apiFn: async () => {
console.log('[conciliacaoService] Chamando GET /regras/apresentar');
const response = await api.get('/regras/apresentar');
console.log('[conciliacaoService] Resposta regras:', response);
return response;
}
}),
fetchStatement: () => handleRequest({
mockFn: () => simulateLatency(conciliacaoMock.statement),
apiFn: async () => {
console.log('[conciliacaoService] Chamando GET /extrato/apresentar');
const response = await api.get('/extrato/apresentar');
console.log('[conciliacaoService] Resposta extrato:', response);
return response;
}
}),
fetchCaixinhas: () => handleRequest({
mockFn: () => simulateLatency(conciliacaoMock.caixinhas),
apiFn: async () => {
console.log('[conciliacaoService] Chamando GET /caixinhas/apresentar');
const response = await api.get('/caixinhas/apresentar');
console.log('[conciliacaoService] Resposta caixinhas:', response);
return response;
}
}),
// ==================== CATEGORIAS ====================
createCategory: (payload) => handleRequest({
mockFn: () => simulateLatency({ ...payload, idcategoria: String(Date.now()) }),
apiFn: () => api.post('/categorias/create', payload)
}),
updateCategory: (payload) => handleRequest({
mockFn: () => simulateLatency({ success: true, ...payload }),
apiFn: () => api.post('/categorias/edit', payload)
}),
deleteCategory: (id) => handleRequest({
mockFn: () => simulateLatency({ success: true }),
apiFn: () => api.delete('/categorias/delete', {
data: { idcategoria: id }
})
}),
// ==================== CAIXINHAS ====================
createCaixinha: (payload) => handleRequest({
mockFn: () => simulateLatency({ ...payload, idcaixinhas_financeiro: String(Date.now()) }),
apiFn: () => api.post('/caixinha/create', payload)
}),
updateCaixinha: (payload) => handleRequest({
mockFn: () => simulateLatency({ success: true, ...payload }),
apiFn: () => api.post('/caixinha/edit', payload)
}),
deleteCaixinha: (id) => handleRequest({
mockFn: () => simulateLatency({ success: true }),
apiFn: () => api.delete('/caixinhas/delete', {
data: { idcaixinhas_financeiro: id }
})
}),
// ==================== REGRAS ====================
createRule: (payload) => handleRequest({
mockFn: () => simulateLatency({ ...payload, id: String(Date.now()) }),
apiFn: () => api.post('/regra/create', payload)
}),
updateRule: (payload) => handleRequest({
mockFn: () => simulateLatency({ success: true, ...payload }),
apiFn: () => api.post('/regras/edit', payload)
}),
deleteRule: (id) => handleRequest({
mockFn: () => simulateLatency({ success: true }),
apiFn: () => api.delete('/regras/delete', {
data: { idregras_financeiro: id }
})
}),
// ==================== EXTRATO ====================
updateTransactionRule: (id, payload) => handleRequest({
mockFn: () => simulateLatency({ success: true }),
// Payload contém idextrato, regra, categoria, beneficiario_pagador, caixinha
// A rota principal de aplicação de regra parece ser o update de regra ou uma combinação
// Baseado na engine, ela chama updates individuais, mas o updateTransactionRule é chamado com payload completo
// Vou criar um método composto no hook, mas aqui preciso manter a consistência da chamada
// Como a engine chama updateTransactionRule passando o payload completo, vou assumir POST manual
// Mas o diff do usuário mudou para /extrato/apresentar/regra/${id} que deu 404
// O código de referência diz que usa /regra_categoria/edit, /beneficiario_pagador/inserir, etc.
// Vou manter como endpoint de regra específico se existir, senão usarei o composto no hook
apiFn: () => api.put(`/extrato/apresentar/regra/${id}`, payload)
}),
importOFX: (file) => handleRequest({
mockFn: () => simulateLatency({ success: true, message: 'Mocked OFX Import' }),
apiFn: () => {
const formData = new FormData();
formData.append('file', file);
return api.post('/financeiro/importar-ofx', formData, {
headers: { 'Content-Type': 'multipart/form-data' },
});
}
}),
updateTransactionCategory: (id, categoryId) => handleRequest({
mockFn: () => simulateLatency({ success: true }),
apiFn: () => api.post('/regra_categoria/edit', { idextrato: id, categoria: categoryId })
}),
updateTransactionBox: (id, boxId) => handleRequest({
mockFn: () => simulateLatency({ success: true }),
apiFn: () => api.put('/caixinha_extrato/inserir', { idextrato: id, caixinha: boxId })
}),
updateTransactionBeneficiary: (id, beneficiary) => handleRequest({
mockFn: () => simulateLatency({ success: true }),
apiFn: () => api.put('/beneficiario_pagador/inserir', { idextrato: id, beneficiario_pagador: beneficiary })
}),
updateTransactionTag: (id, tag) => handleRequest({
mockFn: () => simulateLatency({ success: true }),
apiFn: () => api.post('/tag/inserir', { idextrato: id, tag: tag })
}),
// ==================== NOVAS ROTAS ====================
fetchRulesByCategory: (categoryId) => handleRequest({
mockFn: () => simulateLatency(conciliacaoMock.rules.filter(r => String(r.categoria) === String(categoryId))),
apiFn: async () => {
console.log(`[conciliacaoService] Chamando GET /regras_financeiro/por_categoria?categoria=${categoryId}`);
const response = await api.get('/regras_financeiro/por_categoria', {
params: { categoria: categoryId }
});
return response;
}
})
};