evaluasi.controller.js 1.7 KB

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