laporan.controller.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. })
  16. if (!isValid) return
  17. const { no_laporan, pt_id, keterangan } = req.body
  18. let { pelanggaran_id } = req.body
  19. const pt = await axios.get(
  20. `https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/${pt_id}`
  21. )
  22. if (!pt)
  23. return response.error(res, {
  24. message: 'pt_id tidak ditemukan',
  25. })
  26. const files = req.files
  27. let dokumen_id = []
  28. if (files.length) {
  29. const dokumen = await addManyDokumen(files)
  30. dokumen_id = dokumen.map((e) => e._id)
  31. }
  32. pelanggaran_id = pelanggaran_id.split(',')
  33. const pelanggaran = await pelanggaranModel.find({
  34. _id: {
  35. $in: pelanggaran_id,
  36. },
  37. })
  38. if (!pelanggaran.length)
  39. return response.error(res, { message: 'pelanggaran_id tidak ada' })
  40. const user = req.user
  41. let data = {
  42. no_laporan,
  43. user: user._id,
  44. dokumen: dokumen_id,
  45. pt: pt[0],
  46. pelanggaran: pelanggaran_id,
  47. keterangan,
  48. role_data: user.role.id === 2020 ? 'dikti' : 'lldikti',
  49. }
  50. data = await laporanModel.create(data)
  51. return response.success(res, {
  52. message: 'Berhasil menambah laporan',
  53. data,
  54. })
  55. })
  56. exports.getAll = handleError(async (req, res) => {
  57. const user = req.user
  58. let data = await cekBanyakDataLaporan(user)
  59. return response.success(res, {
  60. message: 'Berhasil ambil data laporan',
  61. data,
  62. })
  63. })
  64. exports.getOne = handleError(async (req, res) => {
  65. const { id } = req.params
  66. const user = req.user
  67. const data = await cekSatuDataLaporan(res, user, id)
  68. if (!data) return
  69. return response.success(res, {
  70. message: 'Berhasil ambil data Laporan',
  71. data: user,
  72. })
  73. })