andi 3 лет назад
Родитель
Сommit
cf3dba7312

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

@@ -1,13 +1,11 @@
 const laporanModel = require('../../model/laporan.model')
-const logModel = require('../../model/log.model')
 const handleError = require('../../utils/handleError')
 const response = require('../../utils/responseHandler')
 const { validate } = require('../../utils/validation')
 const { addManyDokumen } = require('../../utils/dokumenFunction')
 const { cekSatuDataLaporan } = require('../../utils/cekData')
 const pemantauanModel = require('../../model/pemantauan.model')
-const ip = require('ip')
-const osValue = require('../../utils/osValue')
+
 
 exports.add = handleError(async (req, res) => {
   const user = req.user

+ 60 - 0
controller/rekomendasi.controller.js

@@ -0,0 +1,60 @@
+const handleError = require('../utils/handleError')
+const response = require('../utils/responseHandler')
+const { addManyDokumen } = require('../utils/dokumenFunction')
+const { cekSatuDataSanksi } = require('../utils/cekData')
+const pemantauanModel = require('../model/pemantauan.model')
+const sanksiModel = require('../model/sanksi.model')
+
+exports.createRekomendasi = handleError(async (req, res) => {
+  const user = req.user
+  const { id } = req.params
+
+  const sanksi = await cekSatuDataSanksi(res, user, id, { delegasi: true })
+  if (!sanksi) return
+
+  const files = req.files
+  if (!files.length) {
+    return response.error(res, {
+      message: 'dokumen harus ada',
+    })
+  }
+  const dokumen = await addManyDokumen(files)
+  const dokumen_id = dokumen.map((e) => e._id)
+
+  const data = await sanksiModel.findOneAndUpdate(
+    {
+      _id: sanksi._id,
+    },
+    {
+      $push: {
+        rekomendasi: {
+          dokumen: dokumen_id,
+        },
+      },
+    },
+    {
+      new: true,
+    }
+  )
+
+  let for_public = true
+  if (sanksi.rekomendasi.length > 0) {
+    for_public = false
+  }
+
+  await pemantauanModel.create({
+    laporan: sanksi.laporan._id,
+    user: user._id,
+    action: 'ADD REKOMENDASI',
+    pt_id: sanksi.laporan.pt.id,
+    keterangan: 'Melakukan rekomendasi delegasi',
+    dokumen: dokumen_id,
+    for_pt: false,
+    for_public,
+  })
+
+  return response.success(res, {
+    message: 'Berhasil tambah rekomendasi delegasi',
+    data,
+  })
+})

+ 4 - 1
controller/sanksi.controller.js

@@ -130,7 +130,7 @@ exports.getOne = handleError(async (req, res) => {
   const { sanksi_id } = req.params
 
   const w = {}
-  const { banding, aktif, delegasi } = req.query
+  const { banding, aktif, delegasi, all } = req.query
   if (banding === 'true') {
     w.banding = true
     w['pengajuan.keberatan'] = { $exists: true, $ne: null }
@@ -140,6 +140,9 @@ exports.getOne = handleError(async (req, res) => {
   if (delegasi === 'true') {
     w.delegasi = true
   }
+  if (all === 'true') {
+    w.all = true
+  }
   if (aktif && aktif === 'false') {
     w.aktif = false
   }

+ 13 - 0
model/sanksi.model.js

@@ -120,6 +120,19 @@ module.exports = mongoose.model(
           { timestamps: true }
         ),
       ],
+      rekomendasi: [
+        new Schema(
+          {
+            dokumen: [
+              {
+                type: Types.ObjectId,
+                ref: dokumen,
+              },
+            ],
+          },
+          { timestamps: true }
+        ),
+      ],
     },
     { timestamps: true }
   ),

+ 13 - 0
model/sanksi2.model.js

@@ -118,6 +118,19 @@ module.exports = mongoose.model(
           { timestamps: true }
         ),
       ],
+      rekomendasi: [
+        new Schema(
+          {
+            dokumen: [
+              {
+                type: Types.ObjectId,
+                ref: dokumen,
+              },
+            ],
+          },
+          { timestamps: true }
+        ),
+      ],
     },
     { timestamps: true }
   ),

+ 1 - 0
routes/v1/index.js

@@ -23,5 +23,6 @@ router.use('/graph', require('./graph.routes'))
 router.use('/log', require('./log.routes'))
 router.use('/auto', verify, require('./auto.routes'))
 router.use('/pengunjung', require('./pengunjung.routes'))
+router.use('/rekomendasi', auth, require('./rekomendasi.routes'))
 
 module.exports = router

+ 13 - 0
routes/v1/rekomendasi.routes.js

@@ -0,0 +1,13 @@
+const router = require('express').Router()
+const rekomendasi = require('../../controller/rekomendasi.controller')
+const handleDokumen = require('../../utils/handleDokumen')
+const roleId = require('../../middleware/role')
+
+router.post(
+  '/add/:id',
+  roleId([2020, 2021, 2023]),
+  handleDokumen.array('dokumen'),
+  rekomendasi.createRekomendasi
+)
+
+module.exports = router

+ 5 - 5
utils/cekData.js

@@ -47,6 +47,7 @@ exports.cekSatuDataLaporan = async (
     .findOne(w)
     .populate({ path: 'user', populate: 'foto' })
     .populate({ path: 'pelanggaran', select: 'pelanggaran' })
+    .populate({ path: 'sanksi', populate: ['pelanggaran'] })
     .populate('dokumen')
     .populate({ path: 'evaluasi', populate: ['user', 'dokumen'] })
   // .populate('evaluasi.user')
@@ -121,8 +122,7 @@ exports.cekSatuDataSanksi = async (
       else if (where.delegasi) {
         w.role_data = 'lldikti'
         w.role_asal = 'dikti'
-      }
-      else if (!where.banding) w.role_data = 'dikti'
+      } else if (!where.banding) w.role_data = 'dikti'
       break
     case 2021:
       w.role_data = 'lldikti'
@@ -136,7 +136,7 @@ exports.cekSatuDataSanksi = async (
     .findOne({ _id: sanksi_id, aktif: true, ...where })
     .populate({
       path: 'laporan',
-      select: 'pt role_data aktif',
+      select: 'pt role_data aktif keterangan',
       match: w,
     })
     .populate('dokumen')
@@ -148,6 +148,7 @@ exports.cekSatuDataSanksi = async (
     .populate('jawaban.banding.dokumen')
     .populate('pengajuan.cabut_sanksi.dokumen')
     .populate('jawaban.cabut_sanksi.dokumen')
+    .populate('rekomendasi.dokumen')
     .populate('perbaikan.dokumen')
   if (!sanksi?.laporan) {
     response.error(res, {
@@ -168,8 +169,7 @@ exports.cekBanyakDataSanksi = async (user, where = {}, q = {}) => {
       else if (where.delegasi) {
         w.role_data = 'lldikti'
         w.role_asal = 'dikti'
-      }
-      else if (!where.banding) w.role_data = 'dikti'
+      } else if (!where.banding) w.role_data = 'dikti'
       break
     case 2021:
       w['role_data'] = 'lldikti'