import { getBranding } from '@/lib/branding/service' export interface ConsentExpiryEmailData { bankName: string daysUntilExpiry: number renewalUrl: string /** The company the bank connection belongs to. Shown so the recipient knows * which of their companies the email concerns; never used as the sender. */ companyName: string isExpired: boolean } /** * Consent expiry notification emails. * * Tone and layout are deliberately calm: a PSD2 consent running out is * routine, not an incident. No red, no urgency chrome; the email is signed * by the app (never the recipient's own company), states plainly why the * recipient got it, and shows the destination URL in plain text next to the * button so it does not pattern-match phishing. */ const SERIF = `Georgia, 'Times New Roman', serif` const SANS = `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif` function dagar(n: number): string { return `${n} ${n === 1 ? 'dag' : 'dagar'}` } /** * Generate HTML email for consent expiry notification */ export function generateConsentExpiryEmailHtml(data: ConsentExpiryEmailData): string { const { bankName, daysUntilExpiry, renewalUrl, companyName, isExpired } = data const { appName, supportEmail } = getBranding() const title = isExpired ? 'Bankkopplingen behöver förnyas' : `Bankkopplingen löper ut om ${dagar(daysUntilExpiry)}` const intro = isExpired ? `Banksamtycket för ${bankName} har löpt ut och den automatiska hämtningen av nya transaktioner är pausad.` : `Banksamtycket för ${bankName} löper ut om ${dagar(daysUntilExpiry)}.` const explanation = 'Det här är väntat: av säkerhetsskäl gäller ett banksamtycke (PSD2) bara en begränsad tid, och därefter behöver det godkännas på nytt hos banken.' const consequence = isExpired ? 'Ingenting har försvunnit. Redan hämtade transaktioner och din bokföring påverkas inte, och när kopplingen är förnyad hämtas mellanliggande transaktioner ikapp.' : 'Förnya gärna i förväg så fortsätter transaktionerna att hämtas utan avbrott. Din bokföring påverkas inte.' return `
${intro}
${explanation}
${consequence}
| Bank | ${bankName} |
| Företag | ${companyName} |
Knappen leder till ${renewalUrl}.
Du kan också logga in som vanligt och gå till Inställningar och sedan Bank.
Med vänliga hälsningar,
${appName}
Du får det här mejlet eftersom det finns en bankkoppling i ${appName}${companyName ? ` för ${companyName}` : ''}. Undrar du något? Mejla ${supportEmail}.