<?php
declare(strict_types=1);

use App\Core\Database;

/**
 * تسعير إيجارات الملاعب والصالات الرياضية بنادي الكابتن
 * طبقاً للائحة المعتمدة من مجلس الأمناء - أبريل 2025
 * يطبق فقط على: الحجز الحر + إدارة النادي للنشاط (غير الأكاديمي)
 */
return function (Database $db): void {
    // تأكد من وجود جدول service_catalog
    $tableExists = $db->selectOne(
        "SELECT 1 FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = 'service_catalog'"
    );

    if (!$tableExists) {
        return;
    }

    // تسعير إيجار الملاعب للأعضاء (ثانياً من اللائحة)
    $memberPricing = [
        ['facility_type' => 'football_full', 'name_ar' => 'كرة قدم قانوني', 'duration_minutes' => 60, 'price_morning' => 300, 'price_evening' => 500, 'max_players' => 22],
        ['facility_type' => 'football_five', 'name_ar' => 'كرة قدم خماسي', 'duration_minutes' => 60, 'price_morning' => 150, 'price_evening' => 200, 'max_players' => 12],
        ['facility_type' => 'tennis_clay', 'name_ar' => 'تنس أرضي', 'duration_minutes' => 60, 'price_morning' => 75, 'price_evening' => 100, 'max_players' => 4],
        ['facility_type' => 'padel', 'name_ar' => 'بادي تنس', 'duration_minutes' => 60, 'price_morning' => 100, 'price_evening' => 150, 'max_players' => 4],
        ['facility_type' => 'squash', 'name_ar' => 'الاسكواش', 'duration_minutes' => 60, 'price_morning' => 75, 'price_evening' => 75, 'max_players' => 2],
        ['facility_type' => 'bowling', 'name_ar' => 'البولينج', 'duration_minutes' => 0, 'price_morning' => 30, 'price_evening' => 30, 'max_players' => 5],
        ['facility_type' => 'multi_court', 'name_ar' => 'ملعب متعدد', 'duration_minutes' => 60, 'price_morning' => 50, 'price_evening' => 100, 'max_players' => 15],
        ['facility_type' => 'table_tennis', 'name_ar' => 'تنس طاولة', 'duration_minutes' => 60, 'price_morning' => 50, 'price_evening' => 50, 'max_players' => 4],
        ['facility_type' => 'playstation', 'name_ar' => 'بلاي ستيشن', 'duration_minutes' => 60, 'price_morning' => 60, 'price_evening' => 60, 'max_players' => 4],
        ['facility_type' => 'billiards', 'name_ar' => 'البلياردو', 'duration_minutes' => 60, 'price_morning' => 60, 'price_evening' => 60, 'max_players' => 4],
        ['facility_type' => 'gym', 'name_ar' => 'صالة اللياقات', 'duration_minutes' => 60, 'price_morning' => 300, 'price_evening' => 300, 'max_players' => 10],
    ];

    // تسعير إيجار الملاعب لغير الأعضاء (رابعاً من اللائحة - ممارسة)
    $nonMemberPricing = [
        ['facility_type' => 'football_full', 'name_ar' => 'كرة قدم قانوني', 'duration_minutes' => 60, 'price_morning' => 200, 'price_evening' => 300, 'max_players' => 22],
        ['facility_type' => 'football_five', 'name_ar' => 'كرة قدم خماسي', 'duration_minutes' => 60, 'price_morning' => 150, 'price_evening' => 150, 'max_players' => 12],
        ['facility_type' => 'tennis_clay', 'name_ar' => 'تنس أرضي', 'duration_minutes' => 60, 'price_morning' => 100, 'price_evening' => 150, 'max_players' => 4],
        ['facility_type' => 'padel', 'name_ar' => 'بادي تنس', 'duration_minutes' => 60, 'price_morning' => 200, 'price_evening' => 300, 'max_players' => 4],
        ['facility_type' => 'squash', 'name_ar' => 'الاسكواش', 'duration_minutes' => 60, 'price_morning' => 150, 'price_evening' => 150, 'max_players' => 2],
        ['facility_type' => 'tennis_table', 'name_ar' => 'تنس طاولة', 'duration_minutes' => 60, 'price_morning' => 60, 'price_evening' => 60, 'max_players' => 4],
        ['facility_type' => 'bowling', 'name_ar' => 'البولينج', 'duration_minutes' => 0, 'price_morning' => 60, 'price_evening' => 60, 'max_players' => 5],
        ['facility_type' => 'billiards', 'name_ar' => 'البلياردو', 'duration_minutes' => 60, 'price_morning' => 100, 'price_evening' => 100, 'max_players' => 4],
        ['facility_type' => 'playstation', 'name_ar' => 'بلاي ستيشن', 'duration_minutes' => 30, 'price_morning' => 60, 'price_evening' => 60, 'max_players' => 4],
    ];

    // تذاكر الدخول لغير الأعضاء (أولاً من اللائحة)
    $entryTickets = [
        ['day_type' => 'weekend', 'age_above_12' => 70, 'age_6_to_12' => 40, 'notes' => 'أيام الجمعة والسبت والعطلات والأعياد الرسمية'],
        ['day_type' => 'weekday', 'age_above_12' => 50, 'age_6_to_12' => 30, 'notes' => 'من يوم الأحد إلى الخميس ماعدا العطلات والأعياد الرسمية'],
    ];

    // رسوم عامة (من ضوابط مالية)
    $generalFees = [
        ['code' => 'HALL_RENT_SMALL_MEMBER', 'name_ar' => 'إيجار القاعة الصغيرة للعضو', 'amount' => 300, 'unit' => 'per_hour'],
        ['code' => 'HALL_RENT_SMALL_NON_MEMBER', 'name_ar' => 'إيجار القاعة الصغيرة لغير العضو', 'amount' => 600, 'unit' => 'per_hour'],
        ['code' => 'HALL_RENT_LARGE_MEMBER', 'name_ar' => 'إيجار القاعة الكبيرة للعضو', 'amount' => 500, 'unit' => 'per_hour'],
        ['code' => 'HALL_RENT_LARGE_NON_MEMBER', 'name_ar' => 'إيجار القاعة الكبيرة لغير العضو', 'amount' => 1000, 'unit' => 'per_hour'],
        ['code' => 'CAMERA_ENTRY_MEMBER', 'name_ar' => 'رسم دخول كاميرا فيديو للعضو', 'amount' => 100, 'unit' => 'per_hour'],
        ['code' => 'CAMERA_ENTRY_NON_MEMBER', 'name_ar' => 'رسم دخول كاميرا فيديو لغير العضو', 'amount' => 200, 'unit' => 'per_hour'],
        ['code' => 'PHOTO_CAMERA_MEMBER', 'name_ar' => 'رسم دخول كاميرا تصوير للعضو', 'amount' => 50, 'unit' => 'per_hour'],
        ['code' => 'PHOTO_CAMERA_NON_MEMBER', 'name_ar' => 'رسم دخول كاميرا تصوير لغير العضو', 'amount' => 100, 'unit' => 'per_hour'],
        ['code' => 'DJ_ENTRY_MEMBER', 'name_ar' => 'رسم دخول دي جي للعضو', 'amount' => 100, 'unit' => 'per_hour'],
        ['code' => 'DJ_ENTRY_NON_MEMBER', 'name_ar' => 'رسم دخول دي جي لغير العضو', 'amount' => 200, 'unit' => 'per_hour'],
        ['code' => 'PUPPET_SHOW_MEMBER', 'name_ar' => 'شو عرائس وألعاب أطفال للعضو', 'amount' => 75, 'unit' => 'per_hour'],
        ['code' => 'PUPPET_SHOW_NON_MEMBER', 'name_ar' => 'شو عرائس وألعاب أطفال لغير العضو', 'amount' => 150, 'unit' => 'per_hour'],
        ['code' => 'FOOD_CART', 'name_ar' => 'رسم دخول عربة (غزل بنات/مشار/آيس كريم)', 'amount' => 200, 'unit' => 'per_day'],
        ['code' => 'THEATER_RENT_MEMBER', 'name_ar' => 'إيجار المسرح الرومانى للعضو', 'amount' => 500, 'unit' => 'per_hour'],
        ['code' => 'THEATER_RENT_NON_MEMBER', 'name_ar' => 'إيجار المسرح الرومانى لغير العضو', 'amount' => 1000, 'unit' => 'per_hour'],
        ['code' => 'SPECIAL_EVENT', 'name_ar' => 'أحداث ذات طابع خاص (تصوير/برامج تلفزيونية)', 'amount' => 7000, 'unit' => 'per_hour'],
        ['code' => 'SPECIAL_EVENT_12HR', 'name_ar' => 'أحداث ذات طابع خاص (12 ساعة)', 'amount' => 70000, 'unit' => 'per_12_hours'],
        ['code' => 'WAITING_AREA_MEMBER', 'name_ar' => 'رسم ساحة الانتظار للعضو (3 ساعات)', 'amount' => 10, 'unit' => 'per_day'],
        ['code' => 'WAITING_AREA_NON_MEMBER', 'name_ar' => 'رسم ساحة الانتظار لغير العضو (3 ساعات)', 'amount' => 20, 'unit' => 'per_day'],
        ['code' => 'ACADEMY_CARD_FEE', 'name_ar' => 'بدل فاقد كارنيه الأكاديمية', 'amount' => 50, 'unit' => 'one_time'],
        ['code' => 'MEMBERSHIP_CARD_FEE', 'name_ar' => 'بدل فاقد كارنيه العضوية', 'amount' => 100, 'unit' => 'one_time'],
        ['code' => 'PARKING_FEE', 'name_ar' => 'غسيل السيارة', 'amount' => 50, 'unit' => 'per_wash'],
    ];

    // إيجار طاولات بالنادي
    $tableRentals = [
        ['location' => 'inside_main', 'name_ar' => 'داخل المبنى الرئيسي', 'price_day' => 300, 'price_week' => 1500, 'price_month' => 5400],
        ['location' => 'open_court', 'name_ar' => 'الملاعب المفتوحة', 'price_day' => 300, 'price_week' => 1500, 'price_month' => 5400],
        ['location' => 'pool_area', 'name_ar' => 'حمام السباحة', 'price_day' => 400, 'price_week' => 2000, 'price_month' => 7200],
    ];

    // حجز اللوكر
    $lockerPricing = [
        ['period' => 'monthly', 'amount' => 150],
        ['period' => 'quarterly', 'amount' => 450],
        ['period' => 'yearly', 'amount' => 1000],
    ];

    // تراك الدرجات
    $trackPricing = [
        ['period' => 'monthly', 'amount' => 100],
        ['period' => 'semi_annual', 'amount' => 300],
        ['period' => 'yearly', 'amount' => 600],
    ];

    // رسوم حمام السباحة (للمؤسسات)
    $poolInstitutional = [
        ['name_ar' => 'حمام سباحة 25 متر', 'price_morning' => 500, 'price_evening' => 800, 'max_players' => 8],
        ['name_ar' => 'حمام سباحة 50 متر', 'price_morning' => 800, 'price_evening' => 1000, 'max_players' => 12],
    ];

    // حفظ في system_config كـ JSON
    $configs = [
        ['config_key' => 'sports_pricing_member', 'config_value' => json_encode($memberPricing, JSON_UNESCAPED_UNICODE), 'group_name' => 'sports_pricing', 'config_type' => 'json', 'description_ar' => 'تسعير الملاعب للأعضاء - لائحة 2025'],
        ['config_key' => 'sports_pricing_non_member', 'config_value' => json_encode($nonMemberPricing, JSON_UNESCAPED_UNICODE), 'group_name' => 'sports_pricing', 'config_type' => 'json', 'description_ar' => 'تسعير الملاعب لغير الأعضاء - لائحة 2025'],
        ['config_key' => 'entry_tickets_non_member', 'config_value' => json_encode($entryTickets, JSON_UNESCAPED_UNICODE), 'group_name' => 'sports_pricing', 'config_type' => 'json', 'description_ar' => 'تذاكر الدخول لغير الأعضاء'],
        ['config_key' => 'general_fees', 'config_value' => json_encode($generalFees, JSON_UNESCAPED_UNICODE), 'group_name' => 'sports_pricing', 'config_type' => 'json', 'description_ar' => 'الرسوم العامة - لائحة 2025'],
        ['config_key' => 'table_rentals', 'config_value' => json_encode($tableRentals, JSON_UNESCAPED_UNICODE), 'group_name' => 'sports_pricing', 'config_type' => 'json', 'description_ar' => 'إيجار الطاولات بالنادي'],
        ['config_key' => 'locker_pricing', 'config_value' => json_encode($lockerPricing, JSON_UNESCAPED_UNICODE), 'group_name' => 'sports_pricing', 'config_type' => 'json', 'description_ar' => 'حجز اللوكر'],
        ['config_key' => 'track_pricing', 'config_value' => json_encode($trackPricing, JSON_UNESCAPED_UNICODE), 'group_name' => 'sports_pricing', 'config_type' => 'json', 'description_ar' => 'تراك الدرجات'],
        ['config_key' => 'pool_institutional', 'config_value' => json_encode($poolInstitutional, JSON_UNESCAPED_UNICODE), 'group_name' => 'sports_pricing', 'config_type' => 'json', 'description_ar' => 'رسوم حمام السباحة للمؤسسات'],
    ];

    foreach ($configs as $config) {
        $exists = $db->selectOne(
            "SELECT id FROM system_config WHERE config_key = ?",
            [$config['config_key']]
        );

        if ($exists) {
            $db->update('system_config', [
                'config_value'  => $config['config_value'],
                'description_ar' => $config['description_ar'],
            ], 'config_key = ?', [$config['config_key']]);
        } else {
            $db->insert('system_config', $config);
        }
    }
};
