|
|
@@ -0,0 +1,102 @@
|
|
|
+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'
|
|
|
+ })
|
|
|
+})
|