forked from Yara724/api
66 lines
2.3 KiB
TypeScript
66 lines
2.3 KiB
TypeScript
import { VerifyLookUpMessage } from "./sms-gateway.types";
|
||
|
||
const TOKEN_KEYS = ["token", "token2", "token3", "token10"] as const;
|
||
|
||
/** Kavenegar template name → plain-text body for Parsian (placeholders: {token}, {token2}, …). */
|
||
const PARSIAN_TEMPLATE_BODIES: Record<string, string> = {
|
||
"yara724-invite-link":
|
||
"کاربر محترم، لینک ورود به پرونده یارا724:\nشناسه: {token}\n{token2}",
|
||
"yara-field-expert-link":
|
||
"کارشناس میدانی بیمه {token} ({token2}) پرونده شما را بررسی میکند.\nلینک: {token3}",
|
||
"yara-blame-agreement":
|
||
"پرونده تصادف شما ({token}) آماده امضاست.\nلینک: {token2}",
|
||
"yara-claim-link":
|
||
"پرونده خسارت شما ({token}) آماده ثبت است.\nلینک: {token2}",
|
||
"yara-expert-lock":
|
||
"کارشناس ({token3}) پرونده {token} ({token2}) را در حال بررسی دارد.",
|
||
"yara-resend-documents":
|
||
"لطفاً مدارک پرونده {token} ({token2}) را مجدداً ارسال کنید.\nلینک: {token3}",
|
||
"yara-signature":
|
||
"امضای پرونده {token} ({token2}) توسط کارشناس {token3} بررسی شد.\nلینک: {token10}",
|
||
};
|
||
|
||
function applyTokens(
|
||
pattern: string,
|
||
data: Pick<
|
||
VerifyLookUpMessage,
|
||
"token" | "token2" | "token3" | "token10"
|
||
>,
|
||
): string {
|
||
let out = pattern;
|
||
for (const key of TOKEN_KEYS) {
|
||
const value = data[key];
|
||
if (value != null && value !== "") {
|
||
out = out.split(`{${key}}`).join(value);
|
||
}
|
||
|
||
}
|
||
return out.replace(/\{token\d*\}/g, "").trim();
|
||
}
|
||
|
||
export function buildParsianTemplateMessage(
|
||
data: VerifyLookUpMessage,
|
||
): string {
|
||
const authTemplate = process.env.AUTH_SMS_TEMPLATE?.trim();
|
||
if (authTemplate && data.template === authTemplate) {
|
||
const authMessage =
|
||
process.env.AUTH_SMS_MESSAGE?.trim() ??
|
||
"کاربر محترم رمز یکبار مصرف شما:\nCode: {token}";
|
||
return applyTokens(authMessage, data);
|
||
}
|
||
|
||
const body = PARSIAN_TEMPLATE_BODIES[data.template];
|
||
if (body) {
|
||
return applyTokens(body, data);
|
||
}
|
||
|
||
const parts = [
|
||
`پیام سیستم (${data.template})`,
|
||
data.token ? `کد: ${data.token}` : "",
|
||
data.token2 ?? "",
|
||
data.token3 ?? "",
|
||
data.token10 ?? "",
|
||
].filter(Boolean);
|
||
return parts.join("\n");
|
||
}
|