yazid138 před 2 roky
rodič
revize
dee3204c74

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
backup/1681694924904-sanksi.json


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
backup/1681694924909-laporan.json


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
backup/1681694924910-user.json


+ 60 - 2
controller/auto.controller.js

@@ -3,6 +3,9 @@ const response = require('../utils/responseHandler')
 const { notifWA } = require('../utils/notifFunction')
 const sanksiModel = require('../model/sanksi.model')
 const laporanModel = require('../model/laporan.model')
+const backupModel = require('../model/backup.model')
+const fs = require('fs')
+const mime = require('mime')
 const {
   TEMPLATE_KEBERATAN,
   TEMPLATE_BANDING,
@@ -11,6 +14,8 @@ const {
 const moment = require('moment')
 const autoSaveModel = require('../model/autoSave.model')
 const { cekSatuDataSanksi, cekSatuDataLaporan } = require('../utils/cekData')
+const userModel = require('../model/user.model')
+const { addManyDokumen } = require('../utils/dokumenFunction')
 
 exports.keberatan = handleError(async (req, res) => {
   const dataSanksi = await sanksiModel
@@ -296,8 +301,6 @@ exports.save = handleError(async (req, res) => {
             dataSuratBA: req.body?.PenetapanSanksi?.dataSuratBA || dataSave.laporan.PenetapanSanksi?.dataSuratBA,
             dataUpload: req.body?.PenetapanSanksi?.dataUpload || dataSave.laporan.PenetapanSanksi?.dataUpload,
             dataPelanggaran: req.body?.PenetapanSanksi?.dataPelanggaran || dataSave.laporan.PenetapanSanksi?.dataPelanggaran,
-            activeStep: req.body?.PenetapanSanksi?.activeStep || dataSave.laporan.PenetapanSanksi?.activeStep,
-
           }
         }
       })
@@ -349,3 +352,58 @@ exports.getSave = handleError(async (req, res) => {
     data: data
   })
 })
+
+exports.backup = handleError(async (req, res) => {
+  const dataBakup = await Promise.all([
+    (async () => {
+      const path = 'backup/' + new Date().getTime() + '-sanksi.json'
+      const sanksi = await sanksiModel.find()
+      fs.writeFileSync(path, JSON.stringify(sanksi))
+      const { size } = fs.statSync(path)
+      const mimetype = 'application/json'
+      const buffer = fs.readFileSync(path)
+      return { buffer, mimetype, size, originalname: 'sanksi.json' }
+    })(),
+    (async () => {
+      const path = 'backup/' + new Date().getTime() + '-laporan.json'
+      const laporan = await laporanModel.find()
+      fs.writeFileSync(path, JSON.stringify(laporan))
+      const { size } = fs.statSync(path)
+      const mimetype = 'application/json'
+      const buffer = fs.readFileSync(path)
+      return { buffer, mimetype, size, originalname: 'laporan.json' }
+    })(),
+    (async () => {
+      const path = 'backup/' + new Date().getTime() + '-user.json'
+      const user = await userModel.find()
+      fs.writeFileSync(path, JSON.stringify(user))
+      const { size } = fs.statSync(path)
+      const mimetype = 'application/json'
+      const buffer = fs.readFileSync(path)
+      return { buffer, mimetype, size, originalname: 'user.json' }
+    })()
+  ])
+  const dokumen = await addManyDokumen(dataBakup)
+  const tes = await backupModel.create({
+    dokumen: dokumen.map(e => e._id)
+  })
+  return response.success(res, {
+    message: 'berhasil membuat backup',
+    data: tes
+  })
+})
+
+
+exports.getBackup = handleError(async (req, res) => {
+  const { id } = req.params
+  const data = await backupModel.findById(id).populate('dokumen')
+  if (!data) return response.error(res, {
+    code: 404,
+    message: 'Not Found',
+  })
+
+  return response.success(res, {
+    message: 'berhasil mengambil data backup',
+    data: data.dokumen
+  })
+})

