|  | @@ -4,24 +4,26 @@ 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({ _id: laporan_id, ...where })
 | 
	
		
			
				|  |  | +    .findOne(w)
 | 
	
		
			
				|  |  |      .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)
 | 
	
		
			
				|  |  | -    )
 | 
	
		
			
				|  |  | -  ) {
 | 
	
		
			
				|  |  | +  if (!laporan) {
 | 
	
		
			
				|  |  |      response.error(res, {
 | 
	
		
			
				|  |  |        message: 'laporan_id tidak ada',
 | 
	
		
			
				|  |  |        code: 404,
 | 
	
	
		
			
				|  | @@ -32,8 +34,21 @@ exports.cekSatuDataLaporan = async (res, user, laporan_id, where = {}) => {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  exports.cekBanyakDataLaporan = async (user, where = {}) => {
 | 
	
		
			
				|  |  | -  let data = await laporanModel
 | 
	
		
			
				|  |  | -    .find({ aktif: true, ...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')
 | 
	
	
		
			
				|  | @@ -41,39 +56,34 @@ exports.cekBanyakDataLaporan = async (user, where = {}) => {
 | 
	
		
			
				|  |  |      .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 })
 | 
	
		
			
				|  |  | +  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')
 | 
	
		
			
				|  |  | -  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)
 | 
	
		
			
				|  |  | -    )
 | 
	
		
			
				|  |  | -  ) {
 | 
	
		
			
				|  |  | +  sanksi = sanksi.filter((e) => e.laporan !== null)
 | 
	
		
			
				|  |  | +  if (!sanksi) {
 | 
	
		
			
				|  |  |      response.error(res, {
 | 
	
		
			
				|  |  |        message: 'sanksi_id tidak ada',
 | 
	
		
			
				|  |  |        code: 404,
 | 
	
	
		
			
				|  | @@ -84,28 +94,29 @@ exports.cekSatuDataSanksi = async (res, user, sanksi_id, where = {}) => {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  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({ ...where })
 | 
	
		
			
				|  |  | +    .find({ aktif: true, ...where })
 | 
	
		
			
				|  |  |      .populate({
 | 
	
		
			
				|  |  |        path: 'laporan',
 | 
	
		
			
				|  |  | -      select: 'role_data aktif',
 | 
	
		
			
				|  |  | +      select: 'role_data aktif pt',
 | 
	
		
			
				|  |  | +      match: w,
 | 
	
		
			
				|  |  |      })
 | 
	
		
			
				|  |  |      .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)
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | +  data = data.filter((e) => e.laporan !== null)
 | 
	
		
			
				|  |  |    return data
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |