yazid138 3 年之前
父節點
當前提交
d8a4afb5a5

+ 0 - 0
controller/cabutSanksi.controller.js


+ 6 - 6
controller/evaluasi.controller.js → controller/laporan/evaluasi.controller.js

@@ -1,9 +1,9 @@
-const laporanModel = require('../model/laporan.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 laporanModel = require('../../model/laporan.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')
 
 exports.add = handleError(async (req, res) => {
   const user = req.user

+ 5 - 5
controller/jadwal.controller.js → controller/laporan/jadwal.controller.js

@@ -1,8 +1,8 @@
-const laporanModel = require('../model/laporan.model')
-const { cekSatuDataLaporan } = require('../utils/cekData')
-const handleError = require('../utils/handleError')
-const response = require('../utils/responseHandler')
-const { validate } = require('../utils/validation')
+const laporanModel = require('../../model/laporan.model')
+const { cekSatuDataLaporan } = require('../../utils/cekData')
+const handleError = require('../../utils/handleError')
+const response = require('../../utils/responseHandler')
+const { validate } = require('../../utils/validation')
 
 exports.update = handleError(async (req, res) => {
   const user = req.user

+ 0 - 0
controller/pengajuan.controller.js


+ 11 - 11
controller/banding.controller.js → controller/sanksi/banding.controller.js

@@ -1,9 +1,9 @@
-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')
+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.create = handleError(async (req, res) => {
   const user = req.user
@@ -31,23 +31,23 @@ exports.create = handleError(async (req, res) => {
     {
       laporan: laporan._id,
       _id: sanksi._id,
-      banding: { $exists: false, $eq: null },
+      ['pengajuan.banding']: { $exists: false, $eq: null },
       ['jawaban.keberatan']: { $exists: true, $ne: null },
     },
     {
-      banding: {
+      ['pengajuan.banding']: {
         dokumen: dokumen_id,
       },
     }
   )
   if (!data) {
     return response.error(res, {
-      message: 'banding sudah ada atau jawaban keberatan belum ada',
+      message: 'pengajuan banding sudah ada atau jawaban keberatan belum ada',
     })
   }
   return response.success(res, {
     data,
-    message: 'Berhasil menambah keberatan',
+    message: 'Berhasil menambah pengajuan banding',
   })
 })
 
@@ -83,7 +83,7 @@ exports.createJawaban = handleError(async (req, res) => {
     {
       laporan: laporan._id,
       _id: sanksi._id,
-      banding: { $exists: true, $ne: null },
+      ['pengajuan.banding']: { $exists: true, $ne: null },
     },
     {
       ['jawaban.banding']: {

+ 103 - 0
controller/sanksi/cabutSanksi.controller.js

@@ -0,0 +1,103 @@
+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.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 laporan = await cekSatuDataLaporan(res, user, laporan_id)
+  const sanksi = await cekSatuDataSanksi(res, user, sanksi_id)
+  if (!laporan || !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(
+    {
+      laporan: laporan._id,
+      _id: sanksi._id,
+      ['pengajuan.cabut_sanksi']: { $exists: false, $eq: null },
+    },
+    {
+      ['pengajuan.cabut_sanksi']: {
+        dokumen: dokumen_id,
+      },
+    }
+  )
+  if (!data) {
+    return response.error(res, {
+      message: 'cabut_sanksi sudah ada',
+    })
+  }
+  return response.success(res, {
+    data,
+    message: 'Berhasil menambah cabut_sanksi',
+  })
+})
+
+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 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, {
+    status: 'string',
+    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 { status, keterangan } = req.body
+  const data = await sanksiModel.findOneAndUpdate(
+    {
+      laporan: laporan._id,
+      _id: sanksi._id,
+      ['pengajuan.cabut_sanksi']: { $exists: true, $ne: null },
+    },
+    {
+      ['jawaban.cabut_sanksi']: {
+        status,
+        keterangan,
+        dokumen: dokumen_id,
+      },
+    }
+  )
+  if (!data) {
+    return response.error(res, {
+      message: 'cabut_sanksi tidak ada',
+    })
+  }
+  return response.success(res, {
+    data,
+  })
+})

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


+ 10 - 10
controller/keberatan.controller.js → controller/sanksi/keberatan.controller.js

@@ -1,9 +1,9 @@
-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')
+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.create = handleError(async (req, res) => {
   const user = req.user
@@ -31,17 +31,17 @@ exports.create = handleError(async (req, res) => {
     {
       laporan: laporan._id,
       _id: sanksi._id,
-      keberatan: { $exists: false, $eq: null },
+      ['pengajuan.keberatan']: { $exists: false, $eq: null },
     },
     {
-      keberatan: {
+      ['pengajuan.keberatan']: {
         dokumen: dokumen_id,
       },
     }
   )
   if (!data) {
     return response.error(res, {
-      message: 'Keberatan sudah ada',
+      message: 'Pengajuan Keberatan sudah ada',
     })
   }
   return response.success(res, {
@@ -82,7 +82,7 @@ exports.createJawaban = handleError(async (req, res) => {
     {
       laporan: laporan._id,
       _id: sanksi._id,
-      keberatan: { $exists: true, $ne: null },
+      ['pengajuan.keberatan']: { $exists: true, $ne: null },
     },
     {
       ['jawaban.keberatan']: {

+ 35 - 33
model/sanksi.model.js

@@ -67,39 +67,41 @@ module.exports = mongoose.model(
           { timestamps: true }
         ),
       },
-      keberatan: new Schema(
-        {
-          dokumen: [
-            {
-              type: Types.ObjectId,
-              ref: dokumen,
-            },
-          ],
-        },
-        { timestamps: true }
-      ),
-      banding: new Schema(
-        {
-          dokumen: [
-            {
-              type: Types.ObjectId,
-              ref: dokumen,
-            },
-          ],
-        },
-        { timestamps: true }
-      ),
-      cabut_sanksi: new Schema(
-        {
-          dokumen: [
-            {
-              type: Types.ObjectId,
-              ref: dokumen,
-            },
-          ],
-        },
-        { timestamps: true }
-      ),
+      pengajuan: {
+        keberatan: new Schema(
+          {
+            dokumen: [
+              {
+                type: Types.ObjectId,
+                ref: dokumen,
+              },
+            ],
+          },
+          { timestamps: true }
+        ),
+        banding: new Schema(
+          {
+            dokumen: [
+              {
+                type: Types.ObjectId,
+                ref: dokumen,
+              },
+            ],
+          },
+          { timestamps: true }
+        ),
+        cabut_sanksi: new Schema(
+          {
+            dokumen: [
+              {
+                type: Types.ObjectId,
+                ref: dokumen,
+              },
+            ],
+          },
+          { timestamps: true }
+        ),
+      },
       perbaikan: new Schema(
         {
           keterangan: String,

+ 1 - 1
routes/v1/laporan/evaluasi.routes.js

@@ -1,5 +1,5 @@
 const router = require('express').Router()
-const evaluasi = require('../../../controller/evaluasi.controller')
+const evaluasi = require('../../../controller/laporan/evaluasi.controller')
 const handleDokumen = require('../../../utils/handleDokumen')
 
 router.post('/add/:id', handleDokumen.array('dokumen'), evaluasi.add)

+ 1 - 1
routes/v1/laporan/jadwal.routes.js

@@ -1,5 +1,5 @@
 const router = require('express').Router()
-const jadwal = require('../../../controller/jadwal.controller')
+const jadwal = require('../../../controller/laporan/jadwal.controller')
 
 router.put('/update/:id', jadwal.update)
 

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

@@ -1,5 +1,5 @@
 const router = require('express').Router()
-const banding = require('../../../controller/banding.controller')
+const banding = require('../../../controller/sanksi/banding.controller')
 const handleDokumen = require('../../../utils/handleDokumen')
 const roleId = require('../../../middleware/role')
 

+ 20 - 0
routes/v1/sanksi/cabutSanksi.routes.js

@@ -0,0 +1,20 @@
+const router = require('express').Router()
+const cabutSanksi = require('../../../controller/sanksi/cabutSanksi.controller')
+const handleDokumen = require('../../../utils/handleDokumen')
+const roleId = require('../../../middleware/role')
+
+router.post(
+  '/create',
+  roleId(2022),
+  handleDokumen.array('dokumen'),
+  cabutSanksi.create
+)
+
+router.post(
+  '/jawaban/create',
+  roleId([2020, 2021]),
+  handleDokumen.array('dokumen'),
+  cabutSanksi.createJawaban
+)
+
+module.exports = router

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

@@ -14,5 +14,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'))
 
 module.exports = router

+ 1 - 1
routes/v1/sanksi/keberatan.routes.js

@@ -1,5 +1,5 @@
 const router = require('express').Router()
-const keberatan = require('../../../controller/keberatan.controller')
+const keberatan = require('../../../controller/sanksi/keberatan.controller')
 const handleDokumen = require('../../../utils/handleDokumen')
 const roleId = require('../../../middleware/role')
 

+ 4 - 4
utils/cekData.js

@@ -82,9 +82,9 @@ exports.cekSatuDataSanksi = async (res, user, sanksi_id, where = {}) => {
     })
     .populate('dokumen')
     .populate('pelanggaran')
-    .populate('keberatan.dokumen')
+    .populate('pengajuan.keberatan.dokumen')
     .populate('jawaban.keberatan.dokumen')
-    .populate('banding.dokumen')
+    .populate('pengajuan.banding.dokumen')
     .populate('jawaban.banding.dokumen')
   if (!sanksi?.laporan) {
     response.error(res, {
@@ -119,9 +119,9 @@ exports.cekBanyakDataSanksi = async (user, where = {}) => {
     })
     .populate('dokumen')
     .populate('pelanggaran')
-    .populate('keberatan.dokumen')
+    .populate('pengajuan.keberatan.dokumen')
     .populate('jawaban.keberatan.dokumen')
-    .populate('banding.dokumen')
+    .populate('pengajuan.banding.dokumen')
     .populate('jawaban.banding.dokumen')
   data = data.filter((e) => e.laporan !== null)
   return data