<?php
/**
 * إعدادات المختبر (White Label) - لوغو وألوان
 */
use App\Core\Auth;
use App\Core\Tenant;

require_once __DIR__ . '/../src/Core/CSRFProtection.php';
require_once __DIR__ . '/../src/Core/FileUploadValidator.php';

if (!($auth instanceof Auth) || !$auth->can('settings.manage')) {
    http_response_code(403);
    echo 'غير مسموح';
    return;
}

$tid = Tenant::id();
$msg = '';
$uploadDir = __DIR__ . '/../uploads/logos/';
if (!is_dir($uploadDir)) {
    @mkdir($uploadDir, 0755, true);
}

// معالجة تحميل اللوجو
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['logo_file']) && $_FILES['logo_file']['error'] === UPLOAD_ERR_OK) {
    // CSRF Protection
    if (!\App\Core\CSRFProtection::validatePostRequest()) {
        $_SESSION['tenant_settings_error'] = 'طلب غير صالح.';
        header('Location: index.php?page=tenant_settings');
        exit;
    }
    $file = $_FILES['logo_file'];
    $allowedTypes = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'];
    $maxSize = 2 * 1024 * 1024; // 2MB
    
    // استخدام FileUploadValidator
    $validation = \App\Core\FileUploadValidator::validate($file, $allowedTypes, $maxSize);
    
    if ($validation['valid'] && \App\Core\FileUploadValidator::isNotPhpFile($file['tmp_name'])) {
        $ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION)) ?: 'jpg';
        $fileName = \App\Core\FileUploadValidator::generateSafeFileName('logo_' . $tid, (int)($_SESSION['user_id'] ?? 0));
        $filePath = $uploadDir . $fileName;
        
        if (move_uploaded_file($file['tmp_name'], $filePath)) {
            $logoUrl = 'uploads/logos/' . $fileName;
            // حذف اللوجو القديم إن وجد
            try {
                $stmt = $db->prepare('SELECT logo_url FROM tenants WHERE id = ?');
                $stmt->execute([$tid]);
                $old = $stmt->fetch();
                if ($old && !empty($old['logo_url']) && strpos($old['logo_url'], 'uploads/logos/') !== false) {
                    $oldPath = __DIR__ . '/../' . $old['logo_url'];
                    if (file_exists($oldPath)) @unlink($oldPath);
                }
            } catch (Throwable $e) {}
            try {
                $db->query('SELECT id FROM tenants LIMIT 1');
                $stmt = $db->prepare('UPDATE tenants SET logo_url = ? WHERE id = ?');
                $stmt->execute([$logoUrl, $tid]);
                $msg = 'تم تحميل اللوجو بنجاح.';
            } catch (Throwable $e) {
                @unlink($filePath);
                $msg = 'حدث خطأ في حفظ اللوجو.';
            }
        } else {
            $msg = 'فشل تحميل الملف.';
        }
    } else {
        $msg = 'نوع الملف غير مدعوم أو الحجم كبير جداً (الحد الأقصى 2MB).';
    }
}

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['save_whitelabel'])) {
    // CSRF Protection
    if (!\App\Core\CSRFProtection::validatePostRequest()) {
        $_SESSION['tenant_settings_error'] = 'طلب غير صالح.';
        header('Location: index.php?page=tenant_settings');
        exit;
    }
    $name = trim($_POST['lab_name'] ?? '');
    $primaryColor = trim($_POST['primary_color'] ?? '#0d9488');
    $logoUrl = trim($_POST['logo_url'] ?? '');
    
    // إذا كان هناك لوجو محمّل مسبقاً ولم يتم تغييره، احتفظ به
    if (empty($logoUrl)) {
        try {
            $stmt = $db->prepare('SELECT logo_url FROM tenants WHERE id = ?');
            $stmt->execute([$tid]);
            $current = $stmt->fetch();
            if ($current && !empty($current['logo_url'])) {
                $logoUrl = $current['logo_url'];
            }
        } catch (Throwable $e) {}
    }
    
    try {
        $db->query('SELECT id FROM tenants LIMIT 1');
        $stmt = $db->prepare('UPDATE tenants SET name = ?, primary_color = ?, logo_url = ? WHERE id = ?');
        $stmt->execute([$name ?: 'المختبر', $primaryColor ?: '#0d9488', $logoUrl ?: null, $tid]);
        $msg = $msg ?: 'تم الحفظ.';
    } catch (Throwable $e) {
        $msg = 'حدث خطأ.';
    }
}

