| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | const handleError = require('../../utils/v1/handleError')const response = require('../../utils/responseHandler')const laporanModel = require('../../model/laporan.model')const { validate } = require('../../utils/v1/validation')const signatureModel = require('../../model/signature.model')const { addDokumen } = require('../../utils/dokumenFunction')const { cekSatuDataLaporan } = require('../../utils/v1/cekData')exports.getPeserta = handleError(async (req, res) => {  const { laporan_id } = req.params  const data = await signatureModel.findOne({ laporan_id }).populate('daftar_kehadiran_peserta.ttd')  return response.success(res, {    message: 'Berhasil mendapatkan daftar kehadiran peserta',    data  })})exports.addPeserta = handleError(async (req, res) => {  const isValid = validate(res, req.body, {    laporan_id: 'string',    nama: 'string'  })  if (!isValid) return  const { laporan_id, nama } = req.body  const laporan = await laporanModel.findOne({    _id: laporan_id  })  if (!laporan) return response.error(res, {    code: 404,    message: 'laporan_id tidak ada'  })  const file = req.file  if (!file) {    return response.error(res, {      message: 'ttd harus ada'    })  }  const dokumen = await addDokumen(file)  const signature = await signatureModel.findOne({ laporan_id: laporan._id })  if (!signature) {    await signatureModel.create(      {        laporan_id: laporan._id,        daftar_kehadiran_peserta: [{          nama,          ttd: dokumen.id        }]      }    )  } else {    await signatureModel.findOneAndUpdate(      { laporan_id: laporan._id },      {        $push: {          daftar_kehadiran_peserta: {            nama,            ttd: dokumen.id          }        }      }    )  }  return response.success(res, {    message: 'Berhasil tambah peserta pleno'  })})exports.removePeserta = handleError(async (req, res) => {  const isValid = validate(res, req.body, {    peserta_id: 'string',    laporan_id: 'string'  })  if (!isValid) return  const user = req.user  const { laporan_id, peserta_id } = req.body  const laporan = await cekSatuDataLaporan(res, user, laporan_id, {    evaluasi: { $exists: true, $ne: [] }  })  if (!laporan) return  await signatureModel.findOneAndUpdate(    { laporan_id: laporan._id },    {      $pull: {        daftar_kehadiran_peserta: {          _id: peserta_id        }      }    }  )  return response.success(res, {    message: 'Berhasil menghapus peserta pleno'  })})
 |