+ 39 - 7
controller/sanksi.controller.js

@@ -81,7 +81,7 @@ exports.create = handleError(async (req, res) => {
     pelanggaran: pelanggaran_id,
     keterangan,
     dokumen: dokumen_id,
-    sanksi: pelanggaran.map(e=> ({label: e.label_sanksi, value: e.sanksi, level: e.level_sanksi})),
+    sanksi: pelanggaran.map(e => ({ label: e.label_sanksi, value: e.sanksi, level: e.level_sanksi })),
     berita_acara: dokumenBeritaAcara_id,
     tanggal_terima_sanksi,
     dokumen_terima_sanksi: dokumenTerimaSanksi_id,
@@ -94,14 +94,14 @@ exports.create = handleError(async (req, res) => {
       keberatan: hariKerja(10),
     },
   })
- axios.post(
+  axios.post(
     `https://api.kemdikbud.go.id:8243/pddikti/1.2/pt/${laporan.pt.kode}/sanksi`,
     {
-	noSanksi: no_sanksi,
-	tmtBerlaku: from_date,
-	tstBerlaku: tanggal_terima_sanksi,
-	idJenisSanksi: Math.max(...pelanggaran.map(e => e.level_sanksi)),
-	alasan: 'Penetapan sanksi'
+      noSanksi: no_sanksi,
+      tmtBerlaku: from_date,
+      tstBerlaku: tanggal_terima_sanksi,
+      idJenisSanksi: Math.max(...pelanggaran.map(e => e.level_sanksi)),
+      alasan: 'Penetapan sanksi'
     }
   ).catch()
   await laporanModel.findByIdAndUpdate(laporan._id, {
@@ -455,3 +455,35 @@ exports.addPesertaPleno = handleError(async (req, res) => {
     message: 'Berhasil tambah peserta pleno',
   })
 })
+
+exports.removePesertaPleno = handleError(async (req, res) => {
+  const isValid = validate(res, req.body, {
+    peserta_id: 'string',
+    laporan_id: 'string',
+  })
+  if (!isValid) return
+  const user = req.user
+  console.log(user)
+
+  const { laporan_id, peserta_id } = req.body
+
+  const laporan = await cekSatuDataLaporan(res, user, laporan_id, {
+    evaluasi: { $exists: true, $ne: [] },
+  })
+  if (!laporan) return
+
+  await laporanModel.findOneAndUpdate(
+    { _id: laporan._id },
+    {
+      $pull: {
+        peserta_penetapan_sanksi: {
+          _id: peserta_id
+        }
+      }
+    }
+  )
+
+  return response.success(res, {
+    message: 'Berhasil menghapus peserta pleno',
+  })
+})

+ 13 - 0
model/backup.model.js

@@ -0,0 +1,13 @@
+const mongoose = require('mongoose')
+const { Schema, Types } = mongoose
+const dokumen = require('./dokumen.model')
+
+module.exports = mongoose.model(
+    'Backup',
+    new Schema({
+        dokumen: [{ type: Types.ObjectId, ref: dokumen }]
+    }, {
+        timestamps: true,
+    }),
+    'backup'
+)

+ 2 - 0
routes/v1/auto.routes.js

@@ -10,5 +10,7 @@ router.get('/reminder-banding', verify, auto.reminderBanding)
 router.get('/status-sanksi', verify, auto.updateStatusSanksi)
 router.post('/save/:id', auth, auto.save)
 router.get('/save/:id', auto.getSave)
+router.post('/backup', verify, auto.backup)
+router.get('/backup/:id', auth, auto.getBackup)
 
 module.exports = router

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

@@ -28,6 +28,7 @@ router.put(
 )
 router.get('/', sanksi.getAll)
 router.get('/:sanksi_id', sanksi.getOne)
+router.delete('/remove-peserta-pleno', sanksi.removePesertaPleno)
 
 router.use('/keberatan', require('./keberatan.routes'))
 router.use('/banding', require('./banding.routes'))

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů