/** * Source-of-truth: ticket-assigned email template. * * Uses the shared email layout wrapper. Body content is built from * per-language translated strings so that only text differs between locales. */ const { wrapEmailLayout } = require('../../_shared/emailLayout.cjs'); const { BADGE_BG, BRAND_DARK, BRAND_PRIMARY, INFO_BOX_BG, INFO_BOX_BORDER, } = require('../../_shared/constants.cjs'); const TEMPLATE_NAME = 'ticket-assigned'; const SUBTYPE_NAME = 'Ticket Assigned'; const SUBJECTS = { en: 'Ticket Assigned • {{ticket.title}} ({{ticket.priority}})', fr: 'Ticket Assigné • {{ticket.title}} ({{ticket.priority}})', es: 'Ticket Asignado • {{ticket.title}} ({{ticket.priority}})', de: 'Ticket Zugewiesen • {{ticket.title}} ({{ticket.priority}})', nl: 'Ticket Toegewezen • {{ticket.title}} ({{ticket.priority}})', it: 'Ticket assegnato • {{ticket.title}} ({{ticket.priority}})', pl: 'Zgłoszenie przypisane • {{ticket.title}} ({{ticket.priority}})', }; /* eslint-disable max-len */ const COPY = { en: { headerLabel: 'Ticket Assigned', intro: 'You have been assigned to a ticket for {{ticket.clientName}}. Review the details below and take action.', badgePrefix: 'Ticket #', priority: 'Priority', status: 'Status', assignedBy: 'Assigned By', assignedTo: 'Assigned To', requester: 'Requester', board: 'Board', category: 'Category', location: 'Location', descriptionLabel: 'Description', descriptionVar: '{{{ticket.description}}}', viewButton: 'View Ticket', footer: 'Powered by Alga PSA · Keeping teams aligned', textHeader: 'Ticket Assigned to You', textAssignedBy: 'Assigned By', textAssigned: 'Assigned To', textRequester: 'Requester', textDescription: 'Description', textView: 'View ticket', }, fr: { headerLabel: 'Ticket Assigné', intro: 'Ce ticket vous a été assigné pour {{ticket.clientName}}. Consultez les détails ci-dessous et prenez les mesures appropriées.', badgePrefix: 'Ticket #', priority: 'Priorité', status: 'Statut', assignedBy: 'Assigné par', assignedTo: 'Assigné à', requester: 'Demandeur', board: 'Tableau', category: 'Catégorie', location: 'Emplacement', descriptionLabel: 'Description', descriptionVar: '{{ticket.description}}', viewButton: 'Voir le Ticket', footer: 'Powered by Alga PSA · Gardons les équipes alignées', textHeader: 'Ticket Assigné à Vous', textAssignedBy: 'Assigné par', textAssigned: 'Assigné à', textRequester: 'Demandeur', textDescription: 'Description', textView: 'Voir le ticket', }, es: { headerLabel: 'Ticket Asignado', intro: 'Se te ha asignado un ticket para {{ticket.clientName}}. Revisa los detalles a continuación y toma acción.', badgePrefix: 'Ticket #', priority: 'Prioridad', status: 'Estado', assignedBy: 'Asignado por', assignedTo: 'Asignado a', requester: 'Solicitante', board: 'Tablero', category: 'Categoría', location: 'Ubicación', descriptionLabel: 'Descripción', descriptionVar: '{{ticket.description}}', viewButton: 'Ver Ticket', footer: 'Powered by Alga PSA · Manteniendo a los equipos alineados', textHeader: 'Ticket Asignado a Ti', textAssignedBy: 'Asignado por', textAssigned: 'Asignado a', textRequester: 'Solicitante', textDescription: 'Descripción', textView: 'Ver ticket', }, de: { headerLabel: 'Ticket Zugewiesen', intro: 'Dieses Ticket wurde Ihnen für {{ticket.clientName}} zugewiesen. Überprüfen Sie die Details unten und ergreifen Sie Maßnahmen.', badgePrefix: 'Ticket #', priority: 'Priorität', status: 'Status', assignedBy: 'Zugewiesen von', assignedTo: 'Zugewiesen an', requester: 'Anforderer', board: 'Board', category: 'Kategorie', location: 'Standort', descriptionLabel: 'Beschreibung', descriptionVar: '{{ticket.description}}', viewButton: 'Ticket Anzeigen', footer: 'Powered by Alga PSA · Teams auf Kurs halten', textHeader: 'Ticket Zugewiesen an Sie', textAssignedBy: 'Zugewiesen von', textAssigned: 'Zugewiesen an', textRequester: 'Anforderer', textDescription: 'Beschreibung', textView: 'Ticket anzeigen', }, nl: { headerLabel: 'Ticket Toegewezen', intro: 'Dit ticket is aan u toegewezen voor {{ticket.clientName}}. Bekijk de details hieronder en onderneem actie.', badgePrefix: 'Ticket #', priority: 'Prioriteit', status: 'Status', assignedBy: 'Toegewezen door', assignedTo: 'Toegewezen aan', requester: 'Aanvrager', board: 'Bord', category: 'Categorie', location: 'Locatie', descriptionLabel: 'Beschrijving', descriptionVar: '{{ticket.description}}', viewButton: 'Ticket Bekijken', footer: 'Powered by Alga PSA · Teams op één lijn houden', textHeader: 'Ticket Toegewezen aan U', textAssignedBy: 'Toegewezen door', textAssigned: 'Toegewezen aan', textRequester: 'Aanvrager', textDescription: 'Beschrijving', textView: 'Ticket bekijken', }, it: { headerLabel: 'Ticket assegnato', intro: 'Ti è stato assegnato un ticket per {{ticket.clientName}}. Consulta i dettagli qui sotto e procedi con le attività necessarie.', badgePrefix: 'Ticket #', priority: 'Priorità', status: 'Stato', assignedBy: 'Assegnato da', assignedTo: 'Assegnato a', requester: 'Richiedente', board: 'Board', category: 'Categoria', location: 'Sede', descriptionLabel: 'Descrizione', descriptionVar: '{{ticket.description}}', viewButton: 'Apri ticket', footer: 'Powered by Alga PSA · Manteniamo i team allineati', textHeader: 'Ticket assegnato a te', textAssignedBy: 'Assegnato da', textAssigned: 'Assegnato a', textRequester: 'Richiedente', textDescription: 'Descrizione', textView: 'Apri ticket', }, pl: { headerLabel: 'Zgłoszenie przypisane', intro: 'To zgłoszenie zostało do Ciebie przypisane dla {{ticket.clientName}}. Sprawdź szczegóły poniżej i podejmij odpowiednie działania.', badgePrefix: 'Zgłoszenie #', priority: 'Priorytet', status: 'Status', assignedBy: 'Przypisał(a)', assignedTo: 'Przypisane do', requester: 'Zgłaszający', board: 'Tablica', category: 'Kategoria', location: 'Lokalizacja', descriptionLabel: 'Podsumowanie zgłoszenia', descriptionVar: '{{ticket.summary}}', viewButton: 'Zobacz zgłoszenie', footer: 'Powered by Alga PSA', textHeader: 'Zgłoszenie przypisane', textAssignedBy: 'Przypisał(a)', textAssigned: 'Przypisane do', textRequester: 'Zgłaszający', textDescription: 'Podsumowanie', textView: 'Zobacz zgłoszenie', }, }; /* eslint-enable max-len */ function buildBodyHtml(c) { return `
${c.intro}
| ${c.priority} | {{ticket.priority}} |
| ${c.status} | {{ticket.status}} |
| ${c.assignedBy} | {{ticket.assignedBy}} |
| ${c.assignedTo} |
{{ticket.assignedToName}}
{{ticket.assignedToEmail}}
|
| ${c.requester} |
{{ticket.requesterName}}
{{ticket.requesterContact}}
|
| ${c.board} | {{ticket.board}} |
| ${c.category} | {{ticket.categoryDetails}} |
| ${c.location} | {{ticket.locationSummary}} |