// حذف اللوجو
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_logo'])) {
    // CSRF Protection
    if (!\App\Core\CSRFProtection::validatePostRequest()) {
        $_SESSION['tenant_settings_error'] = 'طلب غير صالح.';
        header('Location: index.php?page=tenant_settings');
        exit;
    }
    try {
        $stmt = $db->prepare('SELECT logo_url FROM tenants WHERE id = ?');
        $stmt->execute([$tid]);
        $current = $stmt->fetch();
        if ($current && !empty($current['logo_url'])) {
            $oldPath = __DIR__ . '/../' . $current['logo_url'];
            if (file_exists($oldPath) && strpos($oldPath, 'uploads/logos/') !== false) {
                @unlink($oldPath);
            }
        }
        $stmt = $db->prepare('UPDATE tenants SET logo_url = NULL WHERE id = ?');
        $stmt->execute([$tid]);
        $msg = 'تم حذف اللوجو.';
    } catch (Throwable $e) {
        $msg = 'حدث خطأ في حذف اللوجو.';
    }
}

$tenant = ['name' => 'المختبر', 'primary_color' => '#0d9488', 'logo_url' => ''];
try {
    $stmt = $db->prepare('SELECT name, primary_color, logo_url FROM tenants WHERE id = ?');
    $stmt->execute([$tid]);
    $t = $stmt->fetch();
    if ($t) {
        $tenant['name'] = $t['name'] ?: $tenant['name'];
        $tenant['primary_color'] = $t['primary_color'] ?: $tenant['primary_color'];
        $tenant['logo_url'] = trim((string)($t['logo_url'] ?? ''));
    }
} catch (Throwable $e) {
}
?>
<div class="page-header">
    <h1>🎨 العلامة التجارية (White Label)</h1>
    <a href="index.php?page=settings" class="btn-secondary">← الإعدادات</a>
</div>

<?php if ($msg): ?>
<div class="alert <?php echo strpos($msg, 'نجاح') !== false || strpos($msg, 'تم') !== false ? 'alert-success' : 'alert-danger'; ?>">
    <?php echo htmlspecialchars($msg, ENT_QUOTES, 'UTF-8'); ?>
</div>
<?php endif; ?>

