catatan.controller.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. const catatanService = require('../../services/catatan.service')
  2. const sanksiService = require('../../services/sanksi.service')
  3. const response = require('../../utils/responseHandler')
  4. const { validation } = require('../../middleware/validation')
  5. const { addDokumen } = require('../../utils/dokumenFunction')
  6. exports.getAllCatatan = async (req, res, next) => {
  7. try {
  8. const { sanksi_id } = req.params
  9. const { menu } = req.query
  10. let where = { sanksi_id }
  11. if (menu) where.menu = menu
  12. const data = await catatanService.findAllWhere(where)
  13. return response.success(res, {
  14. message: 'Berhasil mendapatkan daftar catatan',
  15. data,
  16. })
  17. } catch (e) {
  18. next(e)
  19. }
  20. }
  21. exports.getOneCatatan = async (req, res, next) => {
  22. try {
  23. const { catatan_id } = req.params
  24. const data = await catatanService.findOne(catatan_id)
  25. return response.success(res, {
  26. message: 'Berhasil mendapatkan catatan',
  27. data,
  28. })
  29. } catch (e) {
  30. next(e)
  31. }
  32. }
  33. exports.createCatatan = [
  34. validation((req) => req.body, {
  35. judul: 'string',
  36. menu: 'string',
  37. }),
  38. async (req, res, next) => {
  39. try {
  40. const { sanksi_id } = req.params
  41. const { judul, isi, menu } = req.body
  42. const data = await catatanService.create({ sanksi_id, judul, isi, menu })
  43. return response.success(res, {
  44. message: 'Berhasil membuat catatan',
  45. data,
  46. })
  47. } catch (e) {
  48. next(e)
  49. }
  50. },
  51. ]
  52. exports.deleteCatatan = async (req, res, next) => {
  53. try {
  54. const { catatan_id } = req.params
  55. await catatanService.delete(catatan_id)
  56. return response.success(res, {
  57. message: 'Berhasil menghapus catatan',
  58. })
  59. } catch (e) {
  60. next(e)
  61. }
  62. }
  63. exports.editCatatan = [
  64. validation((req) => req.body, {
  65. catatan_id: 'string',
  66. judul: 'string',
  67. menu: 'string',
  68. }),
  69. async (req, res, next) => {
  70. try {
  71. const { sanksi_id } = req.params
  72. const { judul, isi, catatan_id, menu } = req.body
  73. const sanksi = await sanksiService.findById(sanksi_id)
  74. if (!sanksi) return next({ code: 404, message: 'sanksi_id tidak ada' })
  75. const catatan = await catatanService.findOne(catatan_id, sanksi._id)
  76. if (!catatan) return next({ code: 404, message: 'catatan_id tidak ada' })
  77. await catatanService.update(catatan._id, {
  78. judul,
  79. isi,
  80. menu,
  81. })
  82. return response.success(res, {
  83. message: 'Berhasil update catatan',
  84. })
  85. } catch (e) {
  86. next(e)
  87. }
  88. },
  89. ]
  90. exports.addDaftarHadir = [
  91. validation((req) => req.body, {
  92. nama: 'string',
  93. }),
  94. async (req, res, next) => {
  95. try {
  96. const { catatan_id } = req.params
  97. const { nama } = req.body
  98. const catatan = await catatanService.findOne(catatan_id)
  99. if (!catatan) return next({ code: 404, message: 'catatan_id tidak ada' })
  100. const file = req.file
  101. if (!file) return next({ code: 400, message: 'ttd harus ada' })
  102. const dokumen = await addDokumen(file)
  103. await catatanService.update(catatan._id, {
  104. $push: {
  105. daftar_kehadiran_peserta: {
  106. nama,
  107. ttd: dokumen.id,
  108. },
  109. },
  110. })
  111. return response.success(res, {
  112. message: 'Berhasil tambah daftar peserta',
  113. })
  114. } catch (e) {
  115. next(e)
  116. }
  117. },
  118. ]
  119. exports.removePeserta = [
  120. validation((req) => req.body, {
  121. peserta_id: 'string',
  122. }),
  123. async (req, res, next) => {
  124. try {
  125. const { catatan_id } = req.params
  126. const { peserta_id } = req.body
  127. const catatan = await catatanService.findOne(catatan_id)
  128. if (!catatan) return next({ code: 404, message: 'catatan_id tidak ada' })
  129. await catatanService.findAndUpdate(catatan._id, {
  130. $pull: {
  131. daftar_kehadiran_peserta: {
  132. _id: peserta_id,
  133. },
  134. },
  135. })
  136. return response.success(res, {
  137. message: 'Berhasil menghapus peserta pleno',
  138. })
  139. } catch (e) {
  140. next(e)
  141. }
  142. },
  143. ]