import { readFile } from "node:fs/promises"; import { fileURLToPath } from "node:url"; import { dirname, resolve } from "node:path"; // Helper function to convert date from yyyy-mm-dd to dd.mm.yyyy function formatDateGerman(dateString) { const [year, month, day] = dateString.split('-'); return `${day}.${month}.${year}`; } let cachedLogoDataUrl = null; async function getLogoDataUrl() { if (cachedLogoDataUrl) return cachedLogoDataUrl; try { const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const logoPath = resolve(__dirname, "../../../assets/stargilnails_logo_transparent.png"); const buf = await readFile(logoPath); const base64 = buf.toString("base64"); cachedLogoDataUrl = `data:image/png;base64,${base64}`; return cachedLogoDataUrl; } catch { return null; } } async function renderBrandedEmail(title, bodyHtml) { const logo = await getLogoDataUrl(); const domain = process.env.DOMAIN || 'localhost:5173'; const protocol = domain.includes('localhost') ? 'http' : 'https'; const homepageUrl = `${protocol}://${domain}`; const instagramProfile = process.env.INSTAGRAM_PROFILE; const tiktokProfile = process.env.TIKTOK_PROFILE; const companyName = process.env.COMPANY_NAME || 'Stargirlnails Kiel'; return `
Hallo ${name},
wir haben deine Anfrage für ${formattedDate} um ${time} erhalten.
Wir bestätigen deinen Termin in Kürze. Du erhältst eine weitere E-Mail, sobald der Termin bestätigt ist.
${statusUrl ? `⏳ Termin-Status ansehen:
Du kannst den aktuellen Status deiner Buchung jederzeit einsehen:
Status ansehen📋 Rechtliche Informationen:
Weitere Informationen findest du in unserem Impressum und Datenschutz.
Liebe Grüße,
Stargirlnails Kiel
Hallo ${name},
wir haben deinen Termin am ${formattedDate} um ${time} bestätigt.
Wir freuen uns auf dich!
📋 Wichtiger Hinweis:
Die Allgemeinen Geschäftsbedingungen (AGB) findest du im Anhang dieser E-Mail. Bitte lies sie vor deinem Termin durch.
📅 Termin verwalten:
Du kannst deinen Termin-Status einsehen und bei Bedarf stornieren:
Termin ansehen & verwalten⭐ Bewertung abgeben:
Nach deinem Termin würden wir uns über deine Bewertung freuen!
Bewertung schreibenDu kannst deine Bewertung nach dem Termin über diesen Link abgeben.
📋 Rechtliche Informationen:
Weitere Informationen findest du in unserem Impressum und Datenschutz.
Liebe Grüße,
Stargirlnails Kiel
Hallo ${name},
dein Termin am ${formattedDate} um ${time} wurde abgesagt.
Bitte buche einen neuen Termin. Bei Fragen helfen wir dir gerne weiter.
📋 Rechtliche Informationen:
Weitere Informationen findest du in unserem Impressum und Datenschutz.
Liebe Grüße,
Stargirlnails Kiel
Hallo Admin,
eine neue Buchungsanfrage ist eingegangen:
📅 Buchungsdetails:
Bitte logge dich in das Admin-Panel ein, um die Buchung zu bestätigen oder abzulehnen.
Liebe Grüße,
Stargirlnails System
Hallo ${params.name},
wir müssen deinen Termin leider verschieben. Hier ist unser Vorschlag:
📅 Übersicht
Alter Termin | ${formattedOriginalDate} um ${params.originalTime} Uhr |
Neuer Vorschlag | ${formattedProposedDate} um ${params.proposedTime} Uhr |
Behandlung | ${params.treatmentName} |
Falls du einen komplett neuen Termin buchen möchtest, kannst du deinen aktuellen Termin stornieren und einen neuen Termin auf unserer Website buchen.
Liebe Grüße,
Stargirlnails Kiel
Hallo Admin,
der Kunde ${params.customerName} hat den Terminänderungsvorschlag abgelehnt.
Bitte kontaktiere den Kunden, um eine alternative Lösung zu finden.
`; return renderBrandedEmail("Kunde hat Terminänderung abgelehnt", inner); } export async function renderAdminRescheduleAcceptedHTML(params) { const inner = `Hallo Admin,
der Kunde ${params.customerName} hat den Terminänderungsvorschlag akzeptiert.
Der Termin wurde automatisch aktualisiert.
`; return renderBrandedEmail("Kunde hat Terminänderung akzeptiert", inner); } export async function renderAdminRescheduleExpiredHTML(params) { const inner = `Hallo Admin,
${params.expiredProposals.length} Terminänderungsvorschlag${params.expiredProposals.length > 1 ? 'e' : ''} ${params.expiredProposals.length > 1 ? 'sind' : 'ist'} abgelaufen und wurde${params.expiredProposals.length > 1 ? 'n' : ''} automatisch entfernt.
⚠️ Abgelaufene Vorschläge:
${params.expiredProposals.map(proposal => `Bitte kontaktiere die Kunden, um eine alternative Lösung zu finden.
Die ursprünglichen Termine bleiben bestehen.
`; return renderBrandedEmail("Abgelaufene Terminänderungsvorschläge", inner); } export async function renderCustomerMessageHTML(params) { const { customerName, message, appointmentDate, appointmentTime, treatmentName } = params; const formattedDate = appointmentDate ? formatDateGerman(appointmentDate) : null; const domain = process.env.DOMAIN || 'localhost:5173'; const protocol = domain.includes('localhost') ? 'http' : 'https'; const legalUrl = `${protocol}://${domain}/legal`; const ownerName = process.env.OWNER_NAME || 'Stargirlnails Kiel'; const inner = `Hallo ${customerName},
${(appointmentDate && appointmentTime && treatmentName) ? `📅 Zu deinem Termin:
💬 Nachricht von ${ownerName}:
Bei Fragen oder Anliegen kannst du einfach auf diese E-Mail antworten – wir helfen dir gerne weiter!
📋 Rechtliche Informationen:
Weitere Informationen findest du in unserem Impressum und Datenschutz.
Liebe Grüße,
${ownerName}