laporan.controller.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. const axios = require('../utils/axios')
  2. const handleError = require('../utils/handleError')
  3. const response = require('../utils/responseHandler')
  4. const laporanModel = require('../model/laporan.model')
  5. const pelanggaranModel = require('../model/pelanggaran.model')
  6. const { validate } = require('../utils/validation')
  7. const { addManyDokumen } = require('../utils/dokumenFunction')
  8. const { cekSatuDataLaporan, cekBanyakDataLaporan } = require('../utils/cekData')
  9. exports.create = handleError(async (req, res) => {
  10. const isValid = validate(res, req.body, {
  11. no_laporan: 'string',
  12. pt_id: 'string',
  13. pelanggaran_id: 'string',
  14. keterangan: 'string',
  15. role_data: { type: 'string', optional: true, enum: ['lldikti', 'dikti'] },
  16. })
  17. if (!isValid) return
  18. const { no_laporan, pt_id, keterangan, role_data } = req.body
  19. let { pelanggaran_id } = req.body
  20. const pt = await axios.get(
  21. `https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/${pt_id}`
  22. )
  23. if (!pt)
  24. return response.error(res, {
  25. message: 'pt_id tidak ditemukan',
  26. })
  27. const files = req.files
  28. let dokumen_id = []
  29. if (files.length) {
  30. const dokumen = await addManyDokumen(files)
  31. dokumen_id = dokumen.map((e) => e._id)
  32. }
  33. pelanggaran_id = pelanggaran_id.split(',')
  34. const pelanggaran = await pelanggaranModel.find({
  35. _id: {
  36. $in: pelanggaran_id,
  37. },
  38. })
  39. if (!pelanggaran.length)
  40. return response.error(res, { message: 'pelanggaran_id tidak ada' })
  41. const user = req.user
  42. let data = {
  43. no_laporan,
  44. user: user._id,
  45. dokumen: dokumen_id,
  46. pt,
  47. pelanggaran: pelanggaran_id,
  48. keterangan,
  49. }
  50. if (role_data) data.role_data = role_data
  51. data = await laporanModel.create(data)
  52. return response.success(res, {
  53. message: 'Berhasil menambah laporan',
  54. data,
  55. })
  56. })
  57. exports.getAll = handleError(async (req, res) => {
  58. const user = req.user
  59. let data = await cekBanyakDataLaporan(user)
  60. return response.success(res, {
  61. message: '',
  62. data,
  63. })
  64. })
  65. exports.getOne = handleError(async (req, res) => {
  66. const { id } = req.params
  67. const user = req.user
  68. const data = await cekSatuDataLaporan(res, user, id)
  69. if (!data) return
  70. return response.success(res, {
  71. message: 'Berhasil ngambil data Laporan',
  72. data: user,
  73. })
  74. })