{$title}

{$content}
HTML; } /** * Master Asset Submission - Success */ public static function assetSubmissionSuccess($data) { $content = <<

✅ Master Asset Submission Complete

Box ID: {$data['box_id']}

Campaign Number: {$data['campaign_number']}

Folder: {$data['folder_name']}

Total Assets: {$data['asset_count']} items

Campaign Dates:

Supply Date: {$data['supply_date']}

Live Date: {$data['live_date']}

End Date: {$data['end_date']}

✓ Status: Asset metadata successfully submitted to Make.com workflow.

Your assets are now being processed in the OMG system.

HTML; return self::wrapTemplate('✅ Asset Submission Complete', $content, '#28a745'); } /** * Master Asset Submission - Failed */ public static function assetSubmissionFailed($data) { $content = <<

❌ Asset Submission Failed

Box ID: {$data['box_id']}

Campaign Number: {$data['campaign_number']}

Error Details:

Error: {$data['error']}

📌 Action Required: Please review the error and try again.

If the issue persists, contact the system administrator.

HTML; return self::wrapTemplate('❌ Asset Submission Failed', $content, '#d32f2f'); } /** * Global to Local - Processing Started */ public static function globalToLocalStarted($data) { $content = <<

📄 File: {$data['filename']}

Campaign Number: {$data['campaign_number']}

Processing Steps:

✓ File uploaded and validated

🔄 Extracting campaign information...

🔄 Calling OMG API for business unit...

🔄 Transforming data for 16 regional markets...

⏳ Please wait: You will receive another email when processing is complete.

HTML; return self::wrapTemplate('🔄 CSV Processing Started', $content); } /** * Global to Local - Processing Complete */ public static function globalToLocalComplete($data) { $content = <<

✅ CSV Transformation Complete

Campaign Number: {$data['campaign_number']}

Business Unit: {$data['business_unit']}

Input Rows: {$data['input_rows']}

Output Files Created: {$data['file_count']}

Total Output Rows: {$data['total_rows']}

Files Created (16 Regional CSVs):

HTML; // Add sample rows (first 5 files) $isoSample = ['en-GB', 'es-ES', 'pt-PT', 'en-IE', 'fr-CH']; foreach ($isoSample as $iso) { $parts = explode('-', $iso); $country = $parts[1] ?? ''; $content .= ""; } $content .= <<
ISO Code Country Rows
{$iso}{$country}{$data['input_rows']}
... and 11 more files

✓ Complete: All {$data['file_count']} CSV files have been uploaded to Box.

Files should appear in OMG within 5 minutes.

Box Folder: {$data['folder_url']}

HTML; return self::wrapTemplate('✅ Global to Local Complete', $content, '#28a745'); } /** * Global to Local - Processing Failed */ public static function globalToLocalFailed($data) { $campaignNumberLine = isset($data['campaign_number']) && $data['campaign_number'] ? "

Campaign Number: {$data['campaign_number']}

" : ''; $content = <<

❌ CSV Processing Failed

File: {$data['filename']}

{$campaignNumberLine}

Error Details:

Stage: {$data['stage']}

Error: {$data['error']}

📌 Action Required:

HTML; return self::wrapTemplate('❌ CSV Processing Failed', $content, '#d32f2f'); } /** * Box Upload - Success */ public static function boxUploadSuccess($data) { $content = <<

✅ Files Uploaded to Box Successfully

Files Uploaded: {$data['file_count']}

Campaign Number: {$data['campaign_number']}

Business Unit: {$data['business_unit']}

Upload Summary:

All {$data['file_count']} regional CSV files have been successfully uploaded to the Box output folder.

These files are now available in the OMG system for further processing.

Box Folder: View Files in Box

HTML; return self::wrapTemplate('✅ Box Upload Complete', $content, '#28a745'); } /** * Get template by name */ public static function getTemplate($templateName, $data) { switch ($templateName) { case 'asset_submission_success': return self::assetSubmissionSuccess($data); case 'asset_submission_failed': return self::assetSubmissionFailed($data); case 'global_to_local_started': return self::globalToLocalStarted($data); case 'global_to_local_complete': return self::globalToLocalComplete($data); case 'global_to_local_failed': return self::globalToLocalFailed($data); case 'box_upload_success': return self::boxUploadSuccess($data); default: // Fallback simple template return self::wrapTemplate('Notification', '

' . json_encode($data) . '

'); } } }