yazid138 há 3 anos atrás
pai
commit
9db336b639

+ 53 - 6
controller/laporan.controller.js

@@ -73,17 +73,15 @@ exports.create = handleError(async (req, res) => {
 exports.getAll = handleError(async (req, res) => {
   const user = req.user
   const where = {}
-  const { id, no_laporan, pt_id, jadwal, evaluasi } = req.query
-  if (id) where._id = id
+  const { no_laporan, pt_id, jadwal, evaluasi } = req.query
   if (no_laporan) where.no_laporan = no_laporan
   if (pt_id) where.pt.id = pt_id
-  if (jadwal === 'true')
+  if (jadwal === 'true') {
     where.jadwal = {
       $exists: true,
       $ne: null,
     }
-
-  if (evaluasi === 'true')
+  } else if (evaluasi === 'true') {
     where.evaluasi = {
       $exists: true,
       $ne: null,
@@ -91,7 +89,7 @@ exports.getAll = handleError(async (req, res) => {
         $size: 0,
       },
     }
-
+  }
   let data = await cekBanyakDataLaporan(user, where)
   return response.success(res, {
     message: 'Berhasil ambil data laporan',
@@ -109,3 +107,52 @@ exports.getOne = handleError(async (req, res) => {
     data,
   })
 })
+
+exports.update = handleError(async (req, res) => {
+  const { id } = req.params
+  const user = req.user
+  const laporan = await cekSatuDataLaporan(res, user, id)
+  if (!laporan) return
+
+  const isValid = validate(res, req.body, {
+    change_role: { type: 'string', optional: true, enum: ['true', 'false'] },
+    aktif: { type: 'string', optional: true, enum: ['true', 'false'] },
+  })
+  if (!isValid) return
+
+  const data = {}
+  let keterangan = ''
+  const { change_role, aktif } = req.body
+  if (change_role === 'true') {
+    data.role_data = user.role.id === 2020 ? 'lldikti' : 'dikti'
+    keterangan = `Delegasi ke ${user.role.id === 2020 ? 'LLDIKTI' : 'DIKTI'}`
+    if (laporan.jadwal) {
+      await laporanModel.findByIdAndUpdate(laporan._id, {
+        $unset: { jadwal: 1 },
+      })
+    }
+  }
+  if (aktif) {
+    data.aktif = aktif === 'true'
+    if (aktif === 'true') {
+      keterangan = 'Laporan dibuka'
+    } else {
+      keterangan = 'Laporan ditutup'
+    }
+  }
+
+  const update = await laporanModel.findByIdAndUpdate(laporan._id, data)
+  if (change_role || aktif) {
+    await pemantauanModel.create({
+      laporan: laporan._id,
+      pt_id: laporan.pt.id,
+      user: user._id,
+      keterangan,
+      for_pt: false,
+    })
+  }
+  return response.success(res, {
+    message: 'Berhasil update laporan',
+    data: update,
+  })
+})

+ 5 - 0
controller/pelanggaran.controller.js

@@ -4,7 +4,12 @@ const pelanggaranModel = require('../model/pelanggaran.model')
 
 exports.getAll = handleError(async (req, res) => {
   const user = req.user
+  let { id } = req.query
   const w = {}
+  if (id) {
+    id = id.split(',')
+    w._id = { $in: id }
+  }
   if (user.role.id === 2021) {
     w.level_sanksi = 1
   }

+ 5 - 2
controller/pemantauan.controller.js

@@ -22,6 +22,7 @@ exports.get = handleError(async (req, res) => {
     .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')
 
   return response.success(res, {
@@ -34,8 +35,10 @@ exports.getPT = handleError(async (req, res) => {
   const user = req.user
   const data = await pemantauanModel
     .find({ pt: user.lembaga.id, for_pt: true })
-    .populate({ path: 'riwayat.user', select: 'nama role isPublic isPrivate' })
-    .populate('riwayat.dokumen')
+    .populate({ path: 'user', select: 'nama role isPublic isPrivate' })
+    .populate({ path: 'laporan', select: 'no_laporan' })
+    .populate({ path: 'sanksi', select: 'no_sanksi' })
+    .populate('dokumen')
   return response.success(res, {
     message: 'Berhasil ambil data Pemantauan',
     data,

+ 29 - 2
controller/sanksi.controller.js

@@ -11,6 +11,7 @@ const {
   cekBanyakDataPelanggaran,
   cekBanyakDataSanksi,
 } = require('../utils/cekData')
+const laporanModel = require('../model/laporan.model')
 
 exports.create = handleError(async (req, res) => {
   const { no_sanksi, keterangan } = req.body
@@ -59,12 +60,13 @@ exports.create = handleError(async (req, res) => {
       keberatan: hariKerja(10),
     },
   })
+  await laporanModel.findByIdAndUpdate(laporan._id, { sanksi: data._id })
   await pemantauanModel.create({
     laporan: laporan._id,
     sanksi: data._id,
     pt_id: laporan.pt.id,
     user: user._id,
-    keterangan: 'Penetapan Sanksi',
+    keterangan: 'Melakukan penetapan Sanksi',
     dokumen: dokumen_id,
   })
   return response.success(res, {
@@ -75,7 +77,32 @@ exports.create = handleError(async (req, res) => {
 
 exports.getAll = handleError(async (req, res) => {
   const user = req.user
-  let data = await cekBanyakDataSanksi(user)
+  const { keberatan, jawaban, banding, cabutSanksi, perbaikan } = req.query
+  const where = {}
+  if (keberatan === 'true') {
+    where['pengajuan.keberatan'] = { $exists: true, $ne: null }
+    if (jawaban === 'true') {
+      where['jawaban.keberatan'] = { $exists: true, $ne: null }
+    }
+  } else if (banding === 'true') {
+    where['pengajuan.keberatan'] = { $exists: true, $ne: null }
+    where['jawaban.keberatan'] = { $exists: true, $ne: null }
+    where['pengajuan.banding'] = { $exists: true, $ne: null }
+    if (jawaban === 'true') {
+      where['jawaban.banding'] = { $exists: true, $ne: null }
+    }
+  } else if (cabutSanksi === 'true') {
+    where['pengajuan.cabut_sanksi'] = { $exists: true, $ne: null }
+    if (jawaban === 'true') {
+      where['jawaban.cabut_sanksi'] = { $exists: true, $ne: null }
+    }
+  } else if (perbaikan === 'true') {
+    where.$or = [
+      { 'jawaban.cabut_sanksi': { $exists: true, $ne: null } },
+      { 'jawaban.banding': { $exists: true, $ne: null } },
+    ]
+  }
+  const data = await cekBanyakDataSanksi(user, where)
   return response.success(res, {
     message: 'Berhasil ambil data Sanksi',
     data,

+ 1 - 0
model/laporan.model.js

@@ -10,6 +10,7 @@ module.exports = mongoose.model(
     {
       no_laporan: { type: String, unique: true },
       user: { type: Types.ObjectId, ref: user },
+      sanksi: { type: Types.ObjectId },
       pt: Object,
       keterangan: String,
       pelanggaran: [{ type: Types.ObjectId, ref: pelanggaran }],

+ 2 - 1
routes/v1/laporan/index.js

@@ -2,9 +2,10 @@ const router = require('express').Router()
 const laporan = require('../../../controller/laporan.controller')
 const handleDokumen = require('../../../utils/handleDokumen')
 
-router.post('/create', handleDokumen.array('dokumen'), laporan.create)
 router.get('/', laporan.getAll)
 router.get('/:id', laporan.getOne)
+router.post('/create', handleDokumen.array('dokumen'), laporan.create)
+router.put('/update/:id', laporan.update)
 
 router.use('/jadwal', require('./jadwal.routes'))
 router.use('/evaluasi', require('./evaluasi.routes'))

+ 0 - 1
routes/v1/pelanggaran.routes.js

@@ -3,6 +3,5 @@ const pelanggaran = require('../../controller/pelanggaran.controller')
 const roleId = require('../../middleware/role')
 
 router.get('/', roleId([2020, 2021]), pelanggaran.getAll)
-// router.get('/:id', roleId([2020, 2021]), pt.getOne)
 
 module.exports = router