pemantauan.controller.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. const handleError = require('../../utils/v1/handleError')
  2. const response = require('../../utils/responseHandler')
  3. const pemantauanModel = require('../../model/pemantauan.model')
  4. const { cekSatuDataLaporan, cekSatuDataSanksi } = require('../../utils/v1/cekData')
  5. const laporanModel = require('../../model/laporan.model')
  6. const userModel = require('../../model/user.model')
  7. const { TRUE } = require('../../utils/constanta')
  8. exports.get = handleError(async (req, res) => {
  9. const user = req.user
  10. const { laporan_id } = req.params
  11. const { delegasi, asc, all } = req.query
  12. const where = {}
  13. if (delegasi) where.delegasi = true
  14. if (all) where.all = true
  15. const laporan = await cekSatuDataLaporan(res, user, laporan_id, where)
  16. if (!laporan) return
  17. const data = await pemantauanModel
  18. .find({ laporan: laporan._id })
  19. .populate({ path: 'user', select: 'nama role isPublic isPrivate' })
  20. .populate({ path: 'sanksi', select: 'no_sanksi' })
  21. .populate({ path: 'laporan', select: 'no_laporan' })
  22. .populate({ path: 'sanksi', select: 'no_sanksi' })
  23. .populate('dokumen')
  24. .populate('berita_acara')
  25. .sort({ createdAt: asc === TRUE ? 1 : -1 })
  26. return response.success(res, {
  27. message: 'Berhasil ambil data Pemantauan',
  28. data,
  29. })
  30. })
  31. exports.getPT = handleError(async (req, res) => {
  32. const user = req.user
  33. const data = await pemantauanModel
  34. .find({ pt_id: user.lembaga.id, for_pt: true })
  35. .populate({ path: 'user', select: 'nama role isPublic isPrivate' })
  36. .populate({ path: 'laporan', select: 'no_laporan' })
  37. .populate({ path: 'sanksi', select: 'no_sanksi' })
  38. .populate('dokumen')
  39. .sort({ createdAt: -1 })
  40. return response.success(res, {
  41. message: 'Berhasil ambil data Pemantauan',
  42. data,
  43. })
  44. })
  45. exports.public = handleError(async (req, res) => {
  46. const { no_laporan } = req.query
  47. if (!no_laporan) {
  48. return response.error(res, {
  49. message: 'query no_hp dan no_laporan harus ada',
  50. })
  51. }
  52. const laporan = await laporanModel
  53. .findOne({
  54. no_laporan,
  55. })
  56. .populate('dokumen')
  57. .populate({ path: 'pelanggaran', select: 'pelanggaran' })
  58. .select(
  59. 'no_laporan pt.nama keterangan pelanggaran createdAt aktif role_data user'
  60. )
  61. const user = laporan && (await userModel.findById(laporan.user))
  62. if (!laporan || !user?.isPublic) {
  63. return response.error(res, {
  64. message: 'laporan tidak ada',
  65. })
  66. }
  67. const data = await pemantauanModel
  68. .find({ laporan, for_public: true })
  69. .populate({ path: 'user', select: 'nama isPublic role' })
  70. .select('user keterangan laporan sanksi')
  71. .populate({ path: 'laporan', select: 'no_laporan' })
  72. .populate({ path: 'sanksi', select: 'no_sanksi' })
  73. return response.success(res, {
  74. message: 'tes',
  75. data: { laporan, pemantauan: data },
  76. })
  77. })