const catatanService = require('../../services/catatan.service') const sanksiService = require('../../services/sanksi.service') const response = require('../../utils/responseHandler') const { validation } = require('../../middleware/validation') const { addDokumen } = require('../../utils/dokumenFunction') exports.getAllCatatan = async (req, res, next) => { try { const { sanksi_id } = req.params const data = await catatanService.findAll(sanksi_id) return response.success(res, { message: 'Berhasil mendapatkan daftar catatan', data, }) } catch (e) { next(e) } } exports.getOneCatatan = async (req, res, next) => { try { const { catatan_id } = req.params const data = await catatanService.findOne(catatan_id) return response.success(res, { message: 'Berhasil mendapatkan catatan', data, }) } catch (e) { next(e) } } exports.createCatatan = [ validation((req) => req.body, { judul: 'string', }), async (req, res, next) => { try { const { sanksi_id } = req.params const { judul, isi } = req.body const data = await catatanService.create({ sanksi_id, judul, isi }) return response.success(res, { message: 'Berhasil membuat catatan', data, }) } catch (e) { next(e) } }, ] exports.deleteCatatan = async (req, res, next) => { try { const { catatan_id } = req.params await catatanService.delete(catatan_id) return response.success(res, { message: 'Berhasil menghapus catatan', }) } catch (e) { next(e) } } exports.editCatatan = [ validation((req) => req.body, { catatan_id: 'string', judul: 'string', menu: 'string', }), async (req, res, next) => { try { const { sanksi_id } = req.params const { judul, isi, catatan_id, menu } = req.body const sanksi = await sanksiService.findById(sanksi_id) if (!sanksi) return next({ code: 404, message: 'sanksi_id tidak ada' }) const catatan = await catatanService.findOne(catatan_id, sanksi._id) if (!catatan) return next({ code: 404, message: 'catatan_id tidak ada' }) await catatanService.update(catatan._id, { judul, isi, menu, }) return response.success(res, { message: 'Berhasil update catatan', }) } catch (e) { next(e) } }, ] exports.addDaftarHadir = [ validation((req) => req.body, { nama: 'string', }), async (req, res, next) => { try { const { catatan_id } = req.params const { nama } = req.body const catatan = await catatanService.findOne(catatan_id) if (!catatan) return next({ code: 404, message: 'catatan_id tidak ada' }) const file = req.file if (!file) return next({ code: 400, message: 'ttd harus ada' }) const dokumen = await addDokumen(file) await catatanService.update(catatan._id, { $push: { daftar_kehadiran_peserta: { nama, ttd: dokumen.id, }, }, }) return response.success(res, { message: 'Berhasil tambah daftar peserta', }) } catch (e) { next(e) } }, ] exports.removePeserta = [ validation((req) => req.body, { peserta_id: 'string', }), async (req, res, next) => { try { const { catatan_id } = req.params const { peserta_id } = req.body const catatan = await catatanService.findOne(catatan_id) if (!catatan) return next({ code: 404, message: 'catatan_id tidak ada' }) await catatanService.findAndUpdate(catatan._id, { $pull: { daftar_kehadiran_peserta: { _id: peserta_id, }, }, }) return response.success(res, { message: 'Berhasil menghapus peserta pleno', }) } catch (e) { next(e) } }, ]