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 } if (where.aktif === false) w.aktif = false 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({ path: 'user', populate: 'foto' }) .populate({ path: 'pelanggaran', select: '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 } if (where.aktif === false) w.aktif = false 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') .select(' -pelanggaran -aktif -dokumen') .sort({ createdAt: -1, }) return data } exports.cekSatuDataSanksi = async ( res, user, sanksi_id, where = { banding: false } ) => { const w = { aktif: true } switch (user.role.id) { case 2020: if (!where.banding) 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('pengajuan.keberatan.dokumen') .populate('jawaban.keberatan.dokumen') .populate('pengajuan.banding.dokumen') .populate('jawaban.banding.dokumen') .populate('pengajuan.cabut_sanksi.dokumen') .populate('jawaban.cabut_sanksi.dokumen') .populate('perbaikan.dokumen') if (!sanksi?.laporan) { response.error(res, { message: 'sanksi_id tidak ada', code: 404, }) return false } return sanksi } exports.cekBanyakDataSanksi = async (user, where = { banding: false }) => { const w = { aktif: true } switch (user.role.id) { case 2020: if (!where.banding) { 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: 'pt', match: w, }) .select('-batas_waktu -aktif -dokumen -pelanggaran') .sort({ createdAt: -1, }) 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) }