laporan.controller.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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 pemantauanModel = require('../model/pemantauan.model')
  7. const { validate } = require('../utils/validation')
  8. const { addManyDokumen } = require('../utils/dokumenFunction')
  9. const { cekSatuDataLaporan, cekBanyakDataLaporan } = require('../utils/cekData')
  10. exports.create = handleError(async (req, res) => {
  11. const isValid = validate(res, req.body, {
  12. no_laporan: 'string',
  13. pt_id: 'string',
  14. pelanggaran_id: 'string',
  15. keterangan: 'string',
  16. })
  17. if (!isValid) return
  18. const { no_laporan, pt_id, keterangan } = 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: pt[0],
  47. pelanggaran: pelanggaran_id,
  48. keterangan,
  49. role_data: user.role.id === 2020 ? 'dikti' : 'lldikti',
  50. }
  51. data = await laporanModel.create(data)
  52. const pemantauan = await pemantauanModel.create({
  53. laporan: data._id,
  54. riwayat: {
  55. user: user._id,
  56. keterangan: 'Membuat Laporan',
  57. dokumen: dokumen_id,
  58. },
  59. })
  60. return response.success(res, {
  61. message: 'Berhasil menambah laporan',
  62. data,
  63. })
  64. })
  65. exports.getAll = handleError(async (req, res) => {
  66. const user = req.user
  67. let data = await cekBanyakDataLaporan(user)
  68. return response.success(res, {
  69. message: 'Berhasil ambil data laporan',
  70. data,
  71. })
  72. })
  73. exports.getOne = handleError(async (req, res) => {
  74. const { id } = req.params
  75. const user = req.user
  76. const data = await cekSatuDataLaporan(res, user, id)
  77. if (!data) return
  78. return response.success(res, {
  79. message: 'Berhasil ambil data Laporan',
  80. data: user,
  81. })
  82. })