-- إنشاء جدول المستخدمين
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    username TEXT NOT NULL UNIQUE,
    password TEXT NOT NULL,
    full_name TEXT NOT NULL,
    email TEXT,
    role TEXT NOT NULL, -- admin, coach
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    last_login TIMESTAMP
);

-- إنشاء جدول إعدادات الجمعية
CREATE TABLE IF NOT EXISTS association_settings (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    logo TEXT, -- مسار الصورة
    address TEXT,
    phone TEXT,
    email TEXT,
    website TEXT,
    description TEXT,
    bank_account TEXT,
    tax_id TEXT,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- إنشاء جدول الفئات
CREATE TABLE IF NOT EXISTS categories (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    age_min INTEGER,
    age_max INTEGER,
    description TEXT,
    subscription_fee REAL DEFAULT 0, -- رسوم الاشتراك
    insurance_fee REAL DEFAULT 0, -- رسوم التأمين
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- إنشاء جدول المنخرطين
CREATE TABLE IF NOT EXISTS members (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    first_name TEXT NOT NULL,
    last_name TEXT NOT NULL,
    birth_date DATE NOT NULL,
    category_id INTEGER,
    phone TEXT,
    email TEXT,
    address TEXT,
    photo TEXT, -- مسار الصورة
    parent_name TEXT, -- اسم ولي الأمر
    parent_id_card TEXT, -- رقم البطاقة الوطنية لولي الأمر
    registration_date DATE DEFAULT CURRENT_DATE,
    status TEXT DEFAULT 'active', -- active, inactive
    notes TEXT,
    FOREIGN KEY (category_id) REFERENCES categories(id)
);

-- إنشاء جدول اشتراكات المنخرطين
CREATE TABLE IF NOT EXISTS subscriptions (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    member_id INTEGER NOT NULL,
    start_date DATE NOT NULL,
    end_date DATE NOT NULL,
    amount_paid REAL NOT NULL,
    payment_date DATE DEFAULT CURRENT_DATE,
    payment_method TEXT,
    is_insurance_paid BOOLEAN DEFAULT 0,
    insurance_amount REAL DEFAULT 0,
    receipt_number TEXT,
    notes TEXT,
    created_by INTEGER, -- المستخدم الذي سجل الاشتراك
    FOREIGN KEY (member_id) REFERENCES members(id),
    FOREIGN KEY (created_by) REFERENCES users(id)
);

-- إنشاء جدول المؤطرين
CREATE TABLE IF NOT EXISTS coaches (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    first_name TEXT NOT NULL,
    last_name TEXT NOT NULL,
    birth_date DATE,
    specialization TEXT,
    phone TEXT,
    email TEXT,
    address TEXT,
    photo TEXT, -- مسار الصورة
    id_card TEXT, -- رقم البطاقة الوطنية
    hire_date DATE DEFAULT CURRENT_DATE,
    status TEXT DEFAULT 'active', -- active, inactive
    salary REAL DEFAULT 0,
    notes TEXT
);

-- إنشاء جدول الفئات التي يدربها المؤطر
CREATE TABLE IF NOT EXISTS coach_categories (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    coach_id INTEGER NOT NULL,
    category_id INTEGER NOT NULL,
    FOREIGN KEY (coach_id) REFERENCES coaches(id),
    FOREIGN KEY (category_id) REFERENCES categories(id)
);

-- إنشاء جدول حصص التدريب
CREATE TABLE IF NOT EXISTS training_sessions (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT NOT NULL,
    category_id INTEGER,
    coach_id INTEGER,
    day_of_week INTEGER, -- 0 = الأحد، 1 = الاثنين، إلخ
    start_time TIME NOT NULL,
    end_time TIME NOT NULL,
    location TEXT,
    notes TEXT,
    FOREIGN KEY (category_id) REFERENCES categories(id),
    FOREIGN KEY (coach_id) REFERENCES coaches(id)
);

-- إنشاء جدول سجل الحضور
CREATE TABLE IF NOT EXISTS attendance (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    session_date DATE NOT NULL,
    training_session_id INTEGER,
    member_id INTEGER,
    coach_id INTEGER,
    status TEXT NOT NULL, -- present, absent, excused
    notes TEXT,
    recorded_by INTEGER, -- المستخدم الذي سجل الحضور
    FOREIGN KEY (training_session_id) REFERENCES training_sessions(id),
    FOREIGN KEY (member_id) REFERENCES members(id),
    FOREIGN KEY (coach_id) REFERENCES coaches(id),
    FOREIGN KEY (recorded_by) REFERENCES users(id)
);

-- إنشاء جدول الأنشطة والفعاليات
CREATE TABLE IF NOT EXISTS events (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT NOT NULL,
    description TEXT,
    event_date DATE NOT NULL,
    start_time TIME,
    end_time TIME,
    location TEXT,
    event_type TEXT, -- match, tournament, event
    category_id INTEGER,
    responsible_id INTEGER, -- المسؤول عن النشاط
    status TEXT DEFAULT 'scheduled', -- scheduled, completed, cancelled
    notes TEXT,
    FOREIGN KEY (category_id) REFERENCES categories(id),
    FOREIGN KEY (responsible_id) REFERENCES users(id)
);

-- إنشاء جدول المداخيل والمصاريف تم نقلها إلى finance_tables.sql

-- إدخال بيانات المستخدم الافتراضي (admin)
INSERT INTO users (username, password, full_name, email, role)
VALUES ('admin', '$2y$10$wxjy4bfx6OSySYmZPFJVdew5PDcVOL1MFdgzqaqJxyN8NF2C8UjIC', 'مدير النظام', 'admin@example.com', 'admin');

-- إدخال بيانات الجمعية الافتراضية
INSERT INTO association_settings (name, address, phone, email)
VALUES ('الجمعية الرياضية', 'العنوان', '0600000000', 'contact@association.com');

-- إدخال بعض الفئات الافتراضية
INSERT INTO categories (name, age_min, age_max, description, subscription_fee, insurance_fee)
VALUES 
('براعم', 6, 8, 'فئة البراعم', 200, 50),
('أشبال', 9, 12, 'فئة الأشبال', 250, 50),
('فتيان', 13, 15, 'فئة الفتيان', 300, 50),
('شباب', 16, 18, 'فئة الشباب', 350, 50),
('كبار', 19, 99, 'فئة الكبار', 400, 50);
