From 2a253394780173ae23493d047af5f8e7e434d1fe Mon Sep 17 00:00:00 2001 From: mhmmdafif Date: Wed, 7 Jan 2026 12:16:53 +0700 Subject: [PATCH] repair: resend wa --- services/notification_error.service.js | 69 +++++++++++++------------- 1 file changed, 34 insertions(+), 35 deletions(-) diff --git a/services/notification_error.service.js b/services/notification_error.service.js index ac7755d..877c903 100644 --- a/services/notification_error.service.js +++ b/services/notification_error.service.js @@ -172,58 +172,57 @@ class NotificationService { static async resendNotification(id) { const deviceNotification = await getNotificationByIdDb(id); - if (!deviceNotification) throw new ErrorHandler(404, "Notification Data not found"); + if (!deviceNotification) throw new ErrorHandler(404, "Data not found"); const errorCode = await getErrorCodeByIdDb(deviceNotification.error_code_id); const dataExist = await getUsersNotificationErrorDb(id); const activeUsers = dataExist?.filter((user) => user.is_active === true) || []; - if (activeUsers.length < 1) { - throw new ErrorHandler(404, "No active contacts found"); - } + if (activeUsers.length < 1) throw new ErrorHandler(404, "No active contacts"); this._executeResendInBackground(id, activeUsers, deviceNotification, errorCode) - .catch(err => console.error("Background Resend Error:", err)); + .catch(err => console.log("error:", err)); return { - message: "Notification Error resend has prosseced", - total_users: activeUsers.length, - status: true + status: "success", + message: "Pesan sedang diproses di background", + count: activeUsers.length }; } static async _executeResendInBackground(id, activeUsers, deviceNotification, errorCode) { - const batchSize = 100; - - for (let i = 0; i < activeUsers.length; i += batchSize) { - const batch = activeUsers.slice(i, i + batchSize); - - await Promise.all(batch.map(async (user) => { - try { - const tokenRedirect = await generateTokenRedirect(user.contact_phone, user.contact_name, id); - const encodedToken = encodeURIComponent(tokenRedirect); - const shortUrl = await shortUrltiny(encodedToken); + console.log(`Background process untuk ID: ${id}`); - const bodyWithUrl = - `Hai ${user.contact_name || "-"}\n` + - `Terjadi peringatan dengan kode error ${errorCode?.error_code || "-"} - ${errorCode?.error_code_name || "-"} ` + - `pada device ${deviceNotification.device_name || "-"}, silahkan cek detail pada link berikut:\n` + - `${shortUrl}`; + for (const user of activeUsers) { + try { + console.log(`Mengirim ke: ${user.contact_phone}`); - const resultSend = await sendNotifikasi(user.contact_phone, bodyWithUrl); - const isSuccess = !resultSend?.error; + const tokenRedirect = await generateTokenRedirect(user.contact_phone, user.contact_name, id); + const encodedToken = encodeURIComponent(tokenRedirect); + + const shortUrl = await shortUrltiny(encodedToken); + console.log(`Link: ${shortUrl}`); - await updateNotificationErrorDb(user.notification_error_id, { - is_send: isSuccess, - is_delivered: isSuccess, - }); - } catch (err) { - console.error(`Error sending to ${user.contact_phone}:`, err.message); - } - })); - - await new Promise(resolve => setTimeout(resolve, 500)); + const bodyWithUrl = `Hai ${user.contact_name || "-"}\n` + + `Terjadi peringatan dengan kode ${errorCode?.error_code || "-"} - ${errorCode?.error_code_name} pada device ${deviceNotification.device_name || "-"}.\n` + + `silahkan cek detail pada link berikut:\n ${shortUrl}`; + + const resultSend = await sendNotifikasi(user.contact_phone, bodyWithUrl); + + console.log(`WHATSAPP API Respon:`, JSON.stringify(resultSend)); + + const isSuccess = !resultSend?.error; + + await updateNotificationErrorDb(user.notification_error_id, { + is_send: isSuccess, + is_delivered: isSuccess, + }); + + } catch (err) { + console.log(`error pada ${user.contact_phone}:`, err.message); + } } + console.log(` pesan untuk ID: ${id} selesai diproses.`); } }