const { BuscaFatura } = require("../Modules/saperx/circuitos"); const IxcFactory = require("../core/ixc/Ixc.factory"); const SaperxFactory = require("../core/saperx/Saperx.factory"); const { Cdr } = require("../models/Cdr.model"); const { Ramais } = require("../models/Ramais.model"); module.exports = { Token: async function (req, res) { const { month_bill, id_sip } = req.body; await SaperxFactory.RefreshToken(); res.json({ ok: "ok" }); }, BuscaPorIDs: async function (req, res) { var { busca } = req.body; // Use .query() para começar uma nova consulta const query = Ramais.query() .withGraphFetched("did") .withGraphFetched("ramais_franquias") .withGraphFetched("plano_franquia"); // Use .orWhere para adicionar as condições "like" nas colunas id, circuito e numero da tabela did query.joinRelated("did").whereIn("ramais.id", busca); // Execute a consulta e envie a resposta quando terminar try { const ramais = await query; res.json({ ramais }); } catch (error) { console.error(error); res.status(500).json({ error: "Ocorreu um erro ao buscar os ramais." }); } }, BuscaCircuitos: async function (req, res) { var { busca } = req.body; // Use .query() para começar uma nova consulta const query = Ramais.query() .withGraphFetched("did") .withGraphFetched("ramais_franquias"); // Use .orWhere para adicionar as condições "like" nas colunas id, circuito e numero da tabela did query .joinRelated("did") .orWhere("ramais.id", "like", `%${busca}%`) .orWhere("ramais.nome", "like", `%${busca}%`) .orWhere("ramais.ramal", "like", `%${busca}%`) .orWhere("did.numero", "like", `%${busca}%`).groupBy('ramais.id').limit(100); // Execute a consulta e envie a resposta quando terminar try { const ramais = await query; res.json({ ramais }); } catch (error) { console.error(error); res.status(500).json({ error: "Ocorreu um erro ao buscar os ramais." }); } }, VerCircuitos: async function (req, res) { var { busca } = req.body; // Use .query() para começar uma nova consulta const query = Ramais.query() .withGraphFetched("did") .withGraphFetched("ramais_franquias"); // Use .orWhere para adicionar as condições "like" nas colunas id, circuito e numero da tabela did query .joinRelated("did") .orWhere("ramais.id", busca) .orWhere("ramais.nome", busca) .orWhere("ramais.ramal", busca) .orWhere("did.numero", busca); // Execute a consulta e envie a resposta quando terminar try { const ramais = await query; res.json({ ramais }); } catch (error) { console.error(error); res.status(500).json({ error: "Ocorreu um erro ao buscar os ramais." }); } }, Circuitos: async function (req, res) { try { let { IdCliente } = req.body; if (!IdCliente) { return res.status(401).send({ msg: "Informacoes faltando!" }); } var dados = await IxcFactory.BuscaTelefonia(IdCliente); var { id_sip } = dados.circuitos[2]; var dados = await SaperxFactory.Buscacircuitos(id_sip); res.json({ dados }); } catch (error) { console.log(error); return res.status(); } }, Fatura: async function (req, res) { const { month_bill, id_sip } = req.body; var dados = await BuscaFatura(id_sip, month_bill); res.json({ ok: "ok", dados: dados }); }, Cdr: async function (req, res) { const { month_bill, id_sip } = req.body; var dados = Cdr.query() .where("channel","like","%8009007%") //.where("sentido", "S") .orderBy("id", "desc") .limit(100) .then((cdr) => { cdr.map((cdrss) => { cdrss.src = cdrss.src.toString("utf8") cdrss.log = cdrss.log.toString("utf8") }); return res.send(cdr); }); //res.json({ ok: "ok", dados: dados }); }, };