andi 3 лет назад
Родитель
Сommit
4702098827

+ 12 - 0
controller/auth.controller.js

@@ -90,9 +90,21 @@ exports.login = handleError(async (req, res) => {
     token: `Bearer ${accessToken}`,
     user: cekUser,
   }
+  const now = new Date()
+  const time = now.getTime()
+  now.setTime(time + 24 * 60 * 60 * 1000)
+  res.cookie('sidali-cookie', accessToken, { httpOnly: true, expires: now })
 
   response.success(res, {
     message: 'Berhasil Login',
     data,
   })
 })
+
+exports.logout = (req, res) => {
+  res.cookie('sidali-cookie', '', { expires: new Date() })
+
+  response.success(res, {
+    message: 'Berhasil Logout',
+  })
+}

+ 31 - 4
controller/auto.controller.js

@@ -121,7 +121,7 @@ exports.reminderKeberatan = handleError(async (req, res) => {
     })
     .populate('user')
     .populate('laporan')
-  Promise.all(
+  const notif = await Promise.all(
     dataSanksi.map(async (e) => {
       if (
         e.batas_waktu.jawaban_keberatan &&
@@ -166,8 +166,11 @@ exports.reminderKeberatan = handleError(async (req, res) => {
     })
   )
 
+  let message = 'Tidak ada notifikasi yang dikirim'
+  if (notif.length) message = 'Notifikasi berhasil terkirim'
+
   return response.success(res, {
-    message: 'Notifikasi berhasil terkirim',
+    message,
   })
 })
 
@@ -185,7 +188,7 @@ exports.reminderBanding = handleError(async (req, res) => {
     })
     .populate('user')
     .populate('laporan')
-  Promise.all(
+  const notif = await Promise.all(
     dataSanksi.map(async (e) => {
       if (
         e.batas_waktu.jawaban_banding &&
@@ -230,7 +233,31 @@ exports.reminderBanding = handleError(async (req, res) => {
     })
   )
 
+  let message = 'Tidak ada notifikasi yang dikirim'
+  if (notif.length) message = 'Notifikasi berhasil terkirim'
+
   return response.success(res, {
-    message: 'Notifikasi berhasil terkirim',
+    message,
+  })
+})
+
+exports.updateStatusSanksi = handleError(async (req, res) => {
+  const sanksi = await sanksiModel.find({
+    'masa_berlaku.to_date': {
+      $lte: new Date().toISOString(),
+    },
+    aktif: true,
+  })
+
+  Promise.all(
+    sanksi.map(async (e) =>
+      sanksiModel.findByIdAndUpdate(e._id, {
+        aktif: false,
+      })
+    )
+  )
+
+  return response.success(res, {
+    message: 'update status sanksi berhasil',
   })
 })

+ 45 - 2
controller/sanksi.controller.js

@@ -88,8 +88,15 @@ exports.create = handleError(async (req, res) => {
 
 exports.getAll = handleError(async (req, res) => {
   const user = req.user
-  const { keberatan, jawaban, banding, cabutSanksi, perbaikan, aktif, delegasi } =
-    req.query
+  const {
+    keberatan,
+    jawaban,
+    banding,
+    cabutSanksi,
+    perbaikan,
+    aktif,
+    delegasi,
+  } = req.query
   const where = {}
   if (aktif && aktif === 'false') {
     where.aktif = false
@@ -155,3 +162,39 @@ exports.getOne = handleError(async (req, res) => {
     data: sanksi,
   })
 })
+
+exports.editTmt = handleError(async (req, res) => {
+  const user = req.user
+  const { id } = req.params
+  const { from_date, to_date } = req.body
+
+  const sanksi = await cekSatuDataSanksi(res, user, id)
+  if (!sanksi) return
+
+  const isValid = validate(res, req.body, {
+    from_date: { type: 'date', convert: true },
+    to_date: { type: 'date', convert: true },
+  })
+  if (!isValid) return
+
+  const data = await sanksiModel.findByIdAndUpdate(sanksi._id, {
+    masa_berlaku: {
+      from_date,
+      to_date,
+    },
+  })
+
+  await pemantauanModel.create({
+    laporan: sanksi.laporan._id,
+    user: user._id,
+    action: 'EDIT TMT',
+    pt_id: sanksi.laporan.pt.id,
+    keterangan: 'Mengubah masa berlaku sanksi',
+    for_public: true,
+  })
+
+  return response.success(res, {
+    message: 'Berhasil update tmt',
+    data,
+  })
+})

+ 5 - 2
middleware/verifyToken.js

@@ -6,7 +6,8 @@ module.exports = (req, res, next) => {
   const authHeader = req.headers.authorization
   const token =
     (req.params.token && req.params.token.split(' ')[1]) ||
-    (authHeader && authHeader.split(' ')[1])
+    (authHeader && authHeader.split(' ')[1]) ||
+    req.cookies['sidali-cookie']
 
   if (!token)
     return response.error(res, {
@@ -15,11 +16,13 @@ module.exports = (req, res, next) => {
     })
 
   jwt.verify(token, process.env.SECRET, async (err, data) => {
-    if (err)
+    if (err) {
       return response.error(res, {
         code: 401,
         message: 'Unauthorized',
       })
+    }
+
     try {
       const user = await userModel.findById(data._id)
       req.user = user

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

@@ -1,6 +1,8 @@
 const router = require('express').Router()
 const auth = require('../../controller/auth.controller')
+const verify = require('../../middleware/verifyToken')
 
 router.post('/login', auth.login)
+router.delete('/logout', verify, auth.logout)
 
 module.exports = router

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

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

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

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