evaluasi.controller.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. exports.add = handleError(async (req, res) => {
  8. const user = req.user
  9. const { id } = req.params
  10. const isValid = validate(res, req.body, {
  11. judul: 'string',
  12. tanggal: { type: 'date', convert: true },
  13. })
  14. if (!isValid) return
  15. const laporan = await cekSatuDataLaporan(res, user, id)
  16. if (!laporan) return
  17. const files = req.files
  18. if (!files.length) {
  19. return response.error(res, {
  20. message: 'dokumen harus ada',
  21. })
  22. }
  23. const dokumen = await addManyDokumen(files)
  24. const dokumen_id = dokumen.map((e) => e._id)
  25. const { judul, tanggal } = req.body
  26. const data = await laporanModel.findOneAndUpdate(
  27. {
  28. _id: laporan._id,
  29. jadwal: {
  30. $exists: true,
  31. $ne: null,
  32. },
  33. },
  34. {
  35. $push: {
  36. evaluasi: {
  37. judul,
  38. tanggal,
  39. dokumen: dokumen_id,
  40. },
  41. },
  42. },
  43. {
  44. new: true,
  45. }
  46. )
  47. return response.success(res, {
  48. message: 'Berhasil tambah evaluasi',
  49. data,
  50. })
  51. })