package inquiry import ( "fmt" "html" "strings" "time" "tm/pkg/security" ) // EmailTemplateData represents the data needed for the email template type EmailTemplateData struct { FullName string CompanyName string WorkEmail string PhoneNumber string InquiryID string CreatedAt int64 CompanyLogo string CompanyURL string SupportEmail string } // GenerateNewInquiryEmailTemplate generates a beautiful HTML email template for new inquiry notifications func GenerateNewInquiryEmailTemplate(data *EmailTemplateData, xssPolicy *security.XSSPolicy) string { // Sanitize all user inputs before inserting into HTML safeFullName := html.EscapeString(data.FullName) safeCompanyName := html.EscapeString(data.CompanyName) safeWorkEmail := html.EscapeString(data.WorkEmail) safePhoneNumber := html.EscapeString(data.PhoneNumber) safeInquiryID := html.EscapeString(data.InquiryID) // Format the creation date createdAt := time.Unix(data.CreatedAt, 0).Format("January 2, 2006 at 3:04 PM") html := ` New Inquiry Request - {{COMPANY_NAME}}

New Inquiry Received

A new inquiry has been submitted to the opplens system

Identifier: {{INQUIRY_ID}}
Full Name
{{FULL_NAME}}
Company Name
{{COMPANY_NAME}}
Work Email
{{WORK_EMAIL}}
Phone Number
{{PHONE_NUMBER}}
Submitted on: {{CREATED_AT}}

This email was automatically sent from the Opplens System

` // Replace placeholders with sanitized data html = strings.ReplaceAll(html, "{{COMPANY_NAME}}", safeCompanyName) html = strings.ReplaceAll(html, "{{INQUIRY_ID}}", safeInquiryID) html = strings.ReplaceAll(html, "{{FULL_NAME}}", safeFullName) html = strings.ReplaceAll(html, "{{WORK_EMAIL}}", safeWorkEmail) html = strings.ReplaceAll(html, "{{PHONE_NUMBER}}", safePhoneNumber) html = strings.ReplaceAll(html, "{{CREATED_AT}}", createdAt) return html } // GenerateNewInquiryEmailMessage generates a simple text message for the email func GenerateNewInquiryEmailMessage(data *EmailTemplateData) string { createdAt := time.Unix(data.CreatedAt, 0).Format("January 2, 2006 at 3:04 PM") return fmt.Sprintf(` New Inquiry Received Inquiry ID: %s Full Name: %s Company Name: %s Work Email: %s Phone Number: %s Submitted on: %s Please check the admin panel for more details. `, data.InquiryID, data.FullName, data.CompanyName, data.WorkEmail, data.PhoneNumber, createdAt, ) }