<?php
declare(strict_types=1);

namespace App\Modules\PlaygroundAdmin\Services;

use App\Core\Response;

final class DashboardExportService
{
    public function exportClubWide(array $data, array $range): Response
    {
        $html = $this->buildHeader('التقرير الرياضي الشامل للنادي', $range);

        $html .= '<div style="text-align:center;margin:20px 0;">';
        $html .= $this->stat('إجمالي الإيرادات', number_format($data['total_revenue'], 2) . ' ج.م');
        $html .= $this->stat('إيرادات الحجوزات', number_format($data['booking_revenue'], 2) . ' ج.م');
        $html .= $this->stat('إيرادات الأوقات الحرة', number_format($data['free_time_revenue'], 2) . ' ج.م');
        $html .= $this->stat('اللاعبين الفريدين', (string) $data['unique_players']);
        $html .= $this->stat('المدربين النشطين', (string) $data['active_coaches']);
        $html .= $this->stat('نسبة الحضور', $data['avg_attendance_rate'] . '%');
        $html .= '</div>';

        if (!empty($data['bookings_by_facility'])) {
            $html .= '<h3>الإيرادات حسب المرفق</h3>';
            $html .= '<table><tr><th>المرفق</th><th>النوع</th><th>الحجوزات</th><th>الإيرادات</th></tr>';
            foreach ($data['bookings_by_facility'] as $row) {
                $html .= '<tr><td>' . e($row['facility_name']) . '</td><td>' . e($row['facility_type']) . '</td>';
                $html .= '<td>' . $row['bookings'] . '</td><td>' . number_format((float) $row['revenue'], 2) . ' ج.م</td></tr>';
            }
            $html .= '</table>';
        }

        if (!empty($data['playground_stats'])) {
            $html .= '<h3>إحصائيات الملاعب</h3>';
            $html .= '<table><tr><th>الملعب</th><th>النوع</th><th>الحجوزات</th><th>الإيرادات</th></tr>';
            foreach ($data['playground_stats'] as $row) {
                $html .= '<tr><td>' . e($row['playground_name_ar']) . '</td><td>' . e($row['playground_type']) . '</td>';
                $html .= '<td>' . $row['bookings'] . '</td><td>' . number_format((float) $row['revenue'], 2) . ' ج.م</td></tr>';
            }
            $html .= '</table>';
        }

        if (!empty($data['monthly_trend'])) {
            $html .= '<h3>الاتجاه الشهري</h3>';
            $html .= '<table><tr><th>الشهر</th><th>الحجوزات</th><th>الإيرادات</th></tr>';
            foreach ($data['monthly_trend'] as $row) {
                $html .= '<tr><td>' . $row['month'] . '</td><td>' . $row['bookings'] . '</td>';
                $html .= '<td>' . number_format((float) $row['revenue'], 2) . ' ج.م</td></tr>';
            }
            $html .= '</table>';
        }

        $html .= $this->buildFooter();

        $response = new Response();
        return $response->html($html, 200, [
            'Content-Type' => 'text/html; charset=utf-8',
            'Content-Disposition' => 'attachment; filename="club_sports_report_' . date('Y-m-d') . '.html"',
        ]);
    }

    public function exportPlayground(array $data, array $range): Response
    {
        $name = $data['playground']['playground_name_ar'] ?? 'ملعب';
        $html = $this->buildHeader('تقرير ' . e($name), $range);

        $html .= '<div style="text-align:center;margin:20px 0;">';
        $html .= $this->stat('إجمالي الإيرادات', number_format($data['total_revenue'], 2) . ' ج.م');
        $html .= $this->stat('عدد الحجوزات', (string) $data['total_bookings']);
        $html .= $this->stat('المستخدمين الفريدين', (string) $data['unique_users']);
        $html .= $this->stat('نسبة الحضور', ($data['attendance']['rate'] ?? 0) . '%');
        $html .= '</div>';

        $html .= $this->buildFooter();

        $response = new Response();
        return $response->html($html, 200, [
            'Content-Type' => 'text/html; charset=utf-8',
            'Content-Disposition' => 'attachment; filename="playground_report_' . date('Y-m-d') . '.html"',
        ]);
    }

    private function buildHeader(string $title, array $range): string
    {
        return '<!DOCTYPE html><html dir="rtl" lang="ar"><head><meta charset="utf-8"><title>' . e($title) . '</title>'
            . '<style>body{font-family:Cairo,sans-serif;padding:20px;direction:rtl;}'
            . 'table{width:100%;border-collapse:collapse;margin:15px 0;}'
            . 'th,td{border:1px solid #ddd;padding:8px;text-align:right;}'
            . 'th{background:#f4f4f4;}h1,h3{text-align:center;}'
            . '.stat{display:inline-block;margin:10px;padding:15px;border:1px solid #ddd;border-radius:5px;min-width:130px;text-align:center;}</style></head><body>'
            . '<h1>' . e($title) . '</h1>'
            . '<p style="text-align:center;">الفترة: من ' . $range['from'] . ' إلى ' . $range['to'] . '</p>';
    }

    private function buildFooter(): string
    {
        return '<p style="text-align:center;color:#888;margin-top:30px;">تم إنشاء التقرير: ' . date('Y-m-d H:i') . '</p></body></html>';
    }

    private function stat(string $label, string $value): string
    {
        return '<div class="stat"><strong>' . e($label) . '</strong><br>' . $value . '</div>';
    }
}
