Ramais.model.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. const { knex } = require("../config/db.config");
  2. const { Model } = require("objection");
  3. Model.knex(knex);
  4. const unique = require("objection-unique")({
  5. fields: ["id"],
  6. identifiers: ["id"],
  7. });
  8. class Ramais extends unique(Model) {
  9. static get tableName() {
  10. return "ramais";
  11. }
  12. static get idColumn() {
  13. return "id";
  14. }
  15. static get relationMappings() {
  16. const { RamalFranquias } = require("./RamalFranquias.model");
  17. const { Franquia } = require("./Franquia.model");
  18. const { Did } = require("./Did.model");
  19. return {
  20. did: {
  21. relation: Model.HasManyRelation,
  22. modelClass: Did,
  23. join: {
  24. from: "did.id_ramal",
  25. to: "ramais.id",
  26. },
  27. },
  28. franquia: {
  29. relation: Model.ManyToManyRelation,
  30. modelClass: Franquia,
  31. join: {
  32. from: "fraquias.id_planos",
  33. through: {
  34. from: 'planos.id',
  35. to: 'planos.id'
  36. },
  37. to: "ramais.id_planos",
  38. },
  39. },
  40. ramais_franquias: {
  41. relation: Model.HasManyRelation,
  42. modelClass: RamalFranquias,
  43. join: {
  44. from: "ramais.id",
  45. to: "ramais_franquias.id_ramais",
  46. on: (builder) => {
  47. builder.andOn(
  48. "ramais.id_planos",
  49. "=",
  50. "ramais_franquias.id_planos"
  51. );
  52. },
  53. modify: (query) => {
  54. query.select(
  55. "franquias.nome as nome_franquia",
  56. "ramais_franquias.franquia_segundos as segundos_disponiveis",
  57. "franquias.franquia_minutos as total_minutos_franquia",
  58. Ramal.raw("IF(franquias.LC = 1, 'LC', '') as LC"),
  59. Ramal.raw("IF(franquias.LDN = 1, 'LDN', '') as LDN"),
  60. Ramal.raw("IF(franquias.VC1 = 1, 'VC1', '') as VC1"),
  61. Ramal.raw("IF(franquias.VC2 = 1, 'VC2', '') as VC2"),
  62. Ramal.raw("IF(franquias.VC3 = 1, 'VC3', '') as VC3")
  63. );
  64. },
  65. },
  66. },
  67. };
  68. }
  69. }
  70. module.exports.Ramais = Ramais;