cabutSanksi.controller.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. const handleError = require('../../utils/handleError')
  2. const sanksiModel = require('../../model/sanksi.model')
  3. const { addManyDokumen } = require('../../utils/dokumenFunction')
  4. const { validate } = require('../../utils/validation')
  5. const { cekSatuDataSanksi, cekSatuDataLaporan } = require('../../utils/cekData')
  6. const response = require('../../utils/responseHandler')
  7. exports.create = handleError(async (req, res) => {
  8. const user = req.user
  9. const { laporan_id, sanksi_id } = req.query
  10. if (!laporan_id || !sanksi_id) {
  11. return response.error(res, {
  12. message: 'query laporan_id atau sanksi_id harus ada',
  13. })
  14. }
  15. const laporan = await cekSatuDataLaporan(res, user, laporan_id)
  16. const sanksi = await cekSatuDataSanksi(res, user, sanksi_id)
  17. if (!laporan || !sanksi) return
  18. const files = req.files
  19. if (!files?.length) {
  20. return response.error(res, {
  21. message: 'dokumen harus ada',
  22. })
  23. }
  24. const dokumen = await addManyDokumen(files)
  25. const dokumen_id = dokumen.map((e) => e._id)
  26. const data = await sanksiModel.findOneAndUpdate(
  27. {
  28. laporan: laporan._id,
  29. _id: sanksi._id,
  30. ['pengajuan.cabut_sanksi']: { $exists: false, $eq: null },
  31. },
  32. {
  33. ['pengajuan.cabut_sanksi']: {
  34. dokumen: dokumen_id,
  35. },
  36. }
  37. )
  38. if (!data) {
  39. return response.error(res, {
  40. message: 'cabut_sanksi sudah ada',
  41. })
  42. }
  43. return response.success(res, {
  44. data,
  45. message: 'Berhasil menambah cabut_sanksi',
  46. })
  47. })
  48. exports.createJawaban = handleError(async (req, res) => {
  49. const user = req.user
  50. const { laporan_id, sanksi_id } = req.query
  51. if (!laporan_id || !sanksi_id) {
  52. return response.error(res, {
  53. message: 'query laporan_id atau sanksi_id harus ada',
  54. })
  55. }
  56. const laporan = await cekSatuDataLaporan(res, user, laporan_id)
  57. const sanksi = await cekSatuDataSanksi(res, user, sanksi_id)
  58. if (!laporan || !sanksi) return
  59. const isValid = validate(res, req.body, {
  60. status: 'string',
  61. keterangan: 'string',
  62. })
  63. if (!isValid) return
  64. const files = req.files
  65. if (!files?.length) {
  66. return response.error(res, {
  67. message: 'dokumen harus ada',
  68. })
  69. }
  70. const dokumen = await addManyDokumen(files)
  71. const dokumen_id = dokumen.map((e) => e._id)
  72. const { status, keterangan } = req.body
  73. const data = await sanksiModel.findOneAndUpdate(
  74. {
  75. laporan: laporan._id,
  76. _id: sanksi._id,
  77. ['pengajuan.cabut_sanksi']: { $exists: true, $ne: null },
  78. },
  79. {
  80. ['jawaban.cabut_sanksi']: {
  81. status,
  82. keterangan,
  83. dokumen: dokumen_id,
  84. },
  85. }
  86. )
  87. if (!data) {
  88. return response.error(res, {
  89. message: 'cabut_sanksi tidak ada',
  90. })
  91. }
  92. return response.success(res, {
  93. data,
  94. })
  95. })