<?php
/**
 * سودانا — Template Engine (BDE)
 * محرك القوالب لمحرك التوثيق التجاري
 */
class TemplateEngine {

    // ── Detect BDE intent ────────────────────────────────────────
    public static function detectIntent(string $q): ?string {
        $patterns = [
            'proposal'      => '/عرض.*تجاري|proposal|مقترح.*مشروع|عرض.*خدمات|اكتب.*عرض/i',
            'contract'      => '/عقد|contract|اتفاقية|مذكرة.*تفاهم/i',
            'business_plan' => '/خطة.*عمل|business plan|خطة.*مشروع.*متكامل/i',
            'feasibility'   => '/دراسة.*جدوى|feasibility|جدوى.*اقتصادية/i',
            'company_profile'=> '/بروفايل.*شركة|company profile|ملف.*شركة/i',
            'pitch'         => '/pitch|عرض.*مستثمرين|تقديم.*مشروع.*للمستثمر/i',
            'translation'   => '/ترجم.*وثيقة|ترجم.*عقد|translate.*business/i',
        ];
        foreach ($patterns as $type => $pattern) {
            if (preg_match($pattern, $q)) return $type;
        }
        return null;
    }

    // ── Get template by type ─────────────────────────────────────
    public static function getTemplate(string $docType, string $subtype = 'general'): ?array {
        try {
            $st = db()->prepare(
                'SELECT * FROM bde_templates
                 WHERE doc_type=? AND is_active=1
                 ORDER BY CASE WHEN doc_subtype=? THEN 0 ELSE 1 END LIMIT 1'
            );
            $st->execute([$docType, $subtype]);
            $tpl = $st->fetch();
            if ($tpl) {
                $tpl['sections'] = json_decode($tpl['sections'], true);
                $tpl['fields']   = json_decode($tpl['fields'], true);
            }
            return $tpl ?: null;
        } catch (Throwable $e) {
            // Return hardcoded fallback
            return self::getFallbackTemplate($docType);
        }
    }

    // ── Build AI prompt from template + collected data ────────────
    public static function buildPrompt(array $template, array $data): string {
        $sections = implode("\n", array_map(fn($s,$i)=> ($i+1).". $s", $template['sections'], array_keys($template['sections'])));

        $dataStr = '';
        foreach ($template['fields'] as $field) {
            $val = $data[$field['key']] ?? '';
            if ($val) $dataStr .= "• {$field['label']}: $val\n";
        }

        return "بناءً على المعلومات التالية:\n{$dataStr}\n
اكتب وثيقة احترافية كاملة تتضمن الأقسام التالية:\n{$sections}\n
قواعد مهمة:
- لغة رسمية واضحة
- كل قسم يبدأ بعنوان واضح مسبوق بـ ##
- أرقام وتفاصيل دقيقة
- مناسب للسياق السوداني والعربي
- لا تترك أي قسم فارغاً";
    }

