auto.controller.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. const handleError = require('../utils/handleError')
  2. const response = require('../utils/responseHandler')
  3. const { notifWA } = require('../utils/notifFunction')
  4. const sanksiModel = require('../model/sanksi.model')
  5. const { TEMPLATE_KEBERATAN, TEMPLATE_BANDING } = require('../utils/constanta')
  6. exports.keberatan = handleError(async (req, res) => {
  7. const dataSanksi = await sanksiModel
  8. .find({
  9. 'batas_waktu.keberatan': {
  10. $lt: new Date().toISOString(),
  11. },
  12. 'batas_waktu.jawaban_keberatan': {
  13. $exists: false,
  14. $eq: null,
  15. },
  16. })
  17. .populate('user')
  18. .populate('laporan')
  19. if (!dataSanksi.length) {
  20. return response.success(res, {
  21. message: 'Tidak ada notifikasi yg dikirim',
  22. })
  23. }
  24. Promise.all(
  25. dataSanksi.map(
  26. async (sanksi) =>
  27. await notifWA(TEMPLATE_KEBERATAN, [
  28. {
  29. key: '1',
  30. value: 'nama_pt',
  31. value_text: sanksi.laporan.pt.nama,
  32. },
  33. {
  34. key: '2',
  35. value: 'pemberi_sanksi',
  36. value_text: sanksi.user.lembaga.nama,
  37. },
  38. {
  39. key: '3',
  40. value: 'no_sanksi',
  41. value_text: sanksi.no_sanksi,
  42. },
  43. ])
  44. )
  45. )
  46. return response.success(res, {
  47. message: 'Notifikasi berhasil terkirim',
  48. })
  49. })
  50. exports.banding = handleError(async (req, res) => {
  51. const dataSanksi = await sanksiModel
  52. .find({
  53. 'batas_waktu.banding': {
  54. $lt: new Date().toISOString(),
  55. },
  56. 'batas_waktu.jawaban_banding': {
  57. $exists: false,
  58. $eq: null,
  59. },
  60. 'batas_waktu.jawaban_keberatan': {
  61. $exists: true,
  62. $ne: null,
  63. },
  64. })
  65. .populate('user')
  66. .populate('laporan')
  67. if (!dataSanksi.length) {
  68. return response.success(res, {
  69. message: 'Tidak ada notifikasi yg dikirim',
  70. })
  71. }
  72. Promise.all(
  73. dataSanksi.map(
  74. async (sanksi) =>
  75. await notifWA(TEMPLATE_BANDING, [
  76. {
  77. key: '1',
  78. value: 'nama_pt',
  79. value_text: sanksi.laporan.pt.nama,
  80. },
  81. {
  82. key: '2',
  83. value: 'pemberi_sanksi',
  84. value_text: sanksi.user.lembaga.nama,
  85. },
  86. {
  87. key: '3',
  88. value: 'no_sanksi',
  89. value_text: sanksi.no_sanksi,
  90. },
  91. ])
  92. )
  93. )
  94. return response.success(res, {
  95. message: 'Notifikasi berhasil terkirim',
  96. })
  97. })