Feature: Admin kann Nachrichten an Kunden senden
- Neues Email-Template für Kundennachrichten - RPC-Funktion sendCustomerMessage für zukünftige Termine - UI: Nachricht-Button und Modal in Admin-Buchungen - Email mit BCC an Admin für Monitoring - HTML-Escaping für sichere Nachrichtenanzeige - Detailliertes Logging für Debugging
This commit is contained in:
@@ -347,3 +347,43 @@ export async function renderAdminRescheduleExpiredHTML(params: {
|
||||
return renderBrandedEmail("Abgelaufene Terminänderungsvorschläge", inner);
|
||||
}
|
||||
|
||||
export async function renderCustomerMessageHTML(params: {
|
||||
customerName: string;
|
||||
message: string;
|
||||
appointmentDate?: string;
|
||||
appointmentTime?: string;
|
||||
treatmentName?: string;
|
||||
}) {
|
||||
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 = `
|
||||
<p>Hallo ${customerName},</p>
|
||||
${(appointmentDate && appointmentTime && treatmentName) ? `
|
||||
<div style="background-color: #f8fafc; border-left: 4px solid #db2777; padding: 16px; margin: 20px 0; border-radius: 4px;">
|
||||
<p style="margin: 0; font-weight: 600; color: #db2777;">📅 Zu deinem Termin:</p>
|
||||
<ul style="margin: 8px 0 0 0; color: #475569; list-style: none; padding: 0;">
|
||||
<li><strong>Behandlung:</strong> ${treatmentName}</li>
|
||||
<li><strong>Datum:</strong> ${formattedDate}</li>
|
||||
<li><strong>Uhrzeit:</strong> ${appointmentTime}</li>
|
||||
</ul>
|
||||
</div>
|
||||
` : ''}
|
||||
<div style="background-color: #fef9f5; border-left: 4px solid #f59e0b; padding: 16px; margin: 20px 0; border-radius: 4px;">
|
||||
<p style="margin: 0; font-weight: 600; color: #f59e0b;">💬 Nachricht von ${ownerName}:</p>
|
||||
<div style="margin: 12px 0 0 0; color: #475569; white-space: pre-wrap; line-height: 1.6;">${message.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')}</div>
|
||||
</div>
|
||||
<p>Bei Fragen oder Anliegen kannst du einfach auf diese E-Mail antworten – wir helfen dir gerne weiter!</p>
|
||||
<div style="background-color: #f8fafc; border-left: 4px solid #3b82f6; padding: 16px; margin: 20px 0; border-radius: 4px;">
|
||||
<p style="margin: 0; font-weight: 600; color: #3b82f6;">📋 Rechtliche Informationen:</p>
|
||||
<p style="margin: 8px 0 12px 0; color: #475569;">Weitere Informationen findest du in unserem <a href="${legalUrl}" style="color: #3b82f6; text-decoration: underline;">Impressum und Datenschutz</a>.</p>
|
||||
</div>
|
||||
<p>Liebe Grüße,<br/>${ownerName}</p>
|
||||
`;
|
||||
return renderBrandedEmail("Nachricht zu deinem Termin", inner);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user