| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 | 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 { menu } = req.query    let where = { sanksi_id }    if (menu) where.menu = menu    const data = await catatanService.findAllWhere(where)    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',    menu: 'string',  }),  async (req, res, next) => {    try {      const { sanksi_id } = req.params      const { judul, isi, menu } = req.body      const data = await catatanService.create({ sanksi_id, judul, isi, menu })      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)    }  },]
 |