rekomendasi.controller.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. const handleError = require('../utils/handleError')
  2. const response = require('../utils/responseHandler')
  3. const { addManyDokumen } = require('../utils/dokumenFunction')
  4. const { cekSatuDataSanksi } = require('../utils/cekData')
  5. const pemantauanModel = require('../model/pemantauan.model')
  6. const sanksiModel = require('../model/sanksi.model')
  7. exports.createRekomendasi = handleError(async (req, res) => {
  8. const user = req.user
  9. const { id } = req.params
  10. const sanksi = await cekSatuDataSanksi(res, user, id, { delegasi: true })
  11. if (!sanksi) return
  12. const files = req.files
  13. if (!files.length) {
  14. return response.error(res, {
  15. message: 'dokumen harus ada',
  16. })
  17. }
  18. const dokumen = await addManyDokumen(files)
  19. const dokumen_id = dokumen.map((e) => e._id)
  20. const data = await sanksiModel.findOneAndUpdate(
  21. {
  22. _id: sanksi._id,
  23. },
  24. {
  25. $push: {
  26. rekomendasi: {
  27. dokumen: dokumen_id,
  28. },
  29. },
  30. },
  31. {
  32. new: true,
  33. }
  34. )
  35. let for_public = true
  36. if (sanksi.rekomendasi.length > 0) {
  37. for_public = false
  38. }
  39. await pemantauanModel.create({
  40. laporan: sanksi.laporan._id,
  41. user: user._id,
  42. action: 'ADD REKOMENDASI',
  43. pt_id: sanksi.laporan.pt.id,
  44. keterangan: 'Melakukan rekomendasi delegasi',
  45. dokumen: dokumen_id,
  46. for_pt: false,
  47. for_public,
  48. })
  49. return response.success(res, {
  50. message: 'Berhasil tambah rekomendasi delegasi',
  51. data,
  52. })
  53. })