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 { pt_id } = req.params 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 data = await pemantauanModel .find({ pt_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: -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_hp, no_laporan } = req.query if (!no_hp || !no_laporan) { return response.error(res, { message: 'query no_hp dan no_laporan harus ada', }) } const user = await userModel.find({ no_hp }) if (!user.length) { return response.error(res, { message: 'user tidak ditemukan', }) } const user_id = user.map((e) => e._id) const laporan = await laporanModel .findOne({ no_laporan, user: { $in: user_id }, }) .populate('dokumen') .populate({ path: 'pelanggaran', select: 'pelanggaran' }) .select( 'no_laporan pt.nama keterangan pelanggaran createdAt aktif role_data' ) if (!laporan) { 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 }, }) })