<div class="settings-page">
    <div class="settings-section print-settings-card">
        <div class="print-settings-header">
            <span class="print-settings-icon">🏢</span>
            <div>
                <h3>معلومات المختبر</h3>
                <p class="settings-desc">الاسم واللون الأساسي للمختبر</p>
            </div>
        </div>
        <form method="post" action="index.php?page=tenant_settings" class="form-grid">
            <div class="full-width">
                <label>اسم المختبر</label>
                <input type="text" name="lab_name" value="<?php echo htmlspecialchars($tenant['name'], ENT_QUOTES, 'UTF-8'); ?>" placeholder="مثال: مختبر الأمل للتحاليل">
            </div>
            <div>
                <label>اللون الأساسي</label>
                <div style="display:flex;align-items:center;gap:12px;">
                    <input type="color" name="primary_color" id="primaryColorPicker" value="<?php echo htmlspecialchars($tenant['primary_color'], ENT_QUOTES, 'UTF-8'); ?>" style="width:60px;height:40px;cursor:pointer;border-radius:6px;border:1px solid var(--border);">
                    <input type="text" id="primaryColorHex" value="<?php echo htmlspecialchars($tenant['primary_color'], ENT_QUOTES, 'UTF-8'); ?>" maxlength="7" placeholder="#0d9488" pattern="^#[0-9a-fA-F]{6}$" style="width:100px;padding:8px;font-family:monospace;">
                </div>
            </div>
            <div class="full-width form-actions">
                <button type="submit" name="save_whitelabel" value="1" class="btn-primary">💾 حفظ المعلومات</button>
            </div>
        </form>
    </div>

    <div class="settings-section print-settings-card">
        <div class="print-settings-header">
            <span class="print-settings-icon">🖼️</span>
            <div>
                <h3>شعار المختبر (Logo)</h3>
                <p class="settings-desc">قم بتحميل شعار المختبر أو أدخل رابط مباشر</p>
            </div>
        </div>
        
        <?php 
        $hasLogo = !empty($tenant['logo_url']);
        if ($hasLogo): 
            $displayLogoUrl = trim($tenant['logo_url']);
            // حساب المسار الأساسي للتطبيق
            $scriptDir = str_replace('\\', '/', dirname($_SERVER['SCRIPT_NAME'] ?? ''));
            if ($scriptDir === '/') $scriptDir = '';
            $basePath = $scriptDir;
            // إذا كان رابط خارجي، استخدمه كما هو
            if (strpos($displayLogoUrl, 'http') === 0 || strpos($displayLogoUrl, '//') === 0) {
                $finalLogoUrl = $displayLogoUrl;
            } else {
                // مسار محلي - استخدم المسار الأساسي للتطبيق
                $displayLogoUrl = trim($displayLogoUrl, '/');
                $finalLogoUrl = ($basePath ? $basePath . '/' : '/') . $displayLogoUrl;
            }
            // التحقق من وجود الملف
            $logoPath = __DIR__ . '/../' . ltrim($displayLogoUrl, '/');
            $fileExists = file_exists($logoPath);
        ?>
        <div style="background:#f8fafc;border:1px solid var(--border);border-radius:8px;padding:20px;margin-bottom:20px;text-align:center;">
            <div style="margin-bottom:12px;min-height:120px;display:flex;align-items:center;justify-content:center;">
                <img src="<?php echo htmlspecialchars($finalLogoUrl, ENT_QUOTES, 'UTF-8'); ?>" alt="Logo" id="logoPreview" style="max-height:120px;max-width:100%;object-fit:contain;border-radius:6px;display:block;margin:0 auto;border:1px solid #e2e8f0;" onload="console.log('Logo loaded:', this.src);" onerror="console.error('Logo failed to load:', this.src); this.style.border='2px solid #dc2626'; this.alt='فشل تحميل الشعار';">
            </div>
            <?php if (!$fileExists && strpos($displayLogoUrl, 'http') !== 0): ?>
            <div style="padding:8px;background:#fff3cd;border:1px solid #ffc107;border-radius:4px;margin-bottom:12px;font-size:0.85em;">
                <small>⚠️ الملف غير موجود في: <?php echo htmlspecialchars($logoPath, ENT_QUOTES, 'UTF-8'); ?></small>
            </div>
            <?php elseif ($fileExists): ?>
            <div style="padding:8px;background:#d1fae5;border:1px solid #10b981;border-radius:4px;margin-bottom:12px;font-size:0.85em;">
                <small>✅ الملف موجود</small>
            </div>
            <?php endif; ?>
            <form method="post" style="display:inline;" onsubmit="return confirm('هل أنت متأكد من حذف الشعار؟');">
                <button type="submit" name="delete_logo" value="1" class="btn-secondary btn-sm">🗑️ حذف الشعار</button>
            </form>
            <div style="margin-top:8px;font-size:0.85em;color:var(--text-muted);">
                <small>المسار: <?php echo htmlspecialchars($displayLogoUrl, ENT_QUOTES, 'UTF-8'); ?></small><br>
                <small>رابط العرض: <?php echo htmlspecialchars($finalLogoUrl, ENT_QUOTES, 'UTF-8'); ?></small>
            </div>
        </div>
        <?php else: ?>
        <div style="background:#f8fafc;border:1px dashed var(--border);border-radius:8px;padding:40px;margin-bottom:20px;text-align:center;color:var(--text-muted);">
            <div style="font-size:3rem;margin-bottom:12px;">🖼️</div>
            <div>لا يوجد شعار محمّل حالياً</div>
        </div>
        <?php endif; ?>
        
        <div style="display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px;">
            <div style="background:#f8fafc;border:1px solid var(--border);border-radius:8px;padding:16px;">
                <h4 style="margin:0 0 12px;font-size:0.95rem;color:var(--text-secondary);display:flex;align-items:center;gap:8px;">
                    <span>📤</span> تحميل ملف
                </h4>
                <form method="post" enctype="multipart/form-data" action="index.php?page=tenant_settings" id="uploadForm">
                    <div style="margin-bottom:12px;">
                        <input type="file" name="logo_file" id="logoFileInput" accept="image/*" required style="width:100%;padding:8px;border:1px solid var(--border);border-radius:6px;background:white;">
                        <small style="color:var(--text-muted);display:block;margin-top:4px;">الصيغ المدعومة: JPG, PNG, GIF, WebP, SVG (حد أقصى 2MB)</small>
                    </div>
                    <button type="submit" class="btn-primary" style="width:100%;">⬆️ تحميل الشعار</button>
                </form>
            </div>
            <div style="background:#f8fafc;border:1px solid var(--border);border-radius:8px;padding:16px;">
                <h4 style="margin:0 0 12px;font-size:0.95rem;color:var(--text-secondary);display:flex;align-items:center;gap:8px;">
                    <span>🔗</span> رابط مباشر
                </h4>
                <form method="post" action="index.php?page=tenant_settings">
                    <div style="margin-bottom:12px;">
                        <input type="url" name="logo_url" value="<?php echo htmlspecialchars($tenant['logo_url'], ENT_QUOTES, 'UTF-8'); ?>" placeholder="https://example.com/logo.png" style="width:100%;padding:8px;border:1px solid var(--border);border-radius:6px;background:white;">
                        <small style="color:var(--text-muted);display:block;margin-top:4px;">أدخل رابط مباشر للشعار من الإنترنت</small>
                    </div>
                    <button type="submit" name="save_whitelabel" value="1" class="btn-secondary" style="width:100%;">💾 حفظ الرابط</button>
                </form>
            </div>
        </div>
        
        <div style="background:linear-gradient(135deg,rgba(13,148,136,0.05),rgba(13,148,136,0.02));border:1px solid var(--border);border-radius:8px;padding:16px;">
            <div style="display:flex;align-items:start;gap:12px;">
                <span style="font-size:1.2rem;">💡</span>
                <div>
                    <strong style="display:block;margin-bottom:4px;">نصائح للشعار:</strong>
                    <ul style="margin:0;padding-right:20px;color:var(--text-muted);line-height:1.8;font-size:0.9em;">
                        <li>استخدم صورة عالية الجودة (PNG بشفافية أفضل)</li>
                        <li>الحجم المثالي: 200-400 بكسل عرضاً</li>
                        <li>سيظهر الشعار في التقارير المطبوعة والبوابة</li>
                        <li>يمكنك استخدام رابط خارجي أو تحميل ملف محلي</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
