const axios = require('../utils/axios') const handleError = require('../utils/handleError') const response = require('../utils/responseHandler') const pemantauanModel = require('../model/pemantauan.model') const { cekSatuDataLaporan, cekSatuDataSanksi } = require('../utils/cekData') const laporanModel = require('../model/laporan.model') const userModel = require('../model/user.model') exports.get = handleError(async (req, res) => { const user = req.user const { laporan_id } = req.params const { delegasi, asc, all } = req.query // 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', // }) // } // if (user.role.id === 2021 && user.lembaga.id !== pt[0].pembina.id) { // return response.error(res, { // message: 'pt_id tidak ditemukan', // }) // } const where = {} if (delegasi) where.delegasi = true if (all) where.all = true const laporan = await cekSatuDataLaporan(res, user, laporan_id, where) if (!laporan) return const data = await pemantauanModel .find({ laporan: laporan._id }) .populate({ path: 'user', select: 'nama role isPublic isPrivate' }) .populate({ path: 'sanksi', select: 'no_sanksi' }) .populate({ path: 'laporan', select: 'no_laporan' }) .populate({ path: 'sanksi', select: 'no_sanksi' }) .populate('dokumen') .sort({ createdAt: asc == 'true' ? 1 : -1 }) return response.success(res, { message: 'Berhasil ambil data Pemantauan', data, }) }) exports.getPT = handleError(async (req, res) => { const user = req.user const data = await pemantauanModel .find({ pt_id: user.lembaga.id, for_pt: true }) .populate({ path: 'user', select: 'nama role isPublic isPrivate' }) .populate({ path: 'laporan', select: 'no_laporan' }) .populate({ path: 'sanksi', select: 'no_sanksi' }) .populate('dokumen') .sort({ createdAt: -1 }) return response.success(res, { message: 'Berhasil ambil data Pemantauan', data, }) }) exports.public = handleError(async (req, res) => { const { no_laporan } = req.query if (!no_laporan) { return response.error(res, { message: 'query no_hp dan no_laporan harus ada', }) } const laporan = await laporanModel .findOne({ no_laporan, }) .populate('dokumen') .populate({ path: 'pelanggaran', select: 'pelanggaran' }) .select( 'no_laporan pt.nama keterangan pelanggaran createdAt aktif role_data user' ) const user = laporan && (await userModel.findById(laporan.user)) if (!laporan || !user?.isPublic) { return response.error(res, { message: 'laporan tidak ada', }) } const data = await pemantauanModel .find({ laporan, for_public: true }) .populate({ path: 'user', select: 'nama isPublic role' }) .select('user keterangan laporan sanksi') .populate({ path: 'laporan', select: 'no_laporan' }) .populate({ path: 'sanksi', select: 'no_sanksi' }) return response.success(res, { message: 'tes', data: { laporan, pemantauan: data }, }) })