<?php
declare(strict_types=1);

use App\Core\Database;

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

    $reports = [
        ['code' => 'RPT_MEMBERSHIP_REGISTER',    'name_ar' => 'سجل العضويات',              'category' => 'membership', 'permission' => 'report.view_membership'],
        ['code' => 'RPT_NEW_MEMBERSHIPS',         'name_ar' => 'العضويات الجديدة',          'category' => 'membership', 'permission' => 'report.view_membership'],
        ['code' => 'RPT_CHILDREN',                'name_ar' => 'تقرير الأبناء',             'category' => 'membership', 'permission' => 'report.view_membership'],
        ['code' => 'RPT_CHILDREN_18',             'name_ar' => 'الأبناء المقتربون من 18',   'category' => 'membership', 'permission' => 'report.view_membership'],
        ['code' => 'RPT_CHILDREN_25',             'name_ar' => 'الأبناء المقتربون من 25',   'category' => 'membership', 'permission' => 'report.view_membership'],
        ['code' => 'RPT_SPOUSES',                 'name_ar' => 'تقرير الزوجات',             'category' => 'membership', 'permission' => 'report.view_membership'],
        ['code' => 'RPT_TEMPORARY',               'name_ar' => 'الأعضاء المؤقتون',          'category' => 'membership', 'permission' => 'report.view_membership'],
        ['code' => 'RPT_SEASONAL',                'name_ar' => 'العضويات الموسمية',          'category' => 'membership', 'permission' => 'report.view_membership'],
        ['code' => 'RPT_TRANSFERS',               'name_ar' => 'التحويلات والفصل',          'category' => 'operations', 'permission' => 'report.view_operations'],
        ['code' => 'RPT_SEPARATIONS',             'name_ar' => 'عمليات الفصل',              'category' => 'operations', 'permission' => 'report.view_operations'],
        ['code' => 'RPT_WAIVERS',                 'name_ar' => 'التنازلات',                 'category' => 'operations', 'permission' => 'report.view_operations'],
        ['code' => 'RPT_DIVORCE',                 'name_ar' => 'حالات الطلاق',              'category' => 'operations', 'permission' => 'report.view_operations'],
        ['code' => 'RPT_DEATH',                   'name_ar' => 'حالات الوفاة',              'category' => 'operations', 'permission' => 'report.view_operations'],
        ['code' => 'RPT_REVENUE',                 'name_ar' => 'تقرير الإيرادات',            'category' => 'financial',  'permission' => 'report.view_financial'],
        ['code' => 'RPT_OUTSTANDING',             'name_ar' => 'الأرصدة المستحقة',          'category' => 'financial',  'permission' => 'report.view_financial'],
        ['code' => 'RPT_INSTALLMENTS',            'name_ar' => 'حالة الأقساط',              'category' => 'financial',  'permission' => 'report.view_financial'],
        ['code' => 'RPT_SUBSCRIPTIONS',           'name_ar' => 'الاشتراكات السنوية',        'category' => 'financial',  'permission' => 'report.view_financial'],
        ['code' => 'RPT_OVERDUE_SUBSCRIPTIONS',   'name_ar' => 'الاشتراكات المتأخرة',       'category' => 'financial',  'permission' => 'report.view_financial'],
        ['code' => 'RPT_FINES',                   'name_ar' => 'الغرامات والعقوبات',        'category' => 'financial',  'permission' => 'report.view_financial'],
        ['code' => 'RPT_DAILY_CASH',              'name_ar' => 'تقرير الخزينة اليومي',      'category' => 'financial',  'permission' => 'report.view_financial'],
        ['code' => 'RPT_VOIDED_RECEIPTS',         'name_ar' => 'الإيصالات الملغاة',         'category' => 'financial',  'permission' => 'report.view_financial'],
        ['code' => 'RPT_EMPLOYEE_ACTIVITY',       'name_ar' => 'نشاط الموظفين',             'category' => 'audit',      'permission' => 'report.view_audit'],
        ['code' => 'RPT_CARNET_PRINTS',           'name_ar' => 'طباعات الكارنيه',            'category' => 'operations', 'permission' => 'report.view_operations'],
        ['code' => 'RPT_POTENTIAL_REJECTED',      'name_ar' => 'الطلبات المرفوضة',          'category' => 'membership', 'permission' => 'report.view_membership'],
        ['code' => 'RPT_EXPIRED_FORMS',           'name_ar' => 'الاستمارات المنتهية',        'category' => 'operations', 'permission' => 'report.view_operations'],
        ['code' => 'RPT_MEMBER_MOVEMENT',         'name_ar' => 'حركة العضوية',              'category' => 'membership', 'permission' => 'report.view_membership'],
        ['code' => 'RPT_GROUP_DISCOUNTS',         'name_ar' => 'خصومات المجموعات',          'category' => 'financial',  'permission' => 'report.view_financial'],
        ['code' => 'RPT_BRANCH_COMPARISON',       'name_ar' => 'مقارنة الفروع',             'category' => 'general',    'permission' => 'report.view_membership'],
        ['code' => 'RPT_SMS_LOG',                 'name_ar' => 'سجل الرسائل النصية',        'category' => 'audit',      'permission' => 'report.view_audit'],
        ['code' => 'RPT_FOREIGN_MEMBERS',         'name_ar' => 'الأعضاء الأجانب',           'category' => 'membership', 'permission' => 'report.view_membership'],
    ];

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