catatan.controller.js 3.8 KB

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