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 w = { _id: laporan_id, aktif: true, ...where } switch (user.role.id) { case 2020: w.role_data = 'dikti' break case 2021: w.role_data = 'lldikti' w['pt.pembina.id'] = user.lembaga.id break case 2022: w['pt.id'] = user.lembaga.id break } const laporan = await laporanModel .findOne(w) .populate('user') .populate('pelanggaran') .populate('dokumen') .populate('evaluasi.dokumen') if (!laporan) { response.error(res, { message: 'laporan_id tidak ada', code: 404, }) return false } return laporan } exports.cekBanyakDataLaporan = async (user, where = {}) => { const w = { aktif: true, ...where } switch (user.role.id) { case 2020: w.role_data = 'dikti' break case 2021: w.role_data = 'lldikti' w['pt.pembina.id'] = user.lembaga.id break case 2022: w['pt.id'] = user.lembaga.id break } const data = await laporanModel .find(w) .populate('user') .populate('pelanggaran') .populate('dokumen') .populate('evaluasi.dokumen') .sort({ createdAt: -1, }) return data } exports.cekSatuDataSanksi = async (res, user, sanksi_id, where = {}) => { const w = { aktif: true } switch (user.role.id) { case 2020: w.role_data = 'dikti' break case 2021: w.role_data = 'lldikti' w['pt.pembina.id'] = user.lembaga.id break case 2022: w['pt.id'] = user.lembaga.id break } let sanksi = await sanksiModel .findOne({ _id: sanksi_id, aktif: true, ...where }) .populate({ path: 'laporan', select: 'pt role_data aktif', match: w, }) .populate('dokumen') .populate('pelanggaran') .populate('keberatan.dokumen') .populate('jawaban.keberatan.dokumen') .populate('banding.dokumen') .populate('jawaban.banding.dokumen') if (!sanksi?.laporan) { response.error(res, { message: 'sanksi_id tidak ada', code: 404, }) return false } return sanksi } exports.cekBanyakDataSanksi = async (user, where = {}) => { const w = { aktif: true } switch (user.role.id) { case 2020: w.role_data = 'dikti' break case 2021: w['role_data'] = 'lldikti' w['pt.pembina.id'] = user.lembaga.id break case 2022: w['pt.id'] = user.lembaga.id break } let data = await sanksiModel .find({ aktif: true, ...where }) .populate({ path: 'laporan', select: 'role_data aktif pt', match: w, }) .populate('dokumen') .populate('pelanggaran') .populate('keberatan.dokumen') .populate('jawaban.keberatan.dokumen') .populate('banding.dokumen') .populate('jawaban.banding.dokumen') data = data.filter((e) => e.laporan !== null) 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) }