(function(){
    var picker = document.getElementById('primaryColorPicker');
    var hex = document.getElementById('primaryColorHex');
    if (picker && hex) {
        picker.addEventListener('input', function(){ hex.value = this.value; });
        hex.addEventListener('input', function(){
            if (/^#[0-9a-fA-F]{6}$/.test(this.value)) picker.value = this.value;
        });
        hex.addEventListener('blur', function(){
            if (!/^#[0-9a-fA-F]{6}$/.test(this.value) && picker.value) hex.value = picker.value;
        });
    }
    
    // معاينة الملف قبل التحميل
    var fileInput = document.getElementById('logoFileInput');
    if (fileInput) {
        fileInput.addEventListener('change', function(e) {
            var file = e.target.files[0];
            if (file) {
                if (file.size > 2 * 1024 * 1024) {
                    alert('حجم الملف كبير جداً. الحد الأقصى 2MB.');
                    e.target.value = '';
                    return;
                }
                var reader = new FileReader();
                reader.onload = function(e) {
                    // يمكن إضافة معاينة هنا إذا أردت
                };
                reader.readAsDataURL(file);
            }
        });
    }
})();
</script>

<style>
.settings-page { display: flex; flex-direction: column; gap: 24px; }
.print-settings-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 24px; }
.print-settings-header { display: flex; align-items: flex-start; gap: 16px; margin-bottom: 20px; flex-wrap: wrap; }
.print-settings-icon { font-size: 2rem; line-height: 1; }
.print-settings-header h3 { margin: 0 0 4px; }
.print-settings-header .settings-desc { margin: 0; color: var(--text-muted); }
</style>
