yazid138 3 年之前
父節點
當前提交
2285451c96

+ 0 - 1
controller/sanksi.controller.js

@@ -1,5 +1,4 @@
 const sanksiModel = require('../model/sanksi.model')
-const pelanggaranModel = require('../model/pelanggaran.model')
 const handleError = require('../utils/handleError')
 const response = require('../utils/responseHandler')
 const { addManyDokumen } = require('../utils/dokumenFunction')

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

@@ -4,6 +4,7 @@ const { addManyDokumen } = require('../../utils/dokumenFunction')
 const { validate } = require('../../utils/validation')
 const { cekSatuDataSanksi, cekSatuDataLaporan } = require('../../utils/cekData')
 const response = require('../../utils/responseHandler')
+const hariKerja = require('../../utils/hariKerja')
 
 exports.create = handleError(async (req, res) => {
   const user = req.user
@@ -38,6 +39,7 @@ exports.create = handleError(async (req, res) => {
       ['pengajuan.banding']: {
         dokumen: dokumen_id,
       },
+      ['batas_waktu.jawaban_banding']: hariKerja(10),
     }
   )
   if (!data) {

+ 0 - 0
controller/sanksi/docPerbaikan.controller.js


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

@@ -4,6 +4,7 @@ const { addManyDokumen } = require('../../utils/dokumenFunction')
 const { validate } = require('../../utils/validation')
 const { cekSatuDataSanksi, cekSatuDataLaporan } = require('../../utils/cekData')
 const response = require('../../utils/responseHandler')
+const { hariKerja } = require('../../utils/hariKerja')
 
 exports.create = handleError(async (req, res) => {
   const user = req.user
@@ -37,6 +38,7 @@ exports.create = handleError(async (req, res) => {
       ['pengajuan.keberatan']: {
         dokumen: dokumen_id,
       },
+      ['batas_waktu.jawaban_keberatan']: hariKerja(10),
     }
   )
   if (!data) {
@@ -90,6 +92,7 @@ exports.createJawaban = handleError(async (req, res) => {
         keterangan,
         dokumen: dokumen_id,
       },
+      ['batas_waktu.banding']: hariKerja(21),
     }
   )
   if (!data) {

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

@@ -0,0 +1,63 @@
+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 response = require('../../utils/responseHandler')
+
+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 laporan = await cekSatuDataLaporan(res, user, laporan_id)
+  const sanksi = await cekSatuDataSanksi(res, user, sanksi_id)
+  if (!laporan || !sanksi) return
+
+  const isValid = validate(res, req.body, {
+    keterangan: 'string',
+  })
+  if (!isValid) 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 { keterangan } = req.body
+  const data = await sanksiModel.findOneAndUpdate(
+    {
+      laporan: laporan._id,
+      _id: sanksi._id,
+      $or: [
+        { ['pengajuan.banding']: { $exists: true, $ne: null } },
+        { ['pengajuan.cabut_sanksi']: { $exists: true, $ne: null } },
+      ],
+    },
+    {
+      $push: {
+        perbaikan: {
+          keterangan,
+          dokumen: dokumen_id,
+        },
+      },
+    }
+  )
+  if (!data) {
+    return response.error(res, {
+      message: 'Pengajuan banding atau cabut sanksi tidak ada',
+    })
+  }
+  return response.success(res, {
+    data,
+    message: 'Berhasil menambah Perbaikan',
+  })
+})

+ 14 - 12
model/sanksi.model.js

@@ -102,18 +102,20 @@ module.exports = mongoose.model(
           { timestamps: true }
         ),
       },
-      perbaikan: new Schema(
-        {
-          keterangan: String,
-          dokumen: [
-            {
-              type: Types.ObjectId,
-              ref: dokumen,
-            },
-          ],
-        },
-        { timestamps: true }
-      ),
+      perbaikan: [
+        new Schema(
+          {
+            keterangan: String,
+            dokumen: [
+              {
+                type: Types.ObjectId,
+                ref: dokumen,
+              },
+            ],
+          },
+          { timestamps: true }
+        ),
+      ],
     },
     { timestamps: true }
   ),

+ 1 - 0
routes/v1/sanksi/index.js

@@ -15,5 +15,6 @@ router.get('/:sanksi_id', roleId([2020, 2021, 2022]), sanksi.getOne)
 router.use('/keberatan', require('./keberatan.routes'))
 router.use('/banding', require('./banding.routes'))
 router.use('/cabut-sanksi', require('./cabutSanksi.routes'))
+router.use('/perbaikan', require('./perbaikan.routes'))
 
 module.exports = router

+ 8 - 0
routes/v1/sanksi/perbaikan.routes.js

@@ -0,0 +1,8 @@
+const router = require('express').Router()
+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)
+
+module.exports = router

+ 1 - 0
utils/cekData.js

@@ -86,6 +86,7 @@ exports.cekSatuDataSanksi = async (res, user, sanksi_id, where = {}) => {
     .populate('jawaban.banding.dokumen')
     .populate('pengajuan.cabut_sanksi.dokumen')
     .populate('jawaban.cabut_sanksi.dokumen')
+    .populate('perbaikan.dokumen')
   if (!sanksi?.laporan) {
     response.error(res, {
       message: 'sanksi_id tidak ada',