<?php

namespace App\Core;

/**
 * Maintenance Mode - وضع الصيانة
 * لإغلاق النظام مؤقتاً للصيانة
 */
class MaintenanceMode
{
    private string $maintenanceFile;

    public function __construct(string $maintenanceFile = null)
    {
        $this->maintenanceFile = $maintenanceFile ?? __DIR__ . '/../../storage/maintenance.json';
    }

    /**
     * تفعيل وضع الصيانة
     */
    public function enable(string $message = 'النظام قيد الصيانة', int $retryAfter = 3600): bool
    {
        $data = [
            'enabled' => true,
            'message' => $message,
            'retry_after' => $retryAfter,
            'enabled_at' => date('Y-m-d H:i:s')
        ];

        $dir = dirname($this->maintenanceFile);
        if (!is_dir($dir)) {
            @mkdir($dir, 0755, true);
        }

        return file_put_contents($this->maintenanceFile, json_encode($data, JSON_UNESCAPED_UNICODE)) !== false;
    }

    /**
     * تعطيل وضع الصيانة
     */
    public function disable(): bool
    {
        if (file_exists($this->maintenanceFile)) {
            return unlink($this->maintenanceFile);
        }
        return true;
    }

    /**
     * التحقق من وضع الصيانة
     */
    public function isEnabled(): bool
    {
        if (!file_exists($this->maintenanceFile)) {
            return false;
        }

        $data = @json_decode(file_get_contents($this->maintenanceFile), true);
        return !empty($data['enabled']);
    }

    /**
     * جلب معلومات وضع الصيانة
     */
    public function getInfo(): ?array
    {
        if (!file_exists($this->maintenanceFile)) {
            return null;
        }

        $data = @json_decode(file_get_contents($this->maintenanceFile), true);
        return $data;
    }

    /**
     * عرض صفحة الصيانة
     */
    public function renderPage(): void
    {
        $info = $this->getInfo();
        $message = $info['message'] ?? 'النظام قيد الصيانة';
        $retryAfter = $info['retry_after'] ?? 3600;

        http_response_code(503);
        header('Retry-After: ' . $retryAfter);
        header('Content-Type: text/html; charset=utf-8');

        echo '<!DOCTYPE html>
<html dir="rtl" lang="ar">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>صيانة النظام</title>
    <style>
        body { font-family: Arial, sans-serif; text-align: center; padding: 50px; background: #f5f5f5; }
        .container { max-width: 600px; margin: 0 auto; background: white; padding: 40px; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }
        h1 { color: #0d9488; margin-bottom: 20px; }
        p { color: #666; line-height: 1.6; }
    </style>
</head>
<body>
    <div class="container">
        <h1>🔧 النظام قيد الصيانة</h1>
        <p>' . htmlspecialchars($message, ENT_QUOTES, 'UTF-8') . '</p>
        <p style="margin-top: 20px; color: #999; font-size: 0.9em;">يرجى المحاولة لاحقاً</p>
    </div>
</body>
</html>';
        exit;
    }
}