    // ── Format generated content to HTML ────────────────────────
    public static function formatToHTML(string $content, string $title, string $docType): string {
        // Convert markdown-like to HTML
        $content = nl2br(htmlspecialchars($content));
        $content = preg_replace('/##\s*(.+?)<br \/>/', '<h2 class="section-title">$1</h2>', $content);
        $content = preg_replace('/\*\*(.+?)\*\*/', '<strong>$1</strong>', $content);
        $content = preg_replace('/^- (.+?)<br \/>/m', '<li>$1</li>', $content);

        $typeLabels = [
            'proposal'      => 'عرض تجاري',
            'contract'      => 'عقد',
            'business_plan' => 'خطة عمل',
            'feasibility'   => 'دراسة جدوى',
        ];
        $typeLabel = $typeLabels[$docType] ?? 'وثيقة تجارية';

        return '<!DOCTYPE html>
<html dir="rtl" lang="ar">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>' . htmlspecialchars($title) . ' — سودانا BDE</title>
<style>
  @import url("https://fonts.googleapis.com/css2?family=Noto+Naskh+Arabic:wght@400;700&display=swap");
  body{font-family:"Noto Naskh Arabic",serif;margin:0;padding:40px;background:#f8f5f0;color:#1a1a1a;line-height:1.8}
  .doc-wrap{max-width:800px;margin:0 auto;background:#fff;padding:60px;border-radius:12px;box-shadow:0 4px 24px rgba(0,0,0,.08)}
  .doc-header{border-bottom:3px solid #073328;padding-bottom:24px;margin-bottom:32px;text-align:center}
  .doc-type{font-size:.85rem;color:#073328;text-transform:uppercase;letter-spacing:2px;font-weight:700;margin-bottom:8px}
  h1{font-size:2rem;margin:0 0 8px;color:#073328}
  .doc-meta{font-size:.85rem;color:#888;margin-top:8px}
  .section-title{font-size:1.2rem;color:#073328;border-right:4px solid #073328;padding-right:12px;margin:32px 0 12px}
  p{margin:0 0 12px}
  li{margin-bottom:6px}
  ul{padding-right:20px}
  .disclaimer{margin-top:40px;padding:16px;background:#fff3cd;border-radius:8px;font-size:.85rem;color:#856404;border:1px solid #ffc107}
  .footer{margin-top:40px;padding-top:20px;border-top:1px solid #eee;text-align:center;font-size:.8rem;color:#aaa}
  @media print{body{padding:0;background:#fff}.doc-wrap{box-shadow:none;padding:40px}}
</style>
</head>
<body>
<div class="doc-wrap">
  <div class="doc-header">
    <div class="doc-type">' . $typeLabel . '</div>
    <h1>' . htmlspecialchars($title) . '</h1>
    <div class="doc-meta">تاريخ الإنشاء: ' . date('Y-m-d') . ' | أُنشئ بواسطة سودانا BDE</div>
  </div>
  <div class="doc-content">' . $content . '</div>
  <div class="disclaimer">
    ⚠️ هذه الوثيقة أُنشئت بالذكاء الاصطناعي كمسودة أولية. يُنصح بمراجعة خبير قانوني أو مالي قبل الاستخدام الرسمي.
  </div>
  <div class="footer">
    سودانا AI Platform — sudanna.ai | جميع الحقوق محفوظة
  </div>
</div>
</body>
</html>';
    }

    private static function getFallbackTemplate(string $docType): array {
        $templates = [
            'proposal' => [
                'doc_type'       => 'proposal',
                'title_ar'       => 'عرض تجاري احترافي',
                'sections'       => ['ملخص تنفيذي','المشكلة والحل','السوق المستهدف','خطة التنفيذ','الميزانية'],
                'fields'         => [
                    ['key'=>'company','label'=>'اسم شركتك','required'=>true],
                    ['key'=>'problem','label'=>'المشكلة التي تحلها','required'=>true],
                    ['key'=>'solution','label'=>'حلّك المقترح','required'=>true],
                    ['key'=>'target','label'=>'الفئة المستهدفة','required'=>true],
                ],
                'ai_instructions'=> 'اكتب عرضاً تجارياً احترافياً منظماً ومقنعاً باللغة العربية.',
            ],
            'contract' => [
                'doc_type'       => 'contract',
                'title_ar'       => 'عقد خدمات',
                'sections'       => ['أطراف العقد','نطاق الخدمة','القيمة والدفع','الشروط العامة'],
                'fields'         => [
                    ['key'=>'party1','label'=>'الطرف الأول','required'=>true],
                    ['key'=>'party2','label'=>'الطرف الثاني','required'=>true],
                    ['key'=>'service','label'=>'وصف الخدمة','required'=>true],
                    ['key'=>'price','label'=>'قيمة الخدمة','required'=>true],
                ],
                'ai_instructions'=> 'اكتب عقداً قانونياً واضحاً باللغة العربية يحمي حقوق الطرفين.',
            ],
            'business_plan' => [
                'doc_type'       => 'business_plan',
                'title_ar'       => 'خطة عمل',
                'sections'       => ['الملخص التنفيذي','وصف المشروع','تحليل السوق','النموذج التجاري','التوقعات المالية'],
                'fields'         => [
                    ['key'=>'name','label'=>'اسم المشروع','required'=>true],
                    ['key'=>'sector','label'=>'القطاع','required'=>true],
                    ['key'=>'product','label'=>'المنتج أو الخدمة','required'=>true],
                    ['key'=>'capital','label'=>'رأس المال','required'=>false],
                ],
                'ai_instructions'=> 'اكتب خطة عمل شاملة للمستثمرين.',
            ],
        ];
        return $templates[$docType] ?? $templates['proposal'];
    }
}
