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