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: () => api.get('/categorias/apresentar') }), fetchRules: () => handleRequest({ mockFn: () => simulateLatency(conciliacaoMock.rules), apiFn: () => api.get('/regras/apresentar') }), fetchStatement: () => handleRequest({ mockFn: () => simulateLatency(conciliacaoMock.statement), apiFn: () => api.get('/extrato/apresentar') }), fetchCaixinhas: () => handleRequest({ mockFn: () => simulateLatency(conciliacaoMock.caixinhas), apiFn: () => api.get('/caixinhas/apresentar') }), // ==================== 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/apresentar/${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/apresentar/${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/apresentar/${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 }) }), };