andi 2 éve
szülő
commit
a94bab1ef7

+ 72 - 0
controller/sanksi.controller.js

@@ -87,6 +87,78 @@ exports.create = handleError(async (req, res) => {
   })
 })
 
+exports.update = handleError(async (req, res) => {
+  const { no_surat, keterangan, from_date, to_date } = req.body
+  let { pelanggaran_id } = req.body
+  const { sanksi_id } = req.params
+  const files = req.files
+  const user = req.user
+
+  const isValid = validate(res, req.body, {
+    no_surat: 'string',
+    keterangan: 'string',
+    pelanggaran_id: 'string',
+    from_date: 'string',
+    to_date: 'string',
+  })
+  if (!isValid) return
+
+  const sanksi = await cekSatuDataSanksi(res, user, sanksi_id, { all: true })
+  if (!sanksi) return
+
+  pelanggaran_id = await cekBanyakDataPelanggaran(res, pelanggaran_id)
+  if (!pelanggaran_id) return
+
+  // const sanksi = await sanksiModel.findOne({ laporan: laporan_id })
+  // if (sanksi) {
+  //   return response.error(res, {
+  //     message: 'Sanksi sudah ada',
+  //   })
+  // }
+
+  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.updateOne(
+    { _id: sanksi._id },
+    {
+      perubahan_sanksi: {
+        no_surat,
+        pelanggaran: pelanggaran_id,
+        keterangan,
+        dokumen: dokumen_id,
+        masa_berlaku: {
+          from_date,
+          to_date,
+        },
+      },
+    }
+  )
+  // await laporanModel.findByIdAndUpdate(laporan._id, {
+  //   sanksi: data._id,
+  //   // aktif: false,
+  // })
+  await pemantauanModel.create({
+    laporan: sanksi.laporan._id,
+    sanksi: sanksi._id,
+    action: 'UPDATE SANKSI',
+    pt_id: sanksi.laporan.pt.id,
+    user: user._id,
+    keterangan: 'Melakukan Perubahan Sanksi',
+    dokumen: dokumen_id,
+  })
+
+  return response.success(res, {
+    message: 'Berhasil merubah Sanksi',
+    data,
+  })
+})
+
 exports.getAll = handleError(async (req, res) => {
   const user = req.user
   const {

+ 16 - 0
model/sanksi.model.js

@@ -117,6 +117,22 @@ module.exports = mongoose.model(
           { timestamps: true }
         ),
       },
+      perubahan_sanksi: {
+        no_surat: String,
+        user: { type: Types.ObjectId, ref: user },
+        pelanggaran: [{ type: Types.ObjectId, ref: pelanggaran }],
+        keterangan: String,
+        dokumen: [
+          {
+            type: Types.ObjectId,
+            ref: dokumen,
+          },
+        ],
+        masa_berlaku: new Schema({
+          from_date: Date,
+          to_date: Date,
+        }),
+      },
       perbaikan: [
         new Schema(
           {

+ 16 - 0
model/sanksi2.model.js

@@ -115,6 +115,22 @@ module.exports = mongoose.model(
           { timestamps: true }
         ),
       },
+      perubahan_sanksi: {
+        no_surat: String,
+        user: { type: Types.ObjectId, ref: user },
+        pelanggaran: [{ type: Types.ObjectId, ref: pelanggaran }],
+        keterangan: String,
+        dokumen: [
+          {
+            type: Types.ObjectId,
+            ref: dokumen,
+          },
+        ],
+        masa_berlaku: new Schema({
+          from_date: Date,
+          to_date: Date,
+        }),
+      },
       perbaikan: [
         new Schema(
           {

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

@@ -9,6 +9,12 @@ router.post(
   handleDokumen.array('dokumen'),
   sanksi.create
 )
+router.put(
+  '/update/:sanksi_id',
+  roleId([2020, 2021, 2023]),
+  handleDokumen.array('dokumen'),
+  sanksi.update
+)
 router.put(
   '/tmt/update/:id',
   roleId([2020, 2021, 2023]),

+ 4 - 0
utils/cekData.js

@@ -151,6 +151,8 @@ exports.cekSatuDataSanksi = async (
     .populate('jawaban.cabut_sanksi.dokumen')
     .populate('rekomendasi.dokumen')
     .populate('perbaikan.dokumen')
+    .populate('perubahan_sanksi.pelanggaran')
+    .populate('perubahan_sanksi.dokumen')
   if (!sanksi?.laporan) {
     response.error(res, {
       message: 'sanksi_id tidak ada',
@@ -190,6 +192,8 @@ exports.cekBanyakDataSanksi = async (user, where = {}, q = {}) => {
     })
     .populate('user')
     .populate('pelanggaran')
+    .populate('perubahan_sanksi.pelanggaran')
+    .populate('perubahan_sanksi.dokumen')
     .select('-dokumen')
     .sort({
       createdAt: -1,