const pool = require('../../../database/mysql'); function extrairIdUsuarioLogado(usuario) { return ( usuario?.idusuarios || usuario?.idusuario || usuario?.id || usuario?.userId || null ); } async function listarBancos() { const [rows] = await pool.query( ` SELECT b.idbancos AS id, b.idbancos, b.descricao AS banco_descricao, u.idusuarios, u.nome AS usuario_nome, CONCAT( COALESCE(u.nome, 'Usuário sem nome'), ' - ', b.descricao ) AS descricao, b.saldo, b.debito, b.investimento, b.dia_vencimento FROM bancos b LEFT JOIN usuarios u ON u.idusuarios = b.idusuarios WHERE b.habilitado = 1 ORDER BY COALESCE(u.nome, 'Usuário sem nome') ASC, b.descricao ASC ` ); return rows; } async function listarMeusBancos(usuarioLogado) { const idUsuario = extrairIdUsuarioLogado(usuarioLogado); if (!idUsuario) { const error = new Error('Usuário logado não identificado.'); error.statusCode = 401; throw error; } const [rows] = await pool.query( ` SELECT b.idbancos AS id, b.idbancos, b.descricao AS banco_descricao, b.descricao, b.saldo, b.debito, b.investimento, b.dia_vencimento FROM bancos b WHERE b.habilitado = 1 AND b.idusuarios = ? ORDER BY b.descricao ASC `, [idUsuario] ); return rows; } async function listarCentrosCusto() { const [rows] = await pool.query( ` SELECT idcentrodecustos AS id, descricao, limite, simular, investimento FROM centrodecustos WHERE habilitado = 1 ORDER BY descricao ASC ` ); return rows; } async function listarClientes() { const [rows] = await pool.query( ` SELECT idclientes AS id, cpf_cnpj, nome, celular, email, cidade, estado, pessoafisica FROM clientes WHERE habilitado = 1 ORDER BY nome ASC ` ); return rows; } module.exports = { listarBancos, listarMeusBancos, listarCentrosCusto, listarClientes, };