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