<?php

namespace App\Services\BroadcastEmail;

use Illuminate\Support\Facades\View;

class BroadcastEmailComposerService
{
    public function sanitizeHtml(string $html): string
    {
        $html = preg_replace('#<(script|iframe)[^>]*>.*?</\\1>#is', '', $html);
        $html = preg_replace('/\\son\\w+="[^"]*"/i', '', $html);
        $html = preg_replace("/\\son\\w+='[^']*'/i", '', $html);
        return $html ?? '';
    }

    public function compose(
        bool $wrapLayout,
        string $subject,
        string $body,
        string $recipientName,
        string $preheader = '',
        string $ctaText = '',
        string $ctaUrl = '',
        bool $personalize = true
    ): string {
        $content = $personalize ? str_replace('{{name}}', $recipientName, $body) : $body;

        if (!$wrapLayout) {
            return $content;
        }

        if (!View::exists('emails.broadcast_wrapper')) {
            return $content;
        }

        return view('emails.broadcast_wrapper', [
            'subject' => $subject,
            'content' => $content,
            'preheader' => $preheader,
            'cta_text' => $ctaText,
            'cta_url' => $ctaUrl,
        ])->render();
    }
}
