| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 | const laporanModel = require('../../model/laporan.model')const handleError = require('../../utils/handleError')const response = require('../../utils/responseHandler')const { validate } = require('../../utils/validation')const { addManyDokumen } = require('../../utils/dokumenFunction')const { cekSatuDataLaporan } = require('../../utils/cekData')const pemantauanModel = require('../../model/pemantauan.model')exports.add = handleError(async (req, res) => {  const user = req.user  const { id } = req.params  const isValid = validate(res, req.body, {    judul: 'string',    tanggal: { type: 'date', convert: true },  })  if (!isValid) return  const laporan = await cekSatuDataLaporan(res, user, id)  if (!laporan) return  const files = req.files  if (!files.length) {    return response.error(res, {      message: 'dokumen harus ada',    })  }  const dokumen = await addManyDokumen(files)  const dokumen_id = dokumen.map((e) => e._id)  const { judul, tanggal } = req.body  const data = await laporanModel.findOneAndUpdate(    {      _id: laporan._id,      jadwal: {        $exists: true,        $ne: null,      },    },    {      $push: {        evaluasi: {          dari: user._id,          judul,          tanggal,          dokumen: dokumen_id,        },      },    },    {      new: true,    }  )  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,  })  return response.success(res, {    message: 'Berhasil tambah evaluasi',    data,  })})exports.edit = handleError(async (req, res) => {  const user = req.user  const { id } = req.params  const { judul, tanggal, evaluasi_id } = req.body  const isValid = validate(res, req.body, {    evaluasi_id: 'string',    judul: 'string|optional',    tanggal: { type: 'date', convert: true, optional: true },  })  if (!isValid) return  const laporan = await cekSatuDataLaporan(res, user, id, {    'evaluasi._id': evaluasi_id,  })  if (!laporan) return  const files = req.files  let dokumen_id  if (files.length) {    const dokumen = await addManyDokumen(files)    dokumen_id = dokumen.map((e) => e._id)  }  const data = await laporanModel.findOneAndUpdate(    {      _id: laporan._id,      jadwal: {        $exists: true,        $ne: null,      },      'evaluasi._id': evaluasi_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,  })})
 |