Add Quote Sent SMS template and fix consent confirmation wording

Adds a customizable QuoteSent SMS template to seed data and
DefaultTemplates so companies can edit the quote approval message
from Notification Templates. Wires NotifyQuoteSentSmsAsync to use
the template system instead of a hardcoded string. Updates
SmsConsentConfirmation wording to mention quote approvals alongside
job updates. Help docs and AI knowledge base updated to match.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-02 21:19:43 -04:00
parent a9048dea2e
commit 0b6a7a14c4
4 changed files with 41 additions and 9 deletions
@@ -860,7 +860,7 @@ New accounts walk through an 18-step setup wizard to configure company informati
}
/// <summary>
/// Returns the 8 canonical default notification templates for a company.
/// Returns the canonical default notification templates for a company.
/// Called by both SeedData and CompanySettingsController for auto-seeding.
/// </summary>
public static List<NotificationTemplate> BuildDefaultNotificationTemplates(int companyId)
@@ -934,12 +934,23 @@ New accounts walk through an 18-step setup wizard to configure company informati
CreatedAt = DateTime.UtcNow
},
new NotificationTemplate
{
NotificationType = NotificationType.QuoteSent,
Channel = NotificationChannel.Sms,
DisplayName = "Quote Sent (SMS)",
Subject = null,
Body = "{{companyName}}: Quote {{quoteNumber}} for {{quoteTotal}} is ready for your review. Approve or decline: {{approvalUrl}} Reply STOP to opt out.",
IsActive = true,
CompanyId = companyId,
CreatedAt = DateTime.UtcNow
},
new NotificationTemplate
{
NotificationType = NotificationType.SmsConsentConfirmation,
Channel = NotificationChannel.Sms,
DisplayName = "SMS Enrollment Confirmation",
Subject = null,
Body = "{{companyName}}: You're now enrolled for SMS job & pickup updates. Reply STOP at any time to opt out. Msg & data rates may apply.",
Body = "{{companyName}}: You're now enrolled for SMS job updates and quote approvals. Reply STOP at any time to opt out. Msg & data rates may apply.",
IsActive = true,
CompanyId = companyId,
CreatedAt = DateTime.UtcNow