const handleError = require('../utils/handleError') const response = require('../utils/responseHandler') const laporanModel = require('../model/laporan.model') const userModel = require('../model/user.model') const { validate } = require('../utils/validation') const axios = require('axios') const https = require('https') const { addManyDokumen } = require('../utils/dokumenFunction') exports.create = handleError(async (req, res) => { const httpsAgent = new https.Agent({ rejectUnauthorized: false, }) req.body.dokumen = req.files const isValid = validate(res, req.body, { no_laporan: 'string', user_id: 'string', pt_id: 'string', pelanggaran_id: 'string', keterangan: 'string', is_public: { type: 'boolean', convert: true }, dokumen: { type: 'array', items: 'object' }, }) if (!isValid) return const { no_laporan, pt_id, user_id, keterangan, pelanggaran_id, role_data, is_public, } = req.body const url = `https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/${pt_id}` const responseAxios = await axios.get(url, { headers: { Authorization: `Bearer ${process.env.TOKEN}`, }, httpsAgent, }) const pt = responseAxios.data[0] let user = {} if (!is_public) { user = await userModel.findOne({ user_id: user_id, }) } const dokumen = await addManyDokumen(req.files) const dokumen_id = dokumen.map((e) => e._id) let data = { no_laporan, user: user._id || user_id, dokumen: dokumen_id, pt, pelanggaran: pelanggaran_id.split(',').map((e) => e), keterangan, } if (role_data) data.role_data = role_data data = await laporanModel.create(data) return response.success(res, { message: 'Berhasil menambah laporan', data, }) }) exports.getAll = handleError(async (req, res) => { const data = await laporanModel .find() .populate('user') .populate('pelanggaran') .populate('dokumen') return response.success(res, { message: '', data, }) }) exports.getOne = handleError(async (req, res) => { const { id } = req.params const user_id = req.data const user = await userModel.findOne({ user_id: user_id, }) const data = await laporanModel .findOne({ _id: id, user: user._id }) .populate('user') .populate('pelanggaran') .populate('dokumen') return response.success(res, { message: '', data, }) })