yazid138 3 лет назад
Родитель
Сommit
8d93b7330b
3 измененных файлов с 138 добавлено и 2 удалено
  1. 134 1
      controller/auto.controller.js
  2. 2 0
      routes/v1/auto.routes.js
  3. 2 1
      utils/constanta.js

+ 134 - 1
controller/auto.controller.js

@@ -2,7 +2,12 @@ const handleError = require('../utils/handleError')
 const response = require('../utils/responseHandler')
 const { notifWA } = require('../utils/notifFunction')
 const sanksiModel = require('../model/sanksi.model')
-const { TEMPLATE_KEBERATAN, TEMPLATE_BANDING } = require('../utils/constanta')
+const {
+  TEMPLATE_KEBERATAN,
+  TEMPLATE_BANDING,
+  TEMPLATE_REMINDER,
+} = require('../utils/constanta')
+const moment = require('moment')
 
 exports.keberatan = handleError(async (req, res) => {
   const dataSanksi = await sanksiModel
@@ -101,3 +106,131 @@ exports.banding = handleError(async (req, res) => {
     message: 'Notifikasi berhasil terkirim',
   })
 })
+
+exports.reminderKeberatan = handleError(async (req, res) => {
+  let dataSanksi = await sanksiModel
+    .find({
+      'batas_waktu.jawaban_keberatan': {
+        $exists: true,
+        $ne: null,
+      },
+      'jawaban.keberatan': {
+        $exists: false,
+        $eq: null,
+      },
+    })
+    .populate('user')
+    .populate('laporan')
+  Promise.all(
+    dataSanksi.map(async (e) => {
+      if (
+        e.batas_waktu.jawaban_keberatan &&
+        new Date() >
+          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(
+          new Date(),
+          'days'
+        )
+        try {
+          await notifWA(TEMPLATE_REMINDER, [
+            {
+              key: '1',
+              value: 'no_sanksi',
+              value_text: e.no_sanksi,
+            },
+            {
+              key: '2',
+              value: 'keterangan',
+              value_text: 'Proses Menjawab Pengajuan Keberatan',
+            },
+            {
+              key: '3',
+              value: 'pt',
+              value_text: e.laporan.pt.nama,
+            },
+            {
+              key: '4',
+              value: 'masa',
+              value_text: `menjawab pengajuan keberatan tersisa ${dayLeft} hari lagi.`,
+            },
+          ])
+        } catch (error) {
+          return response.error(res, {
+            message: 'Notifikasi gagal terkirim',
+            error: error.message,
+          })
+        }
+      }
+    })
+  )
+
+  return response.success(res, {
+    message: 'Notifikasi berhasil terkirim',
+  })
+})
+
+exports.reminderBanding = handleError(async (req, res) => {
+  let dataSanksi = await sanksiModel
+    .find({
+      'batas_waktu.jawaban_banding': {
+        $exists: true,
+        $ne: null,
+      },
+      'jawaban.banding': {
+        $exists: false,
+        $eq: null,
+      },
+    })
+    .populate('user')
+    .populate('laporan')
+  Promise.all(
+    dataSanksi.map(async (e) => {
+      if (
+        e.batas_waktu.jawaban_banding &&
+        new Date() >
+          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(
+          new Date(),
+          'days'
+        )
+        try {
+          await notifWA(TEMPLATE_REMINDER, [
+            {
+              key: '1',
+              value: 'no_sanksi',
+              value_text: e.no_sanksi,
+            },
+            {
+              key: '2',
+              value: 'keterangan',
+              value_text: 'Proses Menjawab Pengajuan Banding',
+            },
+            {
+              key: '3',
+              value: 'pt',
+              value_text: e.laporan.pt.nama,
+            },
+            {
+              key: '4',
+              value: 'masa',
+              value_text: `menjawab pengajuan banding tersisa ${dayLeft} hari lagi.`,
+            },
+          ])
+        } catch (error) {
+          return response.error(res, {
+            message: 'Notifikasi gagal terkirim',
+            error: error.message,
+          })
+        }
+      }
+    })
+  )
+
+  return response.success(res, {
+    message: 'Notifikasi berhasil terkirim',
+  })
+})

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

@@ -3,5 +3,7 @@ const auto = require('../../controller/auto.controller')
 
 router.get('/keberatan', auto.keberatan)
 router.get('/banding', auto.banding)
+router.get('/reminder-keberatan', auto.reminderKeberatan)
+router.get('/reminder-banding', auto.reminderBanding)
 
 module.exports = router

+ 2 - 1
utils/constanta.js

@@ -6,4 +6,5 @@ exports.TEMPLATE_KEBERATAN = '8d2d8bfd-4100-4f78-b877-caffded2d56a'
 exports.TEMPLATE_BANDING = '2bbc0080-1187-4213-8017-b6d1d6ec3cbb'
 exports.TEMPLATE_LAPORAN = 'd5609c3c-e9e9-4dbe-9a4e-e8fa772d6770'
 exports.TEMPLATE_PERBAIKAN_DOKUMEN = '891ee9c7-39f8-416e-af5c-6b3a10e9dbec'
-exports.TEMPLATE_VERIFIKASI = '37a9ccba-e1bc-4d02-86e0-3be4c718af2a'
+exports.TEMPLATE_VERIFIKASI = '37a9ccba-e1bc-4d02-86e0-3be4c718af2a'
+exports.TEMPLATE_REMINDER = '960eaacb-0dd9-42a6-b331-60fac972eb96'