Telefonia.Controller.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. const { BuscaFatura } = require("../Modules/saperx/circuitos");
  2. const IxcFactory = require("../core/ixc/Ixc.factory");
  3. const SaperxFactory = require("../core/saperx/Saperx.factory");
  4. const { Cdr } = require("../models/Cdr.model");
  5. const { Ramais } = require("../models/Ramais.model");
  6. module.exports = {
  7. Token: async function (req, res) {
  8. const { month_bill, id_sip } = req.body;
  9. await SaperxFactory.RefreshToken();
  10. res.json({ ok: "ok" });
  11. },
  12. BuscaPorIDs: async function (req, res) {
  13. var { busca } = req.body;
  14. // Use .query() para começar uma nova consulta
  15. const query = Ramais.query()
  16. .withGraphFetched("did")
  17. .withGraphFetched("ramais_franquias")
  18. .withGraphFetched("plano_franquia");
  19. // Use .orWhere para adicionar as condições "like" nas colunas id, circuito e numero da tabela did
  20. query.joinRelated("did").whereIn("ramais.id", busca);
  21. // Execute a consulta e envie a resposta quando terminar
  22. try {
  23. const ramais = await query;
  24. res.json({ ramais });
  25. } catch (error) {
  26. console.error(error);
  27. res.status(500).json({ error: "Ocorreu um erro ao buscar os ramais." });
  28. }
  29. },
  30. BuscaCircuitos: async function (req, res) {
  31. var { busca } = req.body;
  32. // Use .query() para começar uma nova consulta
  33. const query = Ramais.query()
  34. .withGraphFetched("did")
  35. .withGraphFetched("ramais_franquias");
  36. // Use .orWhere para adicionar as condições "like" nas colunas id, circuito e numero da tabela did
  37. query
  38. .joinRelated("did")
  39. .orWhere("ramais.id", "like", `%${busca}%`)
  40. .orWhere("ramais.nome", "like", `%${busca}%`)
  41. .orWhere("ramais.ramal", "like", `%${busca}%`)
  42. .orWhere("did.numero", "like", `%${busca}%`).groupBy('ramais.id').limit(100);
  43. // Execute a consulta e envie a resposta quando terminar
  44. try {
  45. const ramais = await query;
  46. res.json({ ramais });
  47. } catch (error) {
  48. console.error(error);
  49. res.status(500).json({ error: "Ocorreu um erro ao buscar os ramais." });
  50. }
  51. },
  52. VerCircuitos: async function (req, res) {
  53. var { busca } = req.body;
  54. // Use .query() para começar uma nova consulta
  55. const query = Ramais.query()
  56. .withGraphFetched("did")
  57. .withGraphFetched("ramais_franquias");
  58. // Use .orWhere para adicionar as condições "like" nas colunas id, circuito e numero da tabela did
  59. query
  60. .joinRelated("did")
  61. .orWhere("ramais.id", busca)
  62. .orWhere("ramais.nome", busca)
  63. .orWhere("ramais.ramal", busca)
  64. .orWhere("did.numero", busca);
  65. // Execute a consulta e envie a resposta quando terminar
  66. try {
  67. const ramais = await query;
  68. res.json({ ramais });
  69. } catch (error) {
  70. console.error(error);
  71. res.status(500).json({ error: "Ocorreu um erro ao buscar os ramais." });
  72. }
  73. },
  74. Circuitos: async function (req, res) {
  75. try {
  76. let { IdCliente } = req.body;
  77. if (!IdCliente) {
  78. return res.status(401).send({ msg: "Informacoes faltando!" });
  79. }
  80. var dados = await IxcFactory.BuscaTelefonia(IdCliente);
  81. var { id_sip } = dados.circuitos[2];
  82. var dados = await SaperxFactory.Buscacircuitos(id_sip);
  83. res.json({ dados });
  84. } catch (error) {
  85. console.log(error);
  86. return res.status();
  87. }
  88. },
  89. Fatura: async function (req, res) {
  90. const { month_bill, id_sip } = req.body;
  91. var dados = await BuscaFatura(id_sip, month_bill);
  92. res.json({ ok: "ok", dados: dados });
  93. },
  94. Cdr: async function (req, res) {
  95. const { month_bill, id_sip } = req.body;
  96. var dados = Cdr.query()
  97. .where("channel","like","%8009007%")
  98. //.where("sentido", "S")
  99. .orderBy("id", "desc")
  100. .limit(100)
  101. .then((cdr) => {
  102. cdr.map((cdrss) => {
  103. cdrss.src = cdrss.src.toString("utf8")
  104. cdrss.log = cdrss.log.toString("utf8")
  105. });
  106. return res.send(cdr);
  107. });
  108. //res.json({ ok: "ok", dados: dados });
  109. },
  110. };