<?php
declare(strict_types=1);

use App\Core\Database;

return function (Database $db): void {
    $ts = date('Y-m-d H:i:s');

    $reports = [
        [
            'report_code'    => 'RPT_PLAYER_TOTALS',
            'name_ar'        => 'إجمالي اللاعبين',
            'name_en'        => 'Player Totals',
            'description_ar' => 'إجمالي اللاعبين حسب النوع (عضو/غير عضو)، الكروت النشطة/الموقوفة، وتوزيع النوع',
            'category'       => 'sports',
            'required_permission' => 'report.view_sports',
        ],
        [
            'report_code'    => 'RPT_PLAYERS_BY_SPORT',
            'name_ar'        => 'اللاعبين حسب النشاط',
            'name_en'        => 'Players by Sport',
            'description_ar' => 'عدد اللاعبين لكل نشاط رياضي',
            'category'       => 'sports',
            'required_permission' => 'report.view_sports',
        ],
        [
            'report_code'    => 'RPT_PLAYERS_BY_ACADEMY',
            'name_ar'        => 'اللاعبين حسب الأكاديمية',
            'name_en'        => 'Players by Academy',
            'description_ar' => 'عدد اللاعبين لكل أكاديمية ومستوى',
            'category'       => 'sports',
            'required_permission' => 'report.view_sports',
        ],
        [
            'report_code'    => 'RPT_ENROLLMENT_STATUS',
            'name_ar'        => 'حالة التسجيلات',
            'name_en'        => 'Enrollment Status',
            'description_ar' => 'حالة التسجيلات (نشط، موقوف، منسحب) لكل أكاديمية',
            'category'       => 'sports',
            'required_permission' => 'report.view_sports',
        ],
        [
            'report_code'    => 'RPT_FACILITY_UTILIZATION',
            'name_ar'        => 'إشغال الملاعب',
            'name_en'        => 'Facility Utilization',
            'description_ar' => 'نسبة إشغال الملاعب حسب النوع، تغطية الفترات الزمنية، وعدد الحجوزات',
            'category'       => 'sports',
            'required_permission' => 'report.view_sports',
        ],
        [
            'report_code'    => 'RPT_RESERVATIONS',
            'name_ar'        => 'الحجوزات',
            'name_en'        => 'Reservations',
            'description_ar' => 'عدد الحجوزات والإيرادات حسب الملعب والفترة الزمنية',
            'category'       => 'sports',
            'required_permission' => 'report.view_sports_financial',
        ],
        [
            'report_code'    => 'RPT_RENTAL_REVENUE',
            'name_ar'        => 'إيرادات التأجير',
            'name_en'        => 'Rental Revenue',
            'description_ar' => 'إيرادات عقود التأجير حسب الجهة والملعب والفترة الزمنية',
            'category'       => 'sports',
            'required_permission' => 'report.view_sports_financial',
        ],
        [
            'report_code'    => 'RPT_SUB_COLLECTION',
            'name_ar'        => 'تحصيل الاشتراكات',
            'name_en'        => 'Subscription Collection',
            'description_ar' => 'نسب تحصيل اشتراكات الأنشطة الرياضية: المسدد والمعلق والمتأخر',
            'category'       => 'sports',
            'required_permission' => 'report.view_sports_financial',
        ],
        [
            'report_code'    => 'RPT_SUB_OVERDUE',
            'name_ar'        => 'المتأخرات',
            'name_en'        => 'Overdue Subscriptions',
            'description_ar' => 'قائمة الاشتراكات المتأخرة مع المبالغ وعدد أيام التأخر',
            'category'       => 'sports',
            'required_permission' => 'report.view_sports_financial',
        ],
        [
            'report_code'    => 'RPT_ATTENDANCE',
            'name_ar'        => 'الحضور',
            'name_en'        => 'Attendance',
            'description_ar' => 'نسب الحضور لكل أكاديمية ونشاط رياضي حسب الشهر',
            'category'       => 'sports',
            'required_permission' => 'report.view_sports',
        ],
        [
            'report_code'    => 'RPT_SPORTS_QUARTERLY',
            'name_ar'        => 'التقرير الربع سنوي',
            'name_en'        => 'Sports Quarterly Report',
            'description_ar' => 'تقرير ربع سنوي شامل يجمع بيانات اللاعبين والإيرادات والحضور',
            'category'       => 'sports',
            'required_permission' => 'report.view_sports',
        ],
    ];

    foreach ($reports as $r) {
        $existing = $db->selectOne("SELECT id FROM report_definitions WHERE report_code = ?", [$r['report_code']]);
        if ($existing) {
            continue;
        }
        $db->insert('report_definitions', [
            'report_code'          => $r['report_code'],
            'name_ar'              => $r['name_ar'],
            'name_en'              => $r['name_en'],
            'description_ar'       => $r['description_ar'],
            'category'             => $r['category'],
            'query_definition_json' => '{}',
            'column_definitions_json' => '{}',
            'default_filters_json' => '{}',
            'required_permission'  => $r['required_permission'],
            'is_active'            => 1,
            'created_at'           => $ts,
            'updated_at'           => $ts,
        ]);
    }
};
