class AdministratorNotifications::AccountNotificationMailer < AdministratorNotifications::BaseMailer def account_deletion_user_initiated(account, reason) subject = 'Your Chatwoot account deletion has been scheduled' action_url = settings_url('general') meta = { 'account_name' => account.name, 'deletion_date' => format_deletion_date(account.custom_attributes['marked_for_deletion_at']), 'reason' => reason } send_notification(subject, action_url: action_url, meta: meta) end def account_deletion_for_inactivity(account, reason) subject = 'Your Chatwoot account is scheduled for deletion due to inactivity' action_url = settings_url('general') meta = { 'account_name' => account.name, 'deletion_date' => format_deletion_date(account.custom_attributes['marked_for_deletion_at']), 'reason' => reason } send_notification(subject, action_url: action_url, meta: meta) end def contact_import_complete(resource) subject = 'Contact Import Completed' action_url = if resource.failed_records.attached? Rails.application.routes.url_helpers.rails_blob_url(resource.failed_records) else "#{ENV.fetch('FRONTEND_URL', nil)}/app/accounts/#{resource.account.id}/contacts" end meta = { 'failed_contacts' => resource.total_records - resource.processed_records, 'imported_contacts' => resource.processed_records } send_notification(subject, action_url: action_url, meta: meta) end def contact_import_failed subject = 'Contact Import Failed' send_notification(subject) end def contact_export_complete(file_url, email_to) subject = "Your contact's export file is available to download." send_notification(subject, to: email_to, action_url: file_url) end def automation_rule_disabled(rule) subject = 'Automation rule disabled due to validation errors.' action_url = settings_url('automation/list') meta = { 'rule_name' => rule.name } send_notification(subject, action_url: action_url, meta: meta) end private def format_deletion_date(deletion_date_str) return 'Unknown' if deletion_date_str.blank? Time.zone.parse(deletion_date_str).strftime('%B %d, %Y') rescue StandardError 'Unknown' end end