Add shared-number review routes and block manual send for unreleased numbers
This commit is contained in:
@@ -1,11 +1,16 @@
|
||||
import {
|
||||
addOptOut,
|
||||
addSharedNumberOverride,
|
||||
countDailyOutreachUsage,
|
||||
getSetting,
|
||||
isNumberSharedAcrossLeads,
|
||||
isOptedOut,
|
||||
isSharedNumberOverridden,
|
||||
listMessageTemplates,
|
||||
listOptOuts,
|
||||
listSharedNumberGroups,
|
||||
removeOptOut,
|
||||
removeSharedNumberOverride,
|
||||
reserveOutreachSend,
|
||||
saveWhatsAppVerification,
|
||||
finishOutreachSend,
|
||||
@@ -86,6 +91,10 @@ export function registerOutreachRoutes(router, { db, whatsapp }) {
|
||||
json(409, { ok: false, erro: 'numero bloqueado por opt-out' });
|
||||
return;
|
||||
}
|
||||
if (isNumberSharedAcrossLeads(db, number) && !isSharedNumberOverridden(db, number)) {
|
||||
json(409, { ok: false, erro: 'numero compartilhado por varios leads - revise em Configuracoes antes de enviar' });
|
||||
return;
|
||||
}
|
||||
const limit = dailyLimitStatus(db);
|
||||
if (limit.restante <= 0) {
|
||||
json(429, { ok: false, erro: `limite diario atingido (${limit.enviadosHoje}/${limit.limite})`, ...limit });
|
||||
@@ -220,4 +229,27 @@ export function registerOutreachRoutes(router, { db, whatsapp }) {
|
||||
}
|
||||
json(200, { ok: true });
|
||||
});
|
||||
|
||||
router.add('GET', '/api/outreach/shared-numbers', async (req, res, { json }) => {
|
||||
json(200, { groups: listSharedNumberGroups(db) });
|
||||
});
|
||||
|
||||
router.add('POST', '/api/outreach/shared-numbers/:numero/liberar', async (req, res, { json, params, body, user }) => {
|
||||
if (!requireAdmin(user, json)) return;
|
||||
const motivo = String(body?.motivo || '').trim();
|
||||
if (!motivo) {
|
||||
json(400, { erro: 'motivo obrigatorio para liberar numero compartilhado' });
|
||||
return;
|
||||
}
|
||||
json(201, { override: addSharedNumberOverride(db, params.numero, motivo) });
|
||||
});
|
||||
|
||||
router.add('DELETE', '/api/outreach/shared-numbers/:numero/liberar', async (req, res, { json, params, user }) => {
|
||||
if (!requireAdmin(user, json)) return;
|
||||
if (!removeSharedNumberOverride(db, params.numero)) {
|
||||
json(404, { erro: 'override nao encontrado' });
|
||||
return;
|
||||
}
|
||||
json(200, { ok: true });
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user