| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 | 
							- 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,
 
-   TEMPLATE_REMINDER,
 
- } = require('../utils/constanta')
 
- const moment = require('moment')
 
- exports.keberatan = handleError(async (req, res) => {
 
-   const dataSanksi = await sanksiModel
 
-     .find({
 
-       'batas_waktu.keberatan': {
 
-         $lt: new Date().toISOString(),
 
-       },
 
-       'batas_waktu.jawaban_keberatan': {
 
-         $exists: false,
 
-         $eq: null,
 
-       },
 
-     })
 
-     .populate('user')
 
-     .populate('laporan')
 
-   if (!dataSanksi.length) {
 
-     return response.success(res, {
 
-       message: 'Tidak ada notifikasi yg dikirim',
 
-     })
 
-   }
 
-   Promise.all(
 
-     dataSanksi.map(
 
-       async (sanksi) =>
 
-         await notifWA(TEMPLATE_KEBERATAN, [
 
-           {
 
-             key: '1',
 
-             value: 'nama_pt',
 
-             value_text: sanksi.laporan.pt.nama,
 
-           },
 
-           {
 
-             key: '2',
 
-             value: 'pemberi_sanksi',
 
-             value_text: sanksi.user.lembaga.nama,
 
-           },
 
-           {
 
-             key: '3',
 
-             value: 'no_sanksi',
 
-             value_text: sanksi.no_sanksi,
 
-           },
 
-         ])
 
-     )
 
-   )
 
-   return response.success(res, {
 
-     message: 'Notifikasi berhasil terkirim',
 
-   })
 
- })
 
- exports.banding = handleError(async (req, res) => {
 
-   const dataSanksi = await sanksiModel
 
-     .find({
 
-       'batas_waktu.banding': {
 
-         $lt: new Date().toISOString(),
 
-       },
 
-       'batas_waktu.jawaban_banding': {
 
-         $exists: false,
 
-         $eq: null,
 
-       },
 
-       'batas_waktu.jawaban_keberatan': {
 
-         $exists: true,
 
-         $ne: null,
 
-       },
 
-     })
 
-     .populate('user')
 
-     .populate('laporan')
 
-   if (!dataSanksi.length) {
 
-     return response.success(res, {
 
-       message: 'Tidak ada notifikasi yg dikirim',
 
-     })
 
-   }
 
-   Promise.all(
 
-     dataSanksi.map(
 
-       async (sanksi) =>
 
-         await notifWA(TEMPLATE_BANDING, [
 
-           {
 
-             key: '1',
 
-             value: 'nama_pt',
 
-             value_text: sanksi.laporan.pt.nama,
 
-           },
 
-           {
 
-             key: '2',
 
-             value: 'pemberi_sanksi',
 
-             value_text: sanksi.user.lembaga.nama,
 
-           },
 
-           {
 
-             key: '3',
 
-             value: 'no_sanksi',
 
-             value_text: sanksi.no_sanksi,
 
-           },
 
-         ])
 
-     )
 
-   )
 
-   return response.success(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',
 
-   })
 
- })
 
 
  |