andifebri 3 tahun lalu
induk
melakukan
19c6ec1416

+ 12 - 4
controller/laporan.controller.js

@@ -6,7 +6,7 @@ const pelanggaranModel = require('../model/pelanggaran.model')
 const pemantauanModel = require('../model/pemantauan.model')
 const { validate } = require('../utils/validation')
 const { notifWA } = require('../utils/notifFunction')
-const { addDokumen, addManyDokumen } = require('../utils/dokumenFunction')
+const { addManyDokumen } = require('../utils/dokumenFunction')
 const userModel = require('../model/user.model')
 const { cekSatuDataLaporan, cekBanyakDataLaporan } = require('../utils/cekData')
 
@@ -55,12 +55,14 @@ exports.create = handleError(async (req, res) => {
     pelanggaran: pelanggaran_id,
     keterangan,
     role_data: user.role.id === 2020 ? 'dikti' : 'lldikti',
+    role_asal: user.role.id === 2020 ? 'dikti' : 'lldikti',
     level: 2,
   }
 
   data = await laporanModel.create(data)
   await pemantauanModel.create({
     laporan: data._id,
+    action: 'CREATE LAPORAN',
     pt_id: pt[0].id,
     user: user._id,
     keterangan: 'Membuat Laporan',
@@ -227,12 +229,14 @@ exports.public = handleError(async (req, res) => {
     pelanggaran: pelanggaran_id,
     keterangan,
     role_data: 'dikti',
+    role_asal: 'dikti',
     level,
   }
 
   data = await laporanModel.create(data)
   await pemantauanModel.create({
     laporan: data._id,
+    action: 'CREATE LAPORAN',
     pt_id: pt[0].id,
     user: user._id,
     keterangan: 'Membuat Laporan',
@@ -262,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 (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,
@@ -290,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, {
@@ -325,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 },
@@ -344,6 +351,7 @@ exports.update = handleError(async (req, res) => {
   const update = await laporanModel.findByIdAndUpdate(laporan._id, data)
   if (change_role || aktif) {
     await pemantauanModel.create({
+      action: 'UPDATE LAPORAN',
       laporan: laporan._id,
       pt_id: laporan.pt.id,
       user: user._id,

+ 1 - 0
controller/laporan/evaluasi.controller.js

@@ -58,6 +58,7 @@ exports.add = handleError(async (req, res) => {
   await pemantauanModel.create({
     laporan: laporan._id,
     user: user._id,
+    action: 'ADD EVALUASI',
     pt_id: laporan.pt.id,
     keterangan: 'Melakukan evaluasi',
     dokumen: dokumen_id,

+ 10 - 8
controller/laporan/jadwal.controller.js

@@ -15,11 +15,17 @@ exports.update = handleError(async (req, res) => {
     warna: 'string',
   })
   if (!isValid) return
-
+  
   const { judul, dari_tanggal, sampai_tanggal, warna } = req.body
-
+  
   const laporan = await cekSatuDataLaporan(res, user, id)
   if (!laporan) return
+  
+  let for_public = true
+  if (laporan.jadwal) {
+    // message = 'Mengubah Jadwal Pemeriksaan'
+    for_public = false
+  }
 
   const data = await laporanModel.findByIdAndUpdate(
     laporan._id,
@@ -36,16 +42,12 @@ exports.update = handleError(async (req, res) => {
     }
   )
 
-  let message = 'Mengatur Jadwal Pemeriksaan'
-  let for_public = true
-  if (laporan.jadwal) {
-    message = 'Mengubah Jadwal Pemeriksaan'
-    for_public = false
-  }
+  let message = 'Membuat Jadwal Pemeriksaan'
 
   await pemantauanModel.create({
     laporan: laporan._id,
     user: user._id,
+    action: 'ADD JADWAL',
     pt_id: laporan.pt.id,
     keterangan: message,
     jadwal: {

+ 21 - 17
controller/pemantauan.controller.js

@@ -8,30 +8,34 @@ const userModel = require('../model/user.model')
 
 exports.get = handleError(async (req, res) => {
   const user = req.user
-  const { pt_id } = req.params
-
-  const pt = await axios.get(
-    `https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/${pt_id}`
-  )
-  if (!pt) {
-    return response.error(res, {
-      message: 'pt_id tidak ditemukan',
-    })
-  }
-  if (user.role.id === 2021 && user.lembaga.id !== pt[0].pembina.id) {
-    return response.error(res, {
-      message: 'pt_id tidak ditemukan',
-    })
-  }
+  const { laporan_id } = req.params
+  const { delegasi, asc } = req.query
+  // const pt = await axios.get(
+  //   `https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/${pt_id}`
+  // )
+  // if (!pt) {
+  //   return response.error(res, {
+  //     message: 'pt_id tidak ditemukan',
+  //   })
+  // }
+  // if (user.role.id === 2021 && user.lembaga.id !== pt[0].pembina.id) {
+  //   return response.error(res, {
+  //     message: 'pt_id tidak ditemukan',
+  //   })
+  // }
+  const where = {}
+  if (delegasi) where.delegasi = true
+  const laporan = await cekSatuDataLaporan(res, user, laporan_id, where)
+  if (!laporan) return
 
   const data = await pemantauanModel
-    .find({ pt_id })
+    .find({ laporan: laporan._id })
     .populate({ path: 'user', select: 'nama role isPublic isPrivate' })
     .populate({ path: 'sanksi', select: 'no_sanksi' })
     .populate({ path: 'laporan', select: 'no_laporan' })
     .populate({ path: 'sanksi', select: 'no_sanksi' })
     .populate('dokumen')
-    .sort({ createdAt: -1 })
+    .sort({ createdAt: asc == 'true' ? 1 : -1 })
 
   return response.success(res, {
     message: 'Berhasil ambil data Pemantauan',

+ 1 - 0
controller/sanksi.controller.js

@@ -65,6 +65,7 @@ exports.create = handleError(async (req, res) => {
   await pemantauanModel.create({
     laporan: laporan._id,
     sanksi: data._id,
+    action: 'CREATE SANKSI',
     pt_id: laporan.pt.id,
     user: user._id,
     keterangan: 'Melakukan penetapan Sanksi',

+ 3 - 0
controller/sanksi/banding.controller.js

@@ -46,6 +46,7 @@ exports.create = handleError(async (req, res) => {
   await pemantauanModel.create({
     laporan: sanksi.laporan._id,
     sanksi: sanksi._id,
+    action: 'ADD BANDING',
     pt_id: sanksi.laporan.pt.id,
     user: user._id,
     keterangan: 'Mengajukan Banding',
@@ -118,7 +119,9 @@ exports.createJawaban = handleError(async (req, res) => {
   await pemantauanModel.create({
     laporan: sanksi.laporan._id,
     sanksi: sanksi._id,
+    action: 'ADD BANDING JAWABAN',
     pt_id: sanksi.laporan.pt.id,
+    jawaban: status,
     user: user._id,
     keterangan: message,
     dokumen: dokumen_id,

+ 3 - 0
controller/sanksi/cabutSanksi.controller.js

@@ -42,6 +42,7 @@ exports.create = handleError(async (req, res) => {
   await pemantauanModel.create({
     laporan: sanksi.laporan._id,
     sanksi: sanksi._id,
+    action: 'ADD CABUTSANKSI',
     pt_id: sanksi.laporan.pt.id,
     user: user._id,
     keterangan: 'Mengajukan Pencabutan Sanksi',
@@ -105,6 +106,8 @@ exports.createJawaban = handleError(async (req, res) => {
   await pemantauanModel.create({
     laporan: sanksi.laporan._id,
     sanksi: sanksi._id,
+    action: 'ADD CABUTSANKSI JAWABAN',
+    jawaban: status,
     pt_id: sanksi.laporan.pt.id,
     user: user._id,
     keterangan: message,

+ 3 - 0
controller/sanksi/keberatan.controller.js

@@ -50,6 +50,7 @@ exports.create = handleError(async (req, res) => {
   await pemantauanModel.create({
     laporan: sanksi.laporan._id,
     sanksi: sanksi._id,
+    action: 'ADD KEBERATAN',
     user: user._id,
     pt_id: sanksi.laporan.pt.id,
     keterangan: 'Mengajukan Keberatan',
@@ -128,6 +129,8 @@ exports.createJawaban = handleError(async (req, res) => {
     laporan: sanksi.laporan._id,
     sanksi: sanksi._id,
     user: user._id,
+    action: 'ADD KEBERATAN JAWABAN',
+    jawaban: status,
     pt_id: sanksi.laporan.pt.id,
     keterangan: message,
     dokumen: dokumen_id,

+ 1 - 0
controller/sanksi/perbaikan.controller.js

@@ -55,6 +55,7 @@ exports.add = handleError(async (req, res) => {
   await pemantauanModel.create({
     laporan: sanksi.laporan._id,
     sanksi: sanksi._id,
+    action: 'ADD PERBAIKANDOKUMEN',
     user: user._id,
     pt_id: sanksi.laporan.pt.id,
     keterangan: 'Melakukan Perbaikan Dokumen',

+ 6 - 0
model/laporan.model.js

@@ -14,7 +14,13 @@ 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,
+        enum: ['dikti', 'lldikti'],
+        default: 'dikti',
+      },
       role_data: {
         type: String,
         enum: ['dikti', 'lldikti'],

+ 2 - 0
model/pemantauan.model.js

@@ -11,10 +11,12 @@ module.exports = mongoose.model(
     {
       laporan: { type: Types.ObjectId, ref: laporan },
       sanksi: { type: Types.ObjectId, ref: sanksi },
+      action: String,
       pt_id: String,
       user: { type: Types.ObjectId, ref: user },
       keterangan: String,
       alasan: String,
+      jawaban: String,
       dokumen: [{ type: Types.ObjectId, ref: dokumen }],
       jadwal: {
         dari_tanggal: Date,

+ 1 - 1
model/sanksi.model.js

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

+ 1 - 1
routes/v1/pemantauan.routes.js

@@ -3,6 +3,6 @@ const pemantauan = require('../../controller/pemantauan.controller')
 const roleId = require('../../middleware/role')
 
 router.get('/pt', roleId(2022), pemantauan.getPT)
-router.get('/:pt_id', roleId([2020, 2021]), pemantauan.get)
+router.get('/:laporan_id', roleId([2020, 2021]), pemantauan.get)
 
 module.exports = router

+ 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