evaluasi.controller.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. const laporanModel = require('../../model/laporan.model')
  2. const logModel = require('../../model/log.model')
  3. const handleError = require('../../utils/handleError')
  4. const response = require('../../utils/responseHandler')
  5. const { validate } = require('../../utils/validation')
  6. const { addManyDokumen } = require('../../utils/dokumenFunction')
  7. const { cekSatuDataLaporan } = require('../../utils/cekData')
  8. const pemantauanModel = require('../../model/pemantauan.model')
  9. exports.add = handleError(async (req, res) => {
  10. const user = req.user
  11. const { id } = req.params
  12. const isValid = validate(res, req.body, {
  13. judul: 'string',
  14. tanggal: { type: 'date', convert: true },
  15. })
  16. if (!isValid) return
  17. const laporan = await cekSatuDataLaporan(res, user, id)
  18. if (!laporan) return
  19. const files = req.files
  20. if (!files.length) {
  21. return response.error(res, {
  22. message: 'dokumen harus ada',
  23. })
  24. }
  25. const dokumen = await addManyDokumen(files)
  26. const dokumen_id = dokumen.map((e) => e._id)
  27. const { judul, tanggal } = req.body
  28. const data = await laporanModel.findOneAndUpdate(
  29. {
  30. _id: laporan._id,
  31. jadwal: {
  32. $exists: true,
  33. $ne: null,
  34. },
  35. },
  36. {
  37. $push: {
  38. evaluasi: {
  39. judul,
  40. tanggal,
  41. dokumen: dokumen_id,
  42. },
  43. },
  44. },
  45. {
  46. new: true,
  47. }
  48. )
  49. let for_public = true
  50. if (laporan.evaluasi.length > 0) {
  51. for_public = false
  52. }
  53. await pemantauanModel.create({
  54. laporan: laporan._id,
  55. user: user._id,
  56. action: 'ADD EVALUASI',
  57. pt_id: laporan.pt.id,
  58. keterangan: 'Melakukan evaluasi',
  59. dokumen: dokumen_id,
  60. for_pt: false,
  61. for_public,
  62. })
  63. await logModel.create({
  64. user: user._id,
  65. aktivitas: `Berhasil melakukan evaluasi pada laporan id: ${laporan._id}`,
  66. })
  67. return response.success(res, {
  68. message: 'Berhasil tambah evaluasi',
  69. data,
  70. })
  71. })