yazid138 преди 3 години
родител
ревизия
201fd79ebb
променени са 3 файла, в които са добавени 39 реда и са изтрити 10 реда
  1. 5 2
      controller/laporan.controller.js
  2. 1 0
      model/laporan.model.js
  3. 33 8
      utils/cekData.js

+ 5 - 2
controller/laporan.controller.js

@@ -266,10 +266,11 @@ exports.public = handleError(async (req, res) => {
 exports.getAll = handleError(async (req, res) => {
   const user = req.user
   const where = {}
-  const { no_laporan, pt_id, jadwal, evaluasi, aktif } = req.query
+  const { no_laporan, pt_id, jadwal, evaluasi, aktif, delegasi } = req.query
   if (no_laporan) where.no_laporan = no_laporan
   if (pt_id) where['pt.id'] = pt_id
   if (aktif) where.aktif = aktif === 'true'
+  if (delegasi) where.delegasi = delegasi === 'true'
   if (jadwal === 'true') {
     where.jadwal = {
       $exists: true,
@@ -294,9 +295,10 @@ exports.getAll = handleError(async (req, res) => {
 exports.getOne = handleError(async (req, res) => {
   const { id } = req.params
   const user = req.user
-  const { aktif } = req.query
+  const { aktif, delegasi } = req.query
   const where = {}
   if (aktif) where.aktif = aktif === 'true'
+  if (delegasi) where.delegasi = delegasi === 'true'
   const data = await cekSatuDataLaporan(res, user, id, where)
   if (!data) return
   return response.success(res, {
@@ -329,6 +331,7 @@ exports.update = handleError(async (req, res) => {
       user.role.id === 2020 ? 'LLDIKTI' : 'DIKTI'
     }`
     alasan = keterangan2
+    data.alasan_delegasi = keterangan2
     if (laporan.jadwal) {
       await laporanModel.findByIdAndUpdate(laporan._id, {
         $unset: { jadwal: 1 },

+ 1 - 0
model/laporan.model.js

@@ -14,6 +14,7 @@ module.exports = mongoose.model(
       pt: Object,
       keterangan: String,
       pelanggaran: [{ type: Types.ObjectId, ref: pelanggaran }],
+      alasan_delegasi: String,
       level: { type: Number, enum: [1, 2, 3] },
       role_asal: {
         type: String,

+ 33 - 8
utils/cekData.js

@@ -3,16 +3,31 @@ 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 = {}) => {
+exports.cekSatuDataLaporan = async (
+  res,
+  user,
+  laporan_id,
+  where = { delegasi: false }
+) => {
   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'
+      if (!where.delegasi) w.role_data = 'dikti'
+      else {
+        w.role_data = 'lldikti'
+        w.role_asal = 'dikti'
+      }
       break
     case 2021:
-      w.role_data = 'lldikti'
-      w['pt.pembina.id'] = user.lembaga.id
+      if (!where.delegasi) {
+        w.role_data = 'lldikti'
+        w['pt.pembina.id'] = user.lembaga.id
+      } else {
+        w.role_asal = 'lldikti'
+        w.role_data = 'dikti'
+        w['pt.pembina.id'] = user.lembaga.id
+      }
       break
     case 2022:
       w['pt.id'] = user.lembaga.id
@@ -34,16 +49,26 @@ exports.cekSatuDataLaporan = async (res, user, laporan_id, where = {}) => {
   return laporan
 }
 
-exports.cekBanyakDataLaporan = async (user, where = {}) => {
+exports.cekBanyakDataLaporan = async (user, where = { delegasi: false }) => {
   const w = { aktif: true, ...where }
   if (where.aktif === false) w.aktif = false
   switch (user.role.id) {
     case 2020:
-      w.role_data = 'dikti'
+      if (!where.delegasi) w.role_data = 'dikti'
+      else {
+        w.role_data = 'lldikti'
+        w.role_asal = 'dikti'
+      }
       break
     case 2021:
-      w.role_data = 'lldikti'
-      w['pt.pembina.id'] = user.lembaga.id
+      if (!where.delegasi) {
+        w.role_data = 'lldikti'
+        w['pt.pembina.id'] = user.lembaga.id
+      } else {
+        w.role_asal = 'lldikti'
+        w.role_data = 'dikti'
+        w['pt.pembina.id'] = user.lembaga.id
+      }
       break
     case 2022:
       w['pt.id'] = user.lembaga.id