yazid138 3 years ago
parent
commit
d120340e98

+ 6 - 6
controller/laporan.controller.js

@@ -55,13 +55,13 @@ exports.create = handleError(async (req, res) => {
   }
 
   data = await laporanModel.create(data)
-  const pemantauan = await pemantauanModel.create({
+  await pemantauanModel.create({
     laporan: data._id,
-    riwayat: {
-      user: user._id,
-      keterangan: 'Membuat Laporan',
-      dokumen: dokumen_id,
-    },
+    pt_id: pt[0].id,
+    user: user._id,
+    keterangan: 'Membuat Laporan',
+    dokumen: dokumen_id,
+    for_pt: false,
   })
 
   return response.success(res, {

+ 8 - 14
controller/laporan/evaluasi.controller.js

@@ -49,20 +49,14 @@ exports.add = handleError(async (req, res) => {
       new: true,
     }
   )
-  await pemantauanModel.findOneAndUpdate(
-    {
-      laporan: laporan._id,
-    },
-    {
-      $push: {
-        riwayat: {
-          user: user._id,
-          keterangan: 'Melakukan evaluasi',
-          dokumen: dokumen_id,
-        },
-      },
-    }
-  )
+  await pemantauanModel.create({
+    laporan: laporan._id,
+    user: user._id,
+    pt_id: laporan.pt.id,
+    keterangan: 'Melakukan evaluasi',
+    dokumen: dokumen_id,
+    for_pt: false,
+  })
 
   return response.success(res, {
     message: 'Berhasil tambah evaluasi',

+ 9 - 16
controller/laporan/jadwal.controller.js

@@ -36,23 +36,16 @@ exports.update = handleError(async (req, res) => {
     }
   )
 
-  await pemantauanModel.findOneAndUpdate(
-    {
-      laporan: laporan._id,
+  await pemantauanModel.create({
+    laporan: laporan._id,
+    user: user._id,
+    pt_id: laporan.pt.id,
+    keterangan: 'Mengatur Jadwal',
+    jadwal: {
+      dari_tanggal,
+      sampai_tanggal,
     },
-    {
-      $push: {
-        riwayat: {
-          user: user._id,
-          keterangan: 'Mengatur Jadwal',
-          jadwal: {
-            dari_tanggal,
-            sampai_tanggal,
-          },
-        },
-      },
-    }
-  )
+  })
 
   return response.success(res, {
     message: 'Berhasil ubah jadwal',

+ 42 - 0
controller/pemantauan.controller.js

@@ -0,0 +1,42 @@
+const axios = require('../utils/axios')
+const handleError = require('../utils/handleError')
+const response = require('../utils/responseHandler')
+const pemantauanModel = require('../model/pemantauan.model')
+const { cekSatuDataLaporan, cekSatuDataSanksi } = require('../utils/cekData')
+
+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',
+    })
+  }
+
+  const data = await pemantauanModel
+    .find({ pt_id })
+    .populate({ path: 'user', select: 'nama role isPublic isPrivate' })
+    .populate('dokumen')
+
+  return response.success(res, {
+    message: 'Berhasil ambil data Pemantauan',
+    data,
+  })
+})
+
+exports.getPT = handleError(async (req, res) => {
+  const user = req.user
+  const { id } = req.params
+  const data = await pemantauanModel
+    .findOne({ $or: [{ laporan: id }, { sanksi: id }] })
+    .populate({ path: 'riwayat.user', select: 'nama role isPublic isPrivate' })
+    .populate('riwayat.dokumen')
+  return response.success(res, {
+    message: 'Berhasil ambil data Pemantauan',
+    data,
+  })
+})

+ 12 - 2
controller/pt.controller.js

@@ -3,7 +3,9 @@ const handleError = require('../utils/handleError')
 const response = require('../utils/responseHandler')
 
 exports.getAll = handleError(async (req, res) => {
-  const { search, pembina } = req.query
+  const user = req.user
+  const pembina = user.role.id === 2021 ? user.lembaga.id : req.query.pembina
+  const { search } = req.query
   let url = 'https://api.kemdikbud.go.id:8243/pddikti/1.2/pt'
   if (search || pembina) {
     url += '?'
@@ -20,10 +22,18 @@ exports.getAll = handleError(async (req, res) => {
 })
 
 exports.getOne = handleError(async (req, res) => {
+  const user = req.user
   const { id } = req.params
-  const data = await axios.get(
+  let data = await axios.get(
     `https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/${id}`
   )
+  data = data[0]
+  if (user.role.id === 2021 && data.pembina.id !== user.lembaga.id) {
+    return response.error(res, {
+      message: 'pt_id tidak ada',
+      code: 404,
+    })
+  }
   return response.success(res, {
     message: 'Berhasil mengambil satu data Perguruan Tinggi',
     data,

+ 8 - 15
controller/sanksi.controller.js

@@ -59,21 +59,14 @@ exports.create = handleError(async (req, res) => {
       keberatan: hariKerja(10),
     },
   })
-  await pemantauanModel.findOneAndUpdate(
-    {
-      laporan: laporan._id,
-      sanksi: data._id,
-    },
-    {
-      $push: {
-        riwayat: {
-          user: user._id,
-          keterangan: 'Penetapan Sanksi',
-          dokumen: dokumen_id,
-        },
-      },
-    }
-  )
+  await pemantauanModel.create({
+    laporan: laporan._id,
+    sanksi: data._id,
+    pt_id: laporan.pt.id,
+    user: user._id,
+    keterangan: 'Penetapan Sanksi',
+    dokumen: dokumen_id,
+  })
   return response.success(res, {
     message: 'Berhasil membuat Sanksi',
     data,

+ 16 - 30
controller/sanksi/banding.controller.js

@@ -48,21 +48,14 @@ exports.create = handleError(async (req, res) => {
       message: 'pengajuan banding sudah ada atau jawaban keberatan belum ada',
     })
   }
-  await pemantauanModel.findOneAndUpdate(
-    {
-      laporan: laporan._id,
-      sanksi: sanksi._id,
-    },
-    {
-      $push: {
-        riwayat: {
-          user: user._id,
-          keterangan: 'Mengajukan Banding',
-          dokumen: dokumen_id,
-        },
-      },
-    }
-  )
+  await pemantauanModel.create({
+    laporan: laporan._id,
+    sanksi: sanksi._id,
+    pt_id: laporan.pt.id,
+    user: user._id,
+    keterangan: 'Mengajukan Banding',
+    dokumen: dokumen_id,
+  })
   return response.success(res, {
     data,
     message: 'Berhasil menambah pengajuan banding',
@@ -116,21 +109,14 @@ exports.createJawaban = handleError(async (req, res) => {
       message: 'banding tidak ada',
     })
   }
-  await pemantauanModel.findOneAndUpdate(
-    {
-      laporan: laporan._id,
-      sanksi: sanksi._id,
-    },
-    {
-      $push: {
-        riwayat: {
-          user: user._id,
-          keterangan: 'Menjawab Pengajuan Banding',
-          dokumen: dokumen_id,
-        },
-      },
-    }
-  )
+  await pemantauanModel.create({
+    laporan: laporan._id,
+    sanksi: sanksi._id,
+    pt_id: laporan.pt.id,
+    user: user._id,
+    keterangan: 'Menjawab Pengajuan Banding',
+    dokumen: dokumen_id,
+  })
   return response.success(res, {
     data,
   })

+ 16 - 30
controller/sanksi/cabutSanksi.controller.js

@@ -45,21 +45,14 @@ exports.create = handleError(async (req, res) => {
       message: 'cabut_sanksi sudah ada',
     })
   }
-  await pemantauanModel.findOneAndUpdate(
-    {
-      laporan: laporan._id,
-      sanksi: sanksi._id,
-    },
-    {
-      $push: {
-        riwayat: {
-          user: user._id,
-          keterangan: 'Mengajukan Pencabutan Sanksi',
-          dokumen: dokumen_id,
-        },
-      },
-    }
-  )
+  await pemantauanModel.create({
+    laporan: laporan._id,
+    sanksi: sanksi._id,
+    pt_id: laporan.pt.id,
+    user: user._id,
+    keterangan: 'Mengajukan Pencabutan Sanksi',
+    dokumen: dokumen_id,
+  })
   return response.success(res, {
     data,
     message: 'Berhasil menambah cabut_sanksi',
@@ -113,21 +106,14 @@ exports.createJawaban = handleError(async (req, res) => {
       message: 'cabut_sanksi tidak ada',
     })
   }
-  await pemantauanModel.findOneAndUpdate(
-    {
-      laporan: laporan._id,
-      sanksi: sanksi._id,
-    },
-    {
-      $push: {
-        riwayat: {
-          user: user._id,
-          keterangan: 'Menjawab Pengajuan Pencabutan Sanksi',
-          dokumen: dokumen_id,
-        },
-      },
-    }
-  )
+  await pemantauanModel.create({
+    laporan: laporan._id,
+    sanksi: sanksi._id,
+    pt_id: laporan.pt.id,
+    user: user._id,
+    keterangan: 'Menjawab Pengajuan Pencabutan Sanksi',
+    dokumen: dokumen_id,
+  })
   return response.success(res, {
     data,
   })

+ 16 - 30
controller/sanksi/keberatan.controller.js

@@ -47,21 +47,14 @@ exports.create = handleError(async (req, res) => {
       message: 'Pengajuan Keberatan sudah ada',
     })
   }
-  await pemantauanModel.findOneAndUpdate(
-    {
-      laporan: laporan._id,
-      sanksi: sanksi._id,
-    },
-    {
-      $push: {
-        riwayat: {
-          user: user._id,
-          keterangan: 'Mengajukan Keberatan',
-          dokumen: dokumen_id,
-        },
-      },
-    }
-  )
+  await pemantauanModel.create({
+    laporan: laporan._id,
+    sanksi: sanksi._id,
+    user: user._id,
+    pt_id: laporan.pt.id,
+    keterangan: 'Mengajukan Keberatan',
+    dokumen: dokumen_id,
+  })
   return response.success(res, {
     data,
     message: 'Berhasil menambah keberatan',
@@ -116,21 +109,14 @@ exports.createJawaban = handleError(async (req, res) => {
       message: 'keberatan tidak ada',
     })
   }
-  await pemantauanModel.findOneAndUpdate(
-    {
-      laporan: laporan._id,
-      sanksi: sanksi._id,
-    },
-    {
-      $push: {
-        riwayat: {
-          user: user._id,
-          keterangan: 'Menjawab Pengajuan Keberatan',
-          dokumen: dokumen_id,
-        },
-      },
-    }
-  )
+  await pemantauanModel.create({
+    laporan: laporan._id,
+    sanksi: sanksi._id,
+    user: user._id,
+    pt_id: laporan.pt.id,
+    keterangan: 'Menjawab Pengajuan Keberatan',
+    dokumen: dokumen_id,
+  })
   return response.success(res, {
     data,
   })

+ 8 - 15
controller/sanksi/perbaikan.controller.js

@@ -57,21 +57,14 @@ exports.add = handleError(async (req, res) => {
       message: 'Pengajuan banding atau cabut sanksi tidak ada',
     })
   }
-  await pemantauanModel.findOneAndUpdate(
-    {
-      laporan: laporan._id,
-      sanksi: sanksi._id,
-    },
-    {
-      $push: {
-        riwayat: {
-          user: user._id,
-          keterangan: 'Melakukan Perbaikan Dokumen',
-          dokumen: dokumen_id,
-        },
-      },
-    }
-  )
+  await pemantauanModel.findOneAndUpdate({
+    laporan: laporan._id,
+    sanksi: sanksi._id,
+    user: user._id,
+    pt_id: laporan.pt.id,
+    keterangan: 'Melakukan Perbaikan Dokumen',
+    dokumen: dokumen_id,
+  })
   return response.success(res, {
     data,
     message: 'Berhasil menambah Perbaikan',

+ 19 - 20
model/pemantauan.model.js

@@ -4,25 +4,24 @@ const dokumen = require('./dokumen.model')
 const laporan = require('./laporan.model')
 const sanksi = require('./sanksi.model')
 const user = require('./user.model')
-const riwayatSchema = (module.exports = mongoose.model(
+
+module.exports = mongoose.model(
   'Pemantauan',
-  new Schema({
-    laporan: { type: Types.ObjectId, ref: laporan },
-    sanksi: { type: Types.ObjectId, ref: sanksi },
-    riwayat: [
-      new Schema(
-        {
-          user: { type: Types.ObjectId, ref: user },
-          keterangan: String,
-          dokumen: [{ type: Types.ObjectId, ref: dokumen }],
-          jadwal: {
-            dari_tanggal: Date,
-            sampai_tanggal: Date,
-          },
-        },
-        { timestamps: true }
-      ),
-    ],
-  }),
+  new Schema(
+    {
+      laporan: { type: Types.ObjectId, ref: laporan },
+      sanksi: { type: Types.ObjectId, ref: sanksi },
+      pt_id: String,
+      user: { type: Types.ObjectId, ref: user },
+      keterangan: String,
+      dokumen: [{ type: Types.ObjectId, ref: dokumen }],
+      jadwal: {
+        dari_tanggal: Date,
+        sampai_tanggal: Date,
+      },
+      for_pt: { type: Boolean, default: true },
+    },
+    { timestamps: true }
+  ),
   'pemantauan'
-))
+)

+ 2 - 1
routes/v1/index.js

@@ -14,6 +14,7 @@ router.use('/sanksi', auth, require('./sanksi'))
 router.use('/public', require('./public.routes'))
 router.use('/auth', require('./auth.routes'))
 router.use('/user', auth, require('./user.routes'))
-router.use('/pt', require('./pt.routes'))
+router.use('/pemantauan', auth, require('./pemantauan.routes'))
+router.use('/pt', auth, roleId([2020, 2021]), require('./pt.routes'))
 
 module.exports = router

+ 8 - 0
routes/v1/pemantauan.routes.js

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