penjadwalan.controller.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. const auth = require('../../middleware/verifyToken')
  2. const checkData = require('../../middleware/checkData')
  3. const laporanModel = require('../../model/laporan.model')
  4. const response = require('../../utils/responseHandler')
  5. const { validation } = require('../../middleware/validation')
  6. const forRole = require('../../middleware/role')
  7. const { PTB_DIKTI, PTB_LLDIKTI, PENJADWALAN, ADD_JADWAL } = require('../../utils/constanta')
  8. const uploadFile = require('../../middleware/uploadFile')
  9. const pemantauanModel = require('../../model/pemantauan.model')
  10. exports.create = [
  11. auth,
  12. forRole([PTB_DIKTI, PTB_LLDIKTI]),
  13. checkData((req) => req.params.laporan_id, (id) => laporanModel.findById({ _id: id }), 'laporan'),
  14. uploadFile.array('dokumen'),
  15. validation((req) => req.body, {
  16. judul: 'string',
  17. dari_tanggal: { type: 'date', convert: true },
  18. sampai_tanggal: { type: 'date', convert: true },
  19. warna: 'string'
  20. }),
  21. async (req, res) => {
  22. const { judul, dari_tanggal, sampai_tanggal, warna } = req.body
  23. const { laporan } = req.data
  24. const user = req.user
  25. try {
  26. const data = {
  27. flag: PENJADWALAN,
  28. jadwal: {
  29. judul,
  30. dari_tanggal,
  31. sampai_tanggal,
  32. warna
  33. }
  34. }
  35. if (!laporan.step.includes(PENJADWALAN)) data.$push = { step: PENJADWALAN }
  36. await laporanModel.findOneAndUpdate({ _id: laporan._id }, data)
  37. let for_public = true
  38. if (laporan.evaluasi.length > 0) for_public = false
  39. await pemantauanModel.create({
  40. laporan: laporan._id,
  41. user: user._id,
  42. action: ADD_JADWAL,
  43. pt_id: laporan.pt.id,
  44. keterangan: 'Membuat Jadwal Pemeriksaan',
  45. jadwal: {
  46. dari_tanggal,
  47. sampai_tanggal
  48. },
  49. for_public
  50. })
  51. } catch (e) {
  52. return response.error(res, {
  53. message: e.message,
  54. code: 500
  55. })
  56. }
  57. return response.success(res, {
  58. message: 'Berhasil membuat jadwal pemeriksaan',
  59. code: 201
  60. })
  61. }
  62. ]