|
@@ -109,59 +109,37 @@ exports.reminderKeberatan = handleError(async (req, res) => {
|
|
|
})
|
|
})
|
|
|
.populate('user')
|
|
.populate('user')
|
|
|
.populate('laporan')
|
|
.populate('laporan')
|
|
|
- const notif = await Promise.all(
|
|
|
|
|
|
|
+
|
|
|
|
|
+ let count = 0
|
|
|
|
|
+ const errors = []
|
|
|
|
|
+
|
|
|
|
|
+ await Promise.all(
|
|
|
dataSanksi.map(async (e) => {
|
|
dataSanksi.map(async (e) => {
|
|
|
- const dayLeft = moment(e.batas_waktu.jawaban_keberatan).diff(
|
|
|
|
|
- new Date(),
|
|
|
|
|
- 'days'
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ const targetDate = e.batas_waktu?.jawaban_keberatan
|
|
|
|
|
+ const dayLeft = moment(targetDate).diff(new Date(), 'days')
|
|
|
if (dayLeft > 0 && dayLeft <= 7) {
|
|
if (dayLeft > 0 && dayLeft <= 7) {
|
|
|
try {
|
|
try {
|
|
|
await notifWA(TEMPLATE_REMINDER, [
|
|
await notifWA(TEMPLATE_REMINDER, [
|
|
|
- {
|
|
|
|
|
- key: '1',
|
|
|
|
|
- value: 'no_laporan',
|
|
|
|
|
- value_text: e.laporan.no_laporan
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- 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.`
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ { key: '1', value: 'no_laporan', value_text: e.laporan.no_laporan },
|
|
|
|
|
+ { 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.` }
|
|
|
])
|
|
])
|
|
|
- const contacts = await kontakModel.find({
|
|
|
|
|
- 'role.id': {
|
|
|
|
|
- $in: [PTB_ADMIN, PTB_DIKTI, PTB_LLDIKTI]
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ count++
|
|
|
|
|
+ const contacts = await kontakModel.find({ 'role.id': { $in: [PTB_ADMIN, PTB_DIKTI, PTB_LLDIKTI] } })
|
|
|
await logModel.create({
|
|
await logModel.create({
|
|
|
- aktivitas: `Server berhasil mengirim notifikasi Whatsapp kepada ${contacts.map((e) => e.nama).join(', ')} dengan Nomor Laporan ${e.laporan.no_laporan} terhadap ${e.laporan.pt.nama} untuk Mengajukan Keberatan`
|
|
|
|
|
|
|
+ aktivitas: `Server berhasil mengirim notifikasi Whatsapp kepada ${contacts.map((c) => c.nama).join(', ')} dengan Nomor Laporan ${e.laporan.no_laporan} terhadap ${e.laporan.pt.nama} untuk Mengajukan Keberatan`
|
|
|
})
|
|
})
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
- return response.error(res, {
|
|
|
|
|
- message: 'Notifikasi gagal terkirim',
|
|
|
|
|
- error: error.message
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ errors.push({ laporan: e.laporan.no_laporan, error: error.message })
|
|
|
|
|
+ await logModel.create({ aktivitas: `Server gagal mengirim notifikasi Whatsapp untuk Laporan ${e.laporan.no_laporan}, Error: ${error.message}` })
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- let message = 'Tidak ada notifikasi yang dikirim'
|
|
|
|
|
- if (notif.length) message = 'Notifikasi berhasil terkirim'
|
|
|
|
|
- return response.success(res, {
|
|
|
|
|
- message
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ let message = count === 0 ? 'Tidak ada notifikasi yang dikirim' : `Notifikasi berhasil terkirim (${count}/${dataSanksi.length})`
|
|
|
|
|
+ return response.success(res, { message, data: { sent: count, total: dataSanksi.length, errors } })
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
exports.reminderBanding = handleError(async (req, res) => {
|
|
exports.reminderBanding = handleError(async (req, res) => {
|
|
@@ -178,59 +156,40 @@ exports.reminderBanding = handleError(async (req, res) => {
|
|
|
})
|
|
})
|
|
|
.populate('user')
|
|
.populate('user')
|
|
|
.populate('laporan')
|
|
.populate('laporan')
|
|
|
- const notif = await Promise.all(
|
|
|
|
|
|
|
+
|
|
|
|
|
+ let count = 0
|
|
|
|
|
+ const errors = []
|
|
|
|
|
+
|
|
|
|
|
+ await Promise.all(
|
|
|
dataSanksi.map(async (e) => {
|
|
dataSanksi.map(async (e) => {
|
|
|
- const dayLeft = moment(e.batas_waktu.jawaban_banding).diff(
|
|
|
|
|
- new Date(),
|
|
|
|
|
- 'days'
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ const dayLeft = moment(e.batas_waktu.jawaban_banding).diff(new Date(), 'days')
|
|
|
if (dayLeft > 0 && dayLeft <= 7) {
|
|
if (dayLeft > 0 && dayLeft <= 7) {
|
|
|
try {
|
|
try {
|
|
|
await notifWA(TEMPLATE_REMINDER, [
|
|
await notifWA(TEMPLATE_REMINDER, [
|
|
|
- {
|
|
|
|
|
- key: '1',
|
|
|
|
|
- value: 'no_laporan',
|
|
|
|
|
- value_text: e.laporan.no_laporan
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- 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.`
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ { key: '1', value: 'no_laporan', value_text: e.laporan.no_laporan },
|
|
|
|
|
+ { 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.` }
|
|
|
])
|
|
])
|
|
|
|
|
+ count++
|
|
|
const contacts = await kontakModel.find({
|
|
const contacts = await kontakModel.find({
|
|
|
- 'role.id': {
|
|
|
|
|
- $in: [PTB_ADMIN, PTB_DIKTI, PTB_LLDIKTI]
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ 'role.id': { $in: [PTB_ADMIN, PTB_DIKTI, PTB_LLDIKTI] }
|
|
|
})
|
|
})
|
|
|
await logModel.create({
|
|
await logModel.create({
|
|
|
aktivitas: `Server berhasil mengirim notifikasi Whatsapp kepada ${contacts.map((e) => e.nama).join(', ')} dengan Nomor Laporan ${e.laporan.no_laporan} terhadap ${e.laporan.pt.nama} untuk Mengajukan Banding`
|
|
aktivitas: `Server berhasil mengirim notifikasi Whatsapp kepada ${contacts.map((e) => e.nama).join(', ')} dengan Nomor Laporan ${e.laporan.no_laporan} terhadap ${e.laporan.pt.nama} untuk Mengajukan Banding`
|
|
|
})
|
|
})
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
- return response.error(res, {
|
|
|
|
|
- message: 'Notifikasi gagal terkirim',
|
|
|
|
|
- error: error.message
|
|
|
|
|
|
|
+ errors.push({ laporan: e.laporan.no_laporan, error: error.message })
|
|
|
|
|
+ await logModel.create({
|
|
|
|
|
+ aktivitas: `Server gagal mengirim notifikasi Whatsapp untuk Laporan ${e.laporan.no_laporan}, Error: ${error.message}`
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- let message = 'Tidak ada notifikasi yang dikirim'
|
|
|
|
|
- if (notif.length) message = 'Notifikasi berhasil terkirim'
|
|
|
|
|
- return response.success(res, {
|
|
|
|
|
- message
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ let message = count === 0 ? 'Tidak ada notifikasi yang dikirim' : `Notifikasi berhasil terkirim (${count}/${dataSanksi.length})`
|
|
|
|
|
+ return response.success(res, { message, data: { sent: count, total: dataSanksi.length, errors } })
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
exports.updateStatusSanksi = handleError(async (req, res) => {
|
|
exports.updateStatusSanksi = handleError(async (req, res) => {
|