|  | @@ -0,0 +1,149 @@
 | 
	
		
			
				|  |  | +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)
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +]
 |