yazid138 преди 3 години
родител
ревизия
5cd089d99f
променени са 6 файла, в които са добавени 71 реда и са изтрити 63 реда
  1. 1 1
      controller/keberatan.controller.js
  2. 3 4
      controller/laporan.controller.js
  3. 0 1
      controller/sanksi.controller.js
  4. 0 1
      model/sanksi.model.js
  5. 2 2
      routes/v1/sanksi/keberatan.routes.js
  6. 65 54
      utils/cekData.js

+ 1 - 1
controller/keberatan.controller.js

@@ -2,7 +2,7 @@ const handleError = require('../utils/handleError')
 const sanksiModel = require('../model/sanksi.model')
 const { validate } = require('../utils/validation')
 const { addManyDokumen } = require('../utils/dokumenFunction')
-const { cekSatuDataSanksi } = require('../utils/cekData')
+const { cekSatuDataSanksi, cekSatuDataLaporan } = require('../utils/cekData')
 const response = require('../utils/responseHandler')
 
 exports.create = handleError(async (req, res) => {

+ 3 - 4
controller/laporan.controller.js

@@ -13,11 +13,10 @@ exports.create = handleError(async (req, res) => {
     pt_id: 'string',
     pelanggaran_id: 'string',
     keterangan: 'string',
-    role_data: { type: 'string', optional: true, enum: ['lldikti', 'dikti'] },
   })
   if (!isValid) return
 
-  const { no_laporan, pt_id, keterangan, role_data } = req.body
+  const { no_laporan, pt_id, keterangan } = req.body
   let { pelanggaran_id } = req.body
   const pt = await axios.get(
     `https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/${pt_id}`
@@ -48,11 +47,11 @@ exports.create = handleError(async (req, res) => {
     no_laporan,
     user: user._id,
     dokumen: dokumen_id,
-    pt,
+    pt: pt[0],
     pelanggaran: pelanggaran_id,
     keterangan,
+    role_data: user.role.id === 2020 ? 'dikti' : 'lldikti',
   }
-  if (role_data) data.role_data = role_data
 
   data = await laporanModel.create(data)
 

+ 0 - 1
controller/sanksi.controller.js

@@ -52,7 +52,6 @@ exports.create = handleError(async (req, res) => {
   const data = await sanksiModel.create({
     no_sanksi,
     laporan: laporan._id,
-    pt: laporan.pt[0],
     pelanggaran: pelanggaran_id,
     keterangan,
     dokumen: dokumen_id,

+ 0 - 1
model/sanksi.model.js

@@ -11,7 +11,6 @@ module.exports = mongoose.model(
     {
       no_sanksi: String,
       laporan: { type: Types.ObjectId, unique: true, ref: laporan },
-      pt: Object,
       pelanggaran: [{ type: Types.ObjectId, ref: pelanggaran }],
       keterangan: String,
       aktif: { type: Boolean, default: true },

+ 2 - 2
routes/v1/sanksi/keberatan.routes.js

@@ -5,14 +5,14 @@ const roleId = require('../../../middleware/role')
 
 router.post(
   '/create',
-  roleId([2020, 2021]),
+  roleId(2022),
   handleDokumen.array('dokumen'),
   keberatan.create
 )
 
 router.post(
   '/jawaban/create',
-  roleId(2022),
+  roleId([2020, 2021]),
   handleDokumen.array('dokumen'),
   keberatan.createJawaban
 )

+ 65 - 54
utils/cekData.js

@@ -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
 }