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>} */ 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>} */ 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 }] } }