evaluasi.controller.js 1.3 KB

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