| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- const kontakModel = require('../../model/kontak.model')
- const { PTB_DIKTI, SUCCESS } = require('../constanta')
- const { enqueueWa } = require('../../services/waJob.service')
- const { logError } = require('../logger')
- /**
- * Enqueue WA job ke background worker, bukan kirim langsung.
- * Return shape tetap [{ status }] supaya caller lama (notif[0].status === SUCCESS) tidak perlu berubah.
- *
- * @param templateId
- * @param data
- * @param where {object?}
- * @returns {Promise<Array<{status: string, jobId?: string}>>}
- */
- exports.notifWA = async (templateId, data, where = {}) => {
- const kontak = await kontakModel.find({ ...where, 'role.id': PTB_DIKTI })
- const contacts = kontak.map((e) => ({ name: e.nama, number: e.no_hp }))
- try {
- const job = await enqueueWa(templateId, contacts, data, 'notifWA')
- return [{ status: SUCCESS, jobId: job._id }]
- } catch (error) {
- logError('WA_SEND_V1', 'Failed to enqueue notifWA', { templateId, error: error.message })
- return [{ status: 'failed', error: error.message }]
- }
- }
- /**
- * @param templateId
- * @param contacts
- * @param data
- * @returns {Promise<Array<{status: string, jobId?: string}>>}
- */
- exports.notifWA2 = async (templateId, contacts, data) => {
- try {
- const job = await enqueueWa(templateId, contacts, data, 'notifWA2')
- return [{ status: SUCCESS, jobId: job._id }]
- } catch (error) {
- logError('WA_SEND_V1', 'Failed to enqueue notifWA2', { templateId, error: error.message })
- return [{ status: 'failed', error: error.message }]
- }
- }
|