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 { supabase } from "@/integrations/supabase/client";
|
||||||
import { DespesaCartao } from "@/types/cartaoTypes";
|
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
|
* Fetches expenses for a specific credit card based on login and nome
|
||||||
* @param cartaoId Card ID (still used for type compatibility)
|
* @param cartaoId Card ID (still used for type compatibility)
|
||||||
* @param cardName Card name to match with expenses
|
|
||||||
* @returns Array of card expenses
|
* @returns Array of card expenses
|
||||||
*/
|
*/
|
||||||
export async function getDespesasCartao(cartaoId: string): Promise<DespesaCartao[]> {
|
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
|
* Calculates the total expenses for a credit card based on login and card name
|
||||||
* @param cartaoId Card ID
|
* @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
|
getCartao
|
||||||
} from './cartao/cartoesService';
|
} from './cartao/cartoesService';
|
||||||
|
|
||||||
// Re-export all functions from despesasService
|
// Re-export all functions from despesas services
|
||||||
export {
|
export {
|
||||||
getDespesasCartao,
|
getDespesasCartao,
|
||||||
criarDespesa,
|
criarDespesa,
|
||||||
getTotalDespesasCartao
|
getTotalDespesasCartao
|
||||||
} from './cartao/despesasService';
|
} from './cartao/despesas';
|
||||||
|
|
||||||
// Re-export from utilities
|
// Re-export from utilities
|
||||||
export { gerarCartaoCodigo } from './cartao/cartaoCodigoUtils';
|
export { gerarCartaoCodigo } from './cartao/cartaoCodigoUtils';
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user