signature.controller.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. const handleError = require('../../utils/v1/handleError')
  2. const response = require('../../utils/responseHandler')
  3. const laporanModel = require('../../model/laporan.model')
  4. const { validate } = require('../../utils/v1/validation')
  5. const signatureModel = require('../../model/signature.model')
  6. const { addDokumen } = require('../../utils/dokumenFunction')
  7. const { cekSatuDataLaporan } = require('../../utils/v1/cekData')
  8. exports.getPeserta = handleError(async (req, res) => {
  9. const { laporan_id } = req.params
  10. const data = await signatureModel.findOne({ laporan_id }).populate('daftar_kehadiran_peserta.ttd')
  11. return response.success(res, {
  12. message: 'Berhasil mendapatkan daftar kehadiran peserta',
  13. data
  14. })
  15. })
  16. exports.addPeserta = handleError(async (req, res) => {
  17. const isValid = validate(res, req.body, {
  18. laporan_id: 'string',
  19. nama: 'string'
  20. })
  21. if (!isValid) return
  22. const { laporan_id, nama } = req.body
  23. const laporan = await laporanModel.findOne({
  24. _id: laporan_id
  25. })
  26. if (!laporan) return response.error(res, {
  27. code: 404,
  28. message: 'laporan_id tidak ada'
  29. })
  30. const file = req.file
  31. if (!file) {
  32. return response.error(res, {
  33. message: 'ttd harus ada'
  34. })
  35. }
  36. const dokumen = await addDokumen(file)
  37. const signature = await signatureModel.findOne({ laporan_id: laporan._id })
  38. if (!signature) {
  39. await signatureModel.create(
  40. {
  41. laporan_id: laporan._id,
  42. daftar_kehadiran_peserta: [{
  43. nama,
  44. ttd: dokumen.id
  45. }]
  46. }
  47. )
  48. } else {
  49. await signatureModel.findOneAndUpdate(
  50. { laporan_id: laporan._id },
  51. {
  52. $push: {
  53. daftar_kehadiran_peserta: {
  54. nama,
  55. ttd: dokumen.id
  56. }
  57. }
  58. }
  59. )
  60. }
  61. return response.success(res, {
  62. message: 'Berhasil tambah peserta pleno'
  63. })
  64. })
  65. exports.removePeserta = handleError(async (req, res) => {
  66. const isValid = validate(res, req.body, {
  67. peserta_id: 'string',
  68. laporan_id: 'string'
  69. })
  70. if (!isValid) return
  71. const user = req.user
  72. const { laporan_id, peserta_id } = req.body
  73. const laporan = await cekSatuDataLaporan(res, user, laporan_id, {
  74. evaluasi: { $exists: true, $ne: [] }
  75. })
  76. if (!laporan) return
  77. await signatureModel.findOneAndUpdate(
  78. { laporan_id: laporan._id },
  79. {
  80. $pull: {
  81. daftar_kehadiran_peserta: {
  82. _id: peserta_id
  83. }
  84. }
  85. }
  86. )
  87. return response.success(res, {
  88. message: 'Berhasil menghapus peserta pleno'
  89. })
  90. })