financeiro/financeiro-api/src/modules/referencias/services/referencias.service.js

120 lines
2.2 KiB
JavaScript

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,
};