evaluasi.controller.js 1.8 KB

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