yazid138 hace 3 años
padre
commit
f11a4716bd

+ 1 - 1
app.js

@@ -18,7 +18,7 @@ app.use(express.static(path.join(__dirname, 'public')))
 
 // route version
 app.use('/v1', require('./routes/v1'))
-app.get('/dokumen/:id', dokumenController.getDokumen)
+app.get('/dokumen/:id/:nama_file', dokumenController.getDokumen)
 
 app.use((req, res) =>
   response.error(res, { code: 404, message: 'request not found' })

+ 1 - 1
controller/laporan/jadwal.controller.js

@@ -40,7 +40,7 @@ exports.update = handleError(async (req, res) => {
     laporan: laporan._id,
     user: user._id,
     pt_id: laporan.pt.id,
-    keterangan: 'Mengatur Jadwal',
+    keterangan: 'Mengatur Jadwal Pemeriksaan',
     jadwal: {
       dari_tanggal,
       sampai_tanggal,

+ 7 - 0
controller/pemantauan.controller.js

@@ -16,6 +16,11 @@ exports.get = handleError(async (req, 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 data = await pemantauanModel
     .find({ pt_id })
@@ -24,6 +29,7 @@ exports.get = handleError(async (req, res) => {
     .populate({ path: 'laporan', select: 'no_laporan' })
     .populate({ path: 'sanksi', select: 'no_sanksi' })
     .populate('dokumen')
+    .sort({ createdAt: -1 })
 
   return response.success(res, {
     message: 'Berhasil ambil data Pemantauan',
@@ -39,6 +45,7 @@ exports.getPT = handleError(async (req, res) => {
     .populate({ path: 'laporan', select: 'no_laporan' })
     .populate({ path: 'sanksi', select: 'no_sanksi' })
     .populate('dokumen')
+    .sort({ createdAt: -1 })
   return response.success(res, {
     message: 'Berhasil ambil data Pemantauan',
     data,

+ 11 - 1
controller/sanksi.controller.js

@@ -85,6 +85,7 @@ exports.getAll = handleError(async (req, res) => {
       where['jawaban.keberatan'] = { $exists: true, $ne: null }
     }
   } else if (banding === 'true') {
+    where.banding = true
     where['pengajuan.keberatan'] = { $exists: true, $ne: null }
     where['jawaban.keberatan'] = { $exists: true, $ne: null }
     where['pengajuan.banding'] = { $exists: true, $ne: null }
@@ -113,7 +114,16 @@ exports.getOne = handleError(async (req, res) => {
   const user = req.user
   const { sanksi_id } = req.params
 
-  const sanksi = await cekSatuDataSanksi(res, user, sanksi_id)
+  const w = {}
+  const { banding } = req.query
+  if (banding === 'true') {
+    w.banding = true
+    w['pengajuan.keberatan'] = { $exists: true, $ne: null }
+    w['jawaban.keberatan'] = { $exists: true, $ne: null }
+    w['pengajuan.banding'] = { $exists: true, $ne: null }
+  }
+
+  const sanksi = await cekSatuDataSanksi(res, user, sanksi_id, w)
   if (!sanksi) return
 
   return response.success(res, {

+ 21 - 34
controller/sanksi/banding.controller.js

@@ -2,23 +2,17 @@ const handleError = require('../../utils/handleError')
 const sanksiModel = require('../../model/sanksi.model')
 const { addManyDokumen } = require('../../utils/dokumenFunction')
 const { validate } = require('../../utils/validation')
-const { cekSatuDataSanksi, cekSatuDataLaporan } = require('../../utils/cekData')
+const { cekSatuDataSanksi } = require('../../utils/cekData')
 const response = require('../../utils/responseHandler')
-const hariKerja = require('../../utils/hariKerja')
+const { hariKerja } = require('../../utils/hariKerja')
 const pemantauanModel = require('../../model/pemantauan.model')
 
 exports.create = handleError(async (req, res) => {
   const user = req.user
-  const { laporan_id, sanksi_id } = req.query
-  if (!laporan_id || !sanksi_id) {
-    return response.error(res, {
-      message: 'query laporan_id atau sanksi_id harus ada',
-    })
-  }
+  const { sanksi_id } = req.params
 
-  const laporan = await cekSatuDataLaporan(res, user, laporan_id)
   const sanksi = await cekSatuDataSanksi(res, user, sanksi_id)
-  if (!laporan || !sanksi) return
+  if (!sanksi) return
 
   const files = req.files
   if (!files?.length) {
@@ -31,7 +25,7 @@ exports.create = handleError(async (req, res) => {
 
   const data = await sanksiModel.findOneAndUpdate(
     {
-      laporan: laporan._id,
+      laporan: sanksi.laporan._id,
       _id: sanksi._id,
       ['pengajuan.banding']: { $exists: false, $eq: null },
       ['jawaban.keberatan']: { $exists: true, $ne: null },
@@ -49,9 +43,9 @@ exports.create = handleError(async (req, res) => {
     })
   }
   await pemantauanModel.create({
-    laporan: laporan._id,
+    laporan: sanksi.laporan._id,
     sanksi: sanksi._id,
-    pt_id: laporan.pt.id,
+    pt_id: sanksi.laporan.pt.id,
     user: user._id,
     keterangan: 'Mengajukan Banding',
     dokumen: dokumen_id,
@@ -64,42 +58,35 @@ exports.create = handleError(async (req, res) => {
 
 exports.createJawaban = handleError(async (req, res) => {
   const user = req.user
-  const { laporan_id, sanksi_id } = req.query
-  if (!laporan_id || !sanksi_id) {
-    return response.error(res, {
-      message: 'query laporan_id atau sanksi_id harus ada',
-    })
-  }
+  const { sanksi_id } = req.params
 
-  const laporan = await cekSatuDataLaporan(res, user, laporan_id)
-  const sanksi = await cekSatuDataSanksi(res, user, sanksi_id)
-  if (!laporan || !sanksi) return
+  const sanksi = await cekSatuDataSanksi(res, user, sanksi_id, {
+    banding: true,
+  })
+  if (!sanksi) return
 
   const isValid = validate(res, req.body, {
     status: 'string',
-    keterangan: 'string',
   })
   if (!isValid) return
 
   const files = req.files
-  if (!files?.length) {
-    return response.error(res, {
-      message: 'dokumen harus ada',
-    })
+  let dokumen_id = []
+  if (files?.length) {
+    const dokumen = await addManyDokumen(files)
+    dokumen_id = dokumen.map((e) => e._id)
   }
-  const dokumen = await addManyDokumen(files)
-  const dokumen_id = dokumen.map((e) => e._id)
-  const { status, keterangan } = req.body
+
+  const { status } = req.body
   const data = await sanksiModel.findOneAndUpdate(
     {
-      laporan: laporan._id,
+      laporan: sanksi.laporan._id,
       _id: sanksi._id,
       ['pengajuan.banding']: { $exists: true, $ne: null },
     },
     {
       ['jawaban.banding']: {
         status,
-        keterangan,
         dokumen: dokumen_id,
       },
     }
@@ -110,9 +97,9 @@ exports.createJawaban = handleError(async (req, res) => {
     })
   }
   await pemantauanModel.create({
-    laporan: laporan._id,
+    laporan: sanksi.laporan._id,
     sanksi: sanksi._id,
-    pt_id: laporan.pt.id,
+    pt_id: sanksi.laporan.pt.id,
     user: user._id,
     keterangan: 'Menjawab Pengajuan Banding',
     dokumen: dokumen_id,

+ 10 - 22
controller/sanksi/cabutSanksi.controller.js

@@ -8,16 +8,10 @@ const pemantauanModel = require('../../model/pemantauan.model')
 
 exports.create = handleError(async (req, res) => {
   const user = req.user
-  const { laporan_id, sanksi_id } = req.query
-  if (!laporan_id || !sanksi_id) {
-    return response.error(res, {
-      message: 'query laporan_id atau sanksi_id harus ada',
-    })
-  }
+  const { sanksi_id } = req.params
 
-  const laporan = await cekSatuDataLaporan(res, user, laporan_id)
   const sanksi = await cekSatuDataSanksi(res, user, sanksi_id)
-  if (!laporan || !sanksi) return
+  if (!sanksi) return
 
   const files = req.files
   if (!files?.length) {
@@ -30,7 +24,7 @@ exports.create = handleError(async (req, res) => {
 
   const data = await sanksiModel.findOneAndUpdate(
     {
-      laporan: laporan._id,
+      laporan: sanksi.laporan._id,
       _id: sanksi._id,
       ['pengajuan.cabut_sanksi']: { $exists: false, $eq: null },
     },
@@ -46,9 +40,9 @@ exports.create = handleError(async (req, res) => {
     })
   }
   await pemantauanModel.create({
-    laporan: laporan._id,
+    laporan: sanksi.laporan._id,
     sanksi: sanksi._id,
-    pt_id: laporan.pt.id,
+    pt_id: sanksi.laporan.pt.id,
     user: user._id,
     keterangan: 'Mengajukan Pencabutan Sanksi',
     dokumen: dokumen_id,
@@ -61,16 +55,10 @@ exports.create = handleError(async (req, res) => {
 
 exports.createJawaban = handleError(async (req, res) => {
   const user = req.user
-  const { laporan_id, sanksi_id } = req.query
-  if (!laporan_id || !sanksi_id) {
-    return response.error(res, {
-      message: 'query laporan_id atau sanksi_id harus ada',
-    })
-  }
+  const { sanksi_id } = req.params
 
-  const laporan = await cekSatuDataLaporan(res, user, laporan_id)
   const sanksi = await cekSatuDataSanksi(res, user, sanksi_id)
-  if (!laporan || !sanksi) return
+  if (!sanksi) return
 
   const isValid = validate(res, req.body, {
     status: 'string',
@@ -89,7 +77,7 @@ exports.createJawaban = handleError(async (req, res) => {
   const { status, keterangan } = req.body
   const data = await sanksiModel.findOneAndUpdate(
     {
-      laporan: laporan._id,
+      laporan: sanksi.laporan._id,
       _id: sanksi._id,
       ['pengajuan.cabut_sanksi']: { $exists: true, $ne: null },
     },
@@ -107,9 +95,9 @@ exports.createJawaban = handleError(async (req, res) => {
     })
   }
   await pemantauanModel.create({
-    laporan: laporan._id,
+    laporan: sanksi.laporan._id,
     sanksi: sanksi._id,
-    pt_id: laporan.pt.id,
+    pt_id: sanksi.laporan.pt.id,
     user: user._id,
     keterangan: 'Menjawab Pengajuan Pencabutan Sanksi',
     dokumen: dokumen_id,

+ 5 - 6
controller/sanksi/keberatan.controller.js

@@ -79,13 +79,12 @@ exports.createJawaban = handleError(async (req, res) => {
   if (!isValid) return
 
   const files = req.files
-  if (!files?.length) {
-    return response.error(res, {
-      message: 'dokumen harus ada',
-    })
+  let dokumen_id = []
+  if (files?.length) {
+    const dokumen = await addManyDokumen(files)
+    dokumen_id = dokumen.map((e) => e._id)
   }
-  const dokumen = await addManyDokumen(files)
-  const dokumen_id = dokumen.map((e) => e._id)
+
   const { status, keterangan } = req.body
   const data = await sanksiModel.findOneAndUpdate(
     {

+ 7 - 13
controller/sanksi/perbaikan.controller.js

@@ -2,22 +2,16 @@ const handleError = require('../../utils/handleError')
 const sanksiModel = require('../../model/sanksi.model')
 const { addManyDokumen } = require('../../utils/dokumenFunction')
 const { validate } = require('../../utils/validation')
-const { cekSatuDataSanksi, cekSatuDataLaporan } = require('../../utils/cekData')
+const { cekSatuDataSanksi } = require('../../utils/cekData')
 const response = require('../../utils/responseHandler')
 const pemantauanModel = require('../../model/pemantauan.model')
 
 exports.add = handleError(async (req, res) => {
   const user = req.user
-  const { laporan_id, sanksi_id } = req.query
-  if (!laporan_id || !sanksi_id) {
-    return response.error(res, {
-      message: 'query laporan_id atau sanksi_id harus ada',
-    })
-  }
+  const { sanksi_id } = req.params
 
-  const laporan = await cekSatuDataLaporan(res, user, laporan_id)
   const sanksi = await cekSatuDataSanksi(res, user, sanksi_id)
-  if (!laporan || !sanksi) return
+  if (!sanksi) return
 
   const isValid = validate(res, req.body, {
     keterangan: 'string',
@@ -36,7 +30,7 @@ exports.add = handleError(async (req, res) => {
   const { keterangan } = req.body
   const data = await sanksiModel.findOneAndUpdate(
     {
-      laporan: laporan._id,
+      laporan: sanksi.laporan._id,
       _id: sanksi._id,
       $or: [
         { ['pengajuan.banding']: { $exists: true, $ne: null } },
@@ -57,11 +51,11 @@ exports.add = handleError(async (req, res) => {
       message: 'Pengajuan banding atau cabut sanksi tidak ada',
     })
   }
-  await pemantauanModel.findOneAndUpdate({
-    laporan: laporan._id,
+  await pemantauanModel.create({
+    laporan: sanksi.laporan._id,
     sanksi: sanksi._id,
     user: user._id,
-    pt_id: laporan.pt.id,
+    pt_id: sanksi.laporan.pt.id,
     keterangan: 'Melakukan Perbaikan Dokumen',
     dokumen: dokumen_id,
   })

+ 0 - 1
model/sanksi.model.js

@@ -43,7 +43,6 @@ module.exports = mongoose.model(
         banding: new Schema(
           {
             status: String,
-            keterangan: String,
             dokumen: [
               {
                 type: Types.ObjectId,

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

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

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

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

+ 6 - 1
routes/v1/sanksi/perbaikan.routes.js

@@ -3,6 +3,11 @@ const perbaikan = require('../../../controller/sanksi/perbaikan.controller')
 const handleDokumen = require('../../../utils/handleDokumen')
 const roleId = require('../../../middleware/role')
 
-router.post('/add', roleId(2022), handleDokumen.array('dokumen'), perbaikan.add)
+router.post(
+  '/add/:sanksi_id',
+  roleId(2022),
+  handleDokumen.array('dokumen'),
+  perbaikan.add
+)
 
 module.exports = router

+ 13 - 5
utils/cekData.js

@@ -50,18 +50,24 @@ exports.cekBanyakDataLaporan = async (user, where = {}) => {
   const data = await laporanModel
     .find(w)
     .populate('user')
-    .select('-evaluasi -pelanggaran -aktif -dokumen')
+    .select(' -pelanggaran -aktif -dokumen')
     .sort({
       createdAt: -1,
     })
   return data
 }
 
-exports.cekSatuDataSanksi = async (res, user, sanksi_id, where = {}) => {
+exports.cekSatuDataSanksi = async (
+  res,
+  user,
+  sanksi_id,
+  where = { banding: false }
+) => {
   const w = { aktif: true }
   switch (user.role.id) {
     case 2020:
-      w.role_data = 'dikti'
+      if (!where.banding) w.role_data = 'dikti'
+
       break
     case 2021:
       w.role_data = 'lldikti'
@@ -97,11 +103,13 @@ exports.cekSatuDataSanksi = async (res, user, sanksi_id, where = {}) => {
   return sanksi
 }
 
-exports.cekBanyakDataSanksi = async (user, where = {}) => {
+exports.cekBanyakDataSanksi = async (user, where = { banding: false }) => {
   const w = { aktif: true }
   switch (user.role.id) {
     case 2020:
-      w.role_data = 'dikti'
+      if (!where.banding) {
+        w.role_data = 'dikti'
+      }
       break
     case 2021:
       w['role_data'] = 'lldikti'

+ 6 - 1
utils/dokumenFunction.js

@@ -28,7 +28,12 @@ exports.addManyDokumen = async (dokumenArray) => {
         chunk: chunk._id,
         type: dokumen.mimetype,
         judul: Date.now() + '-' + dokumen.originalname,
-        path: process.env.BASE_URL + '/dokumen/' + chunk._id,
+        path:
+          process.env.BASE_URL +
+          '/dokumen/' +
+          chunk._id +
+          '/' +
+          dokumen.originalname,
       })
       return data
     })