const laporanModel = require('../model/laporan.model') const pelanggaranModel = require('../model/pelanggaran.model') const sanksiModel = require('../model/sanksi.model') const response = require('../utils/responseHandler') exports.cekSatuDataLaporan = async (res, user, laporan_id, where = {}) => { const laporan = await laporanModel .findOne({ _id: laporan_id, ...where }) .populate('user') .populate('pelanggaran') .populate('dokumen') .populate('evaluasi.dokumen') if ( laporan && !( (user.role.id === 2021 && laporan.role_data === 'lldikti' && laporan.pt.pembina.id === user.lembaga.id && laporan.aktif === true) || (user.role.id === 2020 && laporan.role_data === 'dikti' && laporan.aktif === true) ) ) { response.error(res, { message: 'laporan_id tidak ada', code: 404, }) return false } return laporan } exports.cekBanyakDataLaporan = async (user, where = {}) => { let data = await laporanModel .find({ aktif: true, ...where }) .populate('user') .populate('pelanggaran') .populate('dokumen') .populate('evaluasi.dokumen') .sort({ createdAt: -1, }) if (user.role.id !== 2020) { data = data.filter( (e) => e.role_data === 'lldikti' && e.pt.pembina.id === user.lembaga.id ) } else { data = data.filter((e) => e.role_data === 'dikti') } return data } exports.cekSatuDataSanksi = async (res, user, sanksi_id, where = {}) => { const sanksi = await sanksiModel .findOne({ _id: sanksi_id, ...where }) .populate({ path: 'laporan', select: 'pt role_data aktif', }) .populate('dokumen') .populate('pelanggaran') if ( sanksi && !( (user.role.id === 2021 && sanksi.laporan.role_data === 'lldikti' && sanksi.pt.pembina.id === user.lembaga.id && sanksi.laporan.aktif === true) || (user.role.id === 2020 && sanksi.laporan.role_data === 'dikti' && sanksi.laporan.aktif === true) || (user.role.id === 2022 && sanksi.pt.id === user.lembaga.id) ) ) { response.error(res, { message: 'sanksi_id tidak ada', code: 404, }) return false } return sanksi } exports.cekBanyakDataSanksi = async (user, where = {}) => { let data = await sanksiModel .find({ ...where }) .populate({ path: 'laporan', select: 'role_data aktif', }) .populate('dokumen') .populate('pelanggaran') if (user.role.id === 2021) { data = data.filter( (e) => e.laporan.role_data === 'lldikti' && e.pt.pembina.id === user.lembaga.id && e.laporan.aktif === true ) } else if (user.role.id === 2020) { data = data.filter( (e) => e.laporan.role_data === 'dikti' && e.laporan.aktif === true ) } else { data = data.filter((e) => e.pt.id === user.lembaga.id) } return data } exports.cekBanyakDataDokumen = async (res, files) => { if (!files.length) { response.error(res, { message: 'dokumen harus ada', }) return false } const dokumen = await addManyDokumen(files) return dokumen.map((e) => e._id) } exports.cekBanyakDataPelanggaran = async (res, pelanggaran_id) => { id_pelanggaran = pelanggaran_id.split(',') const pelanggaran = await pelanggaranModel.find({ _id: { $in: id_pelanggaran, }, }) if (!pelanggaran.length) { response.error(res, { message: 'pelanggaran_id tidak ada' }) return false } return pelanggaran.map((e) => e._id) }