const axios = require('../utils/axios') const handleError = require('../utils/handleError') const response = require('../utils/responseHandler') const laporanModel = require('../model/laporan.model') const pelanggaranModel = require('../model/pelanggaran.model') const pemantauanModel = require('../model/pemantauan.model') const { validate } = require('../utils/validation') const { addManyDokumen } = require('../utils/dokumenFunction') const { cekSatuDataLaporan, cekBanyakDataLaporan } = require('../utils/cekData') exports.create = handleError(async (req, res) => { const isValid = validate(res, req.body, { no_laporan: 'string', pt_id: 'string', pelanggaran_id: 'string', keterangan: 'string', }) if (!isValid) return const { no_laporan, pt_id, keterangan } = req.body let { pelanggaran_id } = req.body const pt = await axios.get( `https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/${pt_id}` ) if (!pt) return response.error(res, { message: 'pt_id tidak ditemukan', }) const files = req.files let dokumen_id = [] if (files.length) { const dokumen = await addManyDokumen(files) dokumen_id = dokumen.map((e) => e._id) } pelanggaran_id = pelanggaran_id.split(',') const pelanggaran = await pelanggaranModel.find({ _id: { $in: pelanggaran_id, }, }) if (!pelanggaran.length) return response.error(res, { message: 'pelanggaran_id tidak ada' }) const user = req.user let data = { no_laporan, user: user._id, dokumen: dokumen_id, pt: pt[0], pelanggaran: pelanggaran_id, keterangan, role_data: user.role.id === 2020 ? 'dikti' : 'lldikti', } data = await laporanModel.create(data) await pemantauanModel.create({ laporan: data._id, pt_id: pt[0].id, user: user._id, keterangan: 'Membuat Laporan', dokumen: dokumen_id, for_pt: false, }) return response.success(res, { message: 'Berhasil menambah laporan', data, }) }) exports.getAll = handleError(async (req, res) => { const user = req.user let data = await cekBanyakDataLaporan(user) return response.success(res, { message: 'Berhasil ambil data laporan', data, }) }) exports.getOne = handleError(async (req, res) => { const { id } = req.params const user = req.user const data = await cekSatuDataLaporan(res, user, id) if (!data) return return response.success(res, { message: 'Berhasil ambil data Laporan', data: user, }) })