Refactor despesasService.ts
Refactor `despesasService.ts` into smaller, modular files to improve code organization and maintainability.
This commit is contained in:
parent
e58db1bb1a
commit
70c125715a
91
src/services/cartao/despesas/despesasCreateService.ts
Normal file
91
src/services/cartao/despesas/despesasCreateService.ts
Normal file
@ -0,0 +1,91 @@
|
||||
|
||||
import { supabase } from "@/integrations/supabase/client";
|
||||
import { DespesaCartao } from "@/types/cartaoTypes";
|
||||
|
||||
/**
|
||||
* Creates a new expense for a credit card
|
||||
* @param cartao_id Card ID (kept for backwards compatibility)
|
||||
* @param cartao_codigo Card code
|
||||
* @param valor Expense value
|
||||
* @param data_despesa Expense date
|
||||
* @param descricao Expense description
|
||||
* @returns Created expense or null if failed
|
||||
*/
|
||||
export async function criarDespesa(
|
||||
cartao_id: string,
|
||||
cartao_codigo: string,
|
||||
valor: number,
|
||||
data_despesa: string,
|
||||
descricao: string
|
||||
): Promise<DespesaCartao | null> {
|
||||
// Obter o email do usuário do localStorage
|
||||
const userEmail = localStorage.getItem('userEmail');
|
||||
// Obter o ID do usuário do localStorage (mantido por compatibilidade)
|
||||
const userId = localStorage.getItem('userId');
|
||||
|
||||
if (!userEmail || !userId) {
|
||||
console.error('Dados do usuário não encontrados no localStorage');
|
||||
return null;
|
||||
}
|
||||
|
||||
// Normalizar o email (minúsculo e sem espaços)
|
||||
const normalizedEmail = userEmail.trim().toLowerCase();
|
||||
|
||||
try {
|
||||
// Obter o nome do cartão diretamente da tabela cartoes_credito
|
||||
const { data: cartaoData, error: cartaoError } = await supabase
|
||||
.from('cartoes_credito')
|
||||
.select('nome')
|
||||
.eq('id', cartao_id)
|
||||
.single();
|
||||
|
||||
if (cartaoError || !cartaoData) {
|
||||
console.error('Erro ao obter nome do cartão:', cartaoError);
|
||||
return null;
|
||||
}
|
||||
|
||||
const nomeCartao = cartaoData.nome;
|
||||
|
||||
console.log('Tentando criar despesa de cartão com os dados:', {
|
||||
login: normalizedEmail,
|
||||
nome: nomeCartao,
|
||||
valor,
|
||||
data_despesa,
|
||||
descricao
|
||||
});
|
||||
|
||||
// Insert new expense with login and nome (but not cartao_id)
|
||||
const { data, error } = await supabase
|
||||
.from('despesas_cartao')
|
||||
.insert([{
|
||||
login: normalizedEmail,
|
||||
nome: nomeCartao,
|
||||
valor: valor,
|
||||
data_despesa: data_despesa,
|
||||
descricao: descricao,
|
||||
cartao_id: cartao_id // Keep for now to avoid breaking existing functionality
|
||||
}])
|
||||
.select();
|
||||
|
||||
if (error) {
|
||||
console.error('Erro ao criar despesa:', error);
|
||||
throw new Error('Não foi possível adicionar a despesa ao cartão');
|
||||
}
|
||||
|
||||
if (!data || data.length === 0) {
|
||||
console.error('Nenhum dado retornado ao criar despesa');
|
||||
return null;
|
||||
}
|
||||
|
||||
// Add cartao_codigo to result
|
||||
const despesaCompleta = {
|
||||
...data[0],
|
||||
cartao_codigo: cartao_codigo
|
||||
} as DespesaCartao;
|
||||
|
||||
return despesaCompleta;
|
||||
} catch (error) {
|
||||
console.error('Erro ao criar despesa:', error);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -1,12 +1,11 @@
|
||||
|
||||
import { supabase } from "@/integrations/supabase/client";
|
||||
import { DespesaCartao } from "@/types/cartaoTypes";
|
||||
import { getCartao } from "./cartoesService";
|
||||
import { getCartao } from "../cartoesService";
|
||||
|
||||
/**
|
||||
* Fetches expenses for a specific credit card based on login and nome
|
||||
* @param cartaoId Card ID (still used for type compatibility)
|
||||
* @param cardName Card name to match with expenses
|
||||
* @returns Array of card expenses
|
||||
*/
|
||||
export async function getDespesasCartao(cartaoId: string): Promise<DespesaCartao[]> {
|
||||
@ -59,94 +58,6 @@ export async function getDespesasCartao(cartaoId: string): Promise<DespesaCartao
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new expense for a credit card
|
||||
* @param cartao_id Card ID (kept for backwards compatibility)
|
||||
* @param cartao_codigo Card code
|
||||
* @param valor Expense value
|
||||
* @param data_despesa Expense date
|
||||
* @param descricao Expense description
|
||||
* @returns Created expense or null if failed
|
||||
*/
|
||||
export async function criarDespesa(
|
||||
cartao_id: string,
|
||||
cartao_codigo: string,
|
||||
valor: number,
|
||||
data_despesa: string,
|
||||
descricao: string
|
||||
): Promise<DespesaCartao | null> {
|
||||
// Obter o email do usuário do localStorage
|
||||
const userEmail = localStorage.getItem('userEmail');
|
||||
// Obter o ID do usuário do localStorage (mantido por compatibilidade)
|
||||
const userId = localStorage.getItem('userId');
|
||||
|
||||
if (!userEmail || !userId) {
|
||||
console.error('Dados do usuário não encontrados no localStorage');
|
||||
return null;
|
||||
}
|
||||
|
||||
// Normalizar o email (minúsculo e sem espaços)
|
||||
const normalizedEmail = userEmail.trim().toLowerCase();
|
||||
|
||||
try {
|
||||
// Obter o nome do cartão diretamente da tabela cartoes_credito
|
||||
const { data: cartaoData, error: cartaoError } = await supabase
|
||||
.from('cartoes_credito')
|
||||
.select('nome')
|
||||
.eq('id', cartao_id)
|
||||
.single();
|
||||
|
||||
if (cartaoError || !cartaoData) {
|
||||
console.error('Erro ao obter nome do cartão:', cartaoError);
|
||||
return null;
|
||||
}
|
||||
|
||||
const nomeCartao = cartaoData.nome;
|
||||
|
||||
console.log('Tentando criar despesa de cartão com os dados:', {
|
||||
login: normalizedEmail,
|
||||
nome: nomeCartao,
|
||||
valor,
|
||||
data_despesa,
|
||||
descricao
|
||||
});
|
||||
|
||||
// Insert new expense with login and nome (but not cartao_id)
|
||||
const { data, error } = await supabase
|
||||
.from('despesas_cartao')
|
||||
.insert([{
|
||||
login: normalizedEmail,
|
||||
nome: nomeCartao,
|
||||
valor: valor,
|
||||
data_despesa: data_despesa,
|
||||
descricao: descricao,
|
||||
cartao_id: cartao_id // Keep for now to avoid breaking existing functionality
|
||||
}])
|
||||
.select();
|
||||
|
||||
if (error) {
|
||||
console.error('Erro ao criar despesa:', error);
|
||||
throw new Error('Não foi possível adicionar a despesa ao cartão');
|
||||
}
|
||||
|
||||
if (!data || data.length === 0) {
|
||||
console.error('Nenhum dado retornado ao criar despesa');
|
||||
return null;
|
||||
}
|
||||
|
||||
// Add cartao_codigo to result
|
||||
const despesaCompleta = {
|
||||
...data[0],
|
||||
cartao_codigo: cartao_codigo
|
||||
} as DespesaCartao;
|
||||
|
||||
return despesaCompleta;
|
||||
} catch (error) {
|
||||
console.error('Erro ao criar despesa:', error);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the total expenses for a credit card based on login and card name
|
||||
* @param cartaoId Card ID
|
||||
8
src/services/cartao/despesas/index.ts
Normal file
8
src/services/cartao/despesas/index.ts
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
/**
|
||||
* Exports all despesas-related functions from separate modules.
|
||||
* This maintains the existing API surface for backward compatibility.
|
||||
*/
|
||||
|
||||
export { getDespesasCartao, getTotalDespesasCartao } from './despesasFetchService';
|
||||
export { criarDespesa } from './despesasCreateService';
|
||||
@ -10,12 +10,12 @@ export {
|
||||
getCartao
|
||||
} from './cartao/cartoesService';
|
||||
|
||||
// Re-export all functions from despesasService
|
||||
// Re-export all functions from despesas services
|
||||
export {
|
||||
getDespesasCartao,
|
||||
criarDespesa,
|
||||
getTotalDespesasCartao
|
||||
} from './cartao/despesasService';
|
||||
} from './cartao/despesas';
|
||||
|
||||
// Re-export from utilities
|
||||
export { gerarCartaoCodigo } from './cartao/cartaoCodigoUtils';
|
||||
|
||||
Loading…
Reference in New Issue
Block a user