| 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
- })
- }
- ]
|