|
@@ -2,7 +2,12 @@ const handleError = require('../utils/handleError')
|
|
|
const response = require('../utils/responseHandler')
|
|
const response = require('../utils/responseHandler')
|
|
|
const { notifWA } = require('../utils/notifFunction')
|
|
const { notifWA } = require('../utils/notifFunction')
|
|
|
const sanksiModel = require('../model/sanksi.model')
|
|
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) => {
|
|
exports.keberatan = handleError(async (req, res) => {
|
|
|
const dataSanksi = await sanksiModel
|
|
const dataSanksi = await sanksiModel
|
|
@@ -101,3 +106,131 @@ exports.banding = handleError(async (req, res) => {
|
|
|
message: 'Notifikasi berhasil terkirim',
|
|
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',
|
|
|
|
|
+ })
|
|
|
|
|
+})
|