andi 2 years ago
parent
commit
dadc8c7c60

+ 73 - 2
controller/auto.controller.js

@@ -8,6 +8,8 @@ const {
   TEMPLATE_REMINDER,
 } = require('../utils/constanta')
 const moment = require('moment')
+const autoSaveModel = require('../model/autoSave.model')
+const { cekSatuDataSanksi, cekSatuDataLaporan } = require('../utils/cekData')
 
 exports.keberatan = handleError(async (req, res) => {
   const dataSanksi = await sanksiModel
@@ -126,7 +128,7 @@ exports.reminderKeberatan = handleError(async (req, res) => {
       if (
         e.batas_waktu.jawaban_keberatan &&
         new Date() >
-          moment(e.batas_waktu.jawaban_keberatan).add(-7, 'days').toDate() &&
+        moment(e.batas_waktu.jawaban_keberatan).add(-7, 'days').toDate() &&
         new Date() < e.batas_waktu.jawaban_keberatan
       ) {
         const dayLeft = moment(e.batas_waktu.jawaban_keberatan).diff(
@@ -193,7 +195,7 @@ exports.reminderBanding = handleError(async (req, res) => {
       if (
         e.batas_waktu.jawaban_banding &&
         new Date() >
-          moment(e.batas_waktu.jawaban_banding).add(-7, 'days').toDate() &&
+        moment(e.batas_waktu.jawaban_banding).add(-7, 'days').toDate() &&
         new Date() < e.batas_waktu.jawaban_banding
       ) {
         const dayLeft = moment(e.batas_waktu.jawaban_banding).diff(
@@ -261,3 +263,72 @@ exports.updateStatusSanksi = handleError(async (req, res) => {
     message: 'update status sanksi berhasil',
   })
 })
+
+exports.save = handleError(async (req, res) => {
+  const { id } = req.params
+  const { laporan: isLaporan, sanksi: isSanksi } = req.query
+  const user = req.user
+
+  let autoData = null;
+  let laporan = null;
+  let sanksi = null;
+  if (isLaporan === 'true') {
+    laporan = await cekSatuDataLaporan(res, user, id, { all: true });
+    if (!laporan) return
+    autoData = await autoSaveModel.findOne({ laporan_id: laporan._id });
+  } else if (isSanksi === 'true') {
+    sanksi = await cekSatuDataSanksi(res, user, id, { all: true });
+    if (!sanksi) return
+    autoData = await autoSaveModel.findOne({ sanksi_id: sanksi._id });
+  } else {
+    return response.error(res, {
+      message: 'query harus sanksi atau laporan yg bernilai true',
+    })
+  }
+
+  if (autoData) {
+    if (isLaporan) {
+      await autoSaveModel.updateOne({ laporan_id: laporan._id }, { laporan: req.body })
+    } else {
+      await autoSaveModel.updateOne({ sanksi_id: sanksi._id }, { sanksi: req.body })
+    }
+  } else {
+    if (isLaporan) {
+      await autoSaveModel.create({ laporan_id: laporan._id, laporan: req.body })
+    } else {
+      await autoSaveModel.create({ sanksi_id: sanksi._id, sanksi: req.body })
+    }
+  }
+
+  return response.success(res, {
+    message: 'Berhasil menyimpan data auto save',
+  })
+})
+
+exports.getSave = handleError(async (req, res) => {
+  const { id } = req.params
+  const { laporan: isLaporan, sanksi: isSanksi } = req.query
+  const user = req.user
+
+  let data = null;
+  let laporan = null;
+  let sanksi = null;
+  if (isLaporan === 'true') {
+    laporan = await cekSatuDataLaporan(res, user, id, { all: true });
+    if (!laporan) return
+    data = (await autoSaveModel.findOne({ laporan_id: laporan._id})).laporan;
+  } else if (isSanksi === 'true') {
+    sanksi = await cekSatuDataSanksi(res, user, id, { all: true });
+    if (!sanksi) return
+    data = (await autoSaveModel.findOne({ sanksi_id: sanksi._id})).sanksi;
+  } else {
+    return response.error(res, {
+      message: 'harus terdapat query sanksi atau laporan yg bernilai true',
+    })
+  }
+
+  return response.success(res, {
+    message: 'Berhasil mengambil data auto save',
+    data: data
+  })
+})

+ 6 - 6
controller/sanksi.controller.js

@@ -17,7 +17,7 @@ exports.create = handleError(async (req, res) => {
   const { no_sanksi, keterangan, from_date, to_date } = req.body
   let { pelanggaran_id } = req.body
   const { laporan_id } = req.params
-  const {dokumen:files, berita_acara} = req.files
+  const { dokumen: files, berita_acara } = req.files
   const user = req.user
 
   const isValid = validate(res, req.body, {
@@ -49,11 +49,11 @@ exports.create = handleError(async (req, res) => {
       message: 'dokumen harus ada',
     })
   }
-let dokumenBeritaAcara_id = null
-if (berita_acara) {
-const dokumenBeritaAcara = await addManyDokumen(berita_acara)
-dokumenBeritaAcara_id = dokumenBeritaAcara[0]
-}
+  let dokumenBeritaAcara_id = null
+  if (berita_acara) {
+    const dokumenBeritaAcara = await addManyDokumen(berita_acara)
+    dokumenBeritaAcara_id = dokumenBeritaAcara[0]
+  }
 
   const dokumen = await addManyDokumen(files)
   const dokumen_id = dokumen.map((e) => e._id)

+ 17 - 0
model/autoSave.model.js

@@ -0,0 +1,17 @@
+const mongoose = require('mongoose')
+const { Schema, Types } = mongoose
+const laporan = require('./laporan.model')
+const sanksi = require('./sanksi.model')
+
+module.exports = mongoose.model(
+    'AutoSave',
+    new Schema({
+        laporan_id: { type: Types.ObjectId, ref: laporan },
+        sanksi_id: { type: Types.ObjectId, ref: sanksi },
+        sanksi: { type: Object },
+        laporan: { type: Object }
+    }, {
+        timestamps: true,
+    }),
+    'autosave'
+)

+ 9 - 5
routes/v1/auto.routes.js

@@ -1,10 +1,14 @@
 const router = require('express').Router()
 const auto = require('../../controller/auto.controller')
+const verify = require('../../middleware/verifyTokenAuto')
+const auth = require('../../middleware/verifyToken')
 
-router.get('/keberatan', auto.keberatan)
-router.get('/banding', auto.banding)
-router.get('/reminder-keberatan', auto.reminderKeberatan)
-router.get('/reminder-banding', auto.reminderBanding)
-router.get('/status-sanksi', auto.updateStatusSanksi)
+router.get('/keberatan', verify, auto.keberatan)
+router.get('/banding', verify, auto.banding)
+router.get('/reminder-keberatan', verify, auto.reminderKeberatan)
+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', auth, auto.getSave)
 
 module.exports = router

+ 1 - 2
routes/v1/index.js

@@ -1,7 +1,6 @@
 const router = require('express').Router()
 const auth = require('../../middleware/verifyToken')
 const roleId = require('../../middleware/role')
-const verify = require('../../middleware/verifyTokenAuto')
 
 router.get('/', (req, res) => {
   return res.json({
@@ -21,7 +20,7 @@ router.use('/pelanggaran', auth, require('./pelanggaran.routes'))
 router.use('/lembaga', auth, roleId([2020, 2023]), require('./lembaga.routes'))
 router.use('/graph', require('./graph.routes'))
 router.use('/log', require('./log.routes'))
-router.use('/auto', verify, require('./auto.routes'))
+router.use('/auto', require('./auto.routes'))
 router.use('/pengunjung', require('./pengunjung.routes'))
 router.use('/rekomendasi', auth, require('./rekomendasi.routes'))