| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | const auth = require('../../middleware/verifyToken')const checkData = require('../../middleware/checkData')const laporanModel = require('../../model/laporan.model')const response = require('../../utils/responseHandler')const { validation } = require('../../middleware/validation')const forRole = require('../../middleware/role')const { PTB_DIKTI, PTB_LLDIKTI, PENJADWALAN, ADD_JADWAL } = require('../../utils/constanta')const uploadFile = require('../../middleware/uploadFile')const pemantauanModel = require('../../model/pemantauan.model')exports.create = [  auth,  forRole([PTB_DIKTI, PTB_LLDIKTI]),  checkData((req) => req.params.laporan_id, (id) => laporanModel.findById({ _id: id }), 'laporan'),  uploadFile.array('dokumen'),  validation((req) => req.body, {    judul: 'string',    dari_tanggal: { type: 'date', convert: true },    sampai_tanggal: { type: 'date', convert: true },    warna: 'string'  }),  async (req, res) => {    const { judul, dari_tanggal, sampai_tanggal, warna } = req.body    const { laporan } = req.data    const user = req.user    try {      const data = {        flag: PENJADWALAN,        jadwal: {          judul,          dari_tanggal,          sampai_tanggal,          warna        }      }      if (!laporan.step.includes(PENJADWALAN)) data.$push = { step: PENJADWALAN }      await laporanModel.findOneAndUpdate({ _id: laporan._id }, data)      let for_public = true      if (laporan.evaluasi.length > 0) for_public = false      await pemantauanModel.create({        laporan: laporan._id,        user: user._id,        action: ADD_JADWAL,        pt_id: laporan.pt.id,        keterangan: 'Membuat Jadwal Pemeriksaan',        jadwal: {          dari_tanggal,          sampai_tanggal        },        for_public      })    } catch (e) {      return response.error(res, {        message: e.message,        code: 500      })    }    return response.success(res, {      message: 'Berhasil membuat jadwal pemeriksaan',      code: 201    })  }]
 |