| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | 
							- 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 uploadFile = require('../../middleware/uploadFile')
 
- const { PEMERIKSAAN, ADD_EVALUASI, EDIT_EVALUASI, PTB_DIKTI, PTB_LLDIKTI } = require('../../utils/constanta')
 
- const { addManyDokumen } = require('../../utils/dokumenFunction')
 
- const pemantauanModel = require('../../model/pemantauan.model')
 
- const forRole = require('../../middleware/role')
 
- 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',
 
-     tanggal: { type: 'date', convert: true },
 
-     dokumen: {
 
-       type: 'array',
 
-       items: {
 
-         type: 'object',
 
-         buffer: { type: 'class', instanceOf: Buffer }
 
-       }
 
-     }
 
-   }),
 
-   async (req, res) => {
 
-     const { judul, tanggal, dokumen } = req.body
 
-     const { laporan } = req.data
 
-     const user = req.user
 
-     try {
 
-       const dokumen_id = (await addManyDokumen(dokumen)).map((e) => e._id)
 
-       const data = {
 
-         flag: PEMERIKSAAN,
 
-         $push: {
 
-           evaluasi: {
 
-             dari: user._id,
 
-             judul,
 
-             tanggal,
 
-             dokumen: dokumen_id
 
-           }
 
-         }
 
-       }
 
-       if (!laporan.step.includes(PEMERIKSAAN)) data.$push = { step: PEMERIKSAAN }
 
-       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_EVALUASI,
 
-         pt_id: laporan.pt.id,
 
-         keterangan: 'Melakukan evaluasi',
 
-         dokumen: dokumen_id,
 
-         for_pt: false,
 
-         for_public
 
-       })
 
-     } catch (e) {
 
-       return response.error(res, {
 
-         message: e.message,
 
-         code: 500
 
-       })
 
-     }
 
-     return response.success(res, {
 
-       message: 'Berhasil membuat evaluasi pemeriksaan',
 
-       code: 201
 
-     })
 
-   }
 
- ]
 
- exports.edit = [
 
-   auth,
 
-   checkData((req) => req.params.id, (id) => laporanModel.findById({ _id: id })),
 
-   uploadFile.array('dokumen'),
 
-   validation((req) => req.body, {
 
-     judul: 'string',
 
-     tanggal: { type: 'date', convert: true }
 
-   }),
 
-   async (req, res) => {
 
-     const user = req.user
 
-     const { laporan } = req.data
 
-     const { judul, tanggal, dokumen } = req.body
 
-     let dokumen_id
 
-     if (dokumen.length) dokumen_id = (await addManyDokumen(dokumen)).map((e) => e._id)
 
-     const data = await laporanModel.findOneAndUpdate({ _id: laporan._id },
 
-       {
 
-         $set: {
 
-           'evaluasi.$.judul': judul,
 
-           'evaluasi.$.tanggal': tanggal,
 
-           'evaluasi.$.dokumen': dokumen_id
 
-         }
 
-       }
 
-     )
 
-     await pemantauanModel.create({
 
-       laporan: laporan._id,
 
-       user: user._id,
 
-       action: EDIT_EVALUASI,
 
-       pt_id: laporan.pt.id,
 
-       keterangan: 'Melakukan edit evaluasi',
 
-       dokumen: dokumen_id,
 
-       for_pt: false,
 
-       for_public: true
 
-     })
 
-     return response.success(res, {
 
-       message: 'Berhasil edit evaluasi',
 
-       data
 
-     })
 
-   }
 
- ]
 
 
  |