<?php
// database/setup_sqlite.php

require_once __DIR__ . '/../config/db.php';

echo "Initializing Database...\n";

$db = Database::getConnection();

// Create tables
$db->exec("
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL UNIQUE,
    phone VARCHAR(50) NOT NULL,
    password_hash VARCHAR(255) NOT NULL,
    bio TEXT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE IF NOT EXISTS courses (
    id VARCHAR(50) PRIMARY KEY,
    title_en VARCHAR(255) NOT NULL,
    title_ar VARCHAR(255) NOT NULL,
    description_en TEXT NOT NULL,
    description_ar TEXT NOT NULL,
    category_en VARCHAR(100) NOT NULL,
    category_ar VARCHAR(100) NOT NULL,
    instructor_en VARCHAR(255) NOT NULL,
    instructor_ar VARCHAR(255) NOT NULL,
    rating DECIMAL(3, 1) DEFAULT 5.0,
    reviews_count INT DEFAULT 0,
    price_ngn INT NOT NULL,
    price_usd INT NOT NULL,
    duration_en VARCHAR(50) NOT NULL,
    duration_ar VARCHAR(50) NOT NULL,
    image TEXT NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE IF NOT EXISTS course_modules (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    course_id VARCHAR(50) NOT NULL,
    module_index INT NOT NULL,
    title_en VARCHAR(255) NOT NULL,
    title_ar VARCHAR(255) NOT NULL,
    FOREIGN KEY (course_id) REFERENCES courses(id) ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS enrollments (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    user_id INT NOT NULL,
    course_id VARCHAR(50) NOT NULL,
    enrolled_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    progress INT DEFAULT 0,
    status VARCHAR(20) DEFAULT 'in_progress',
    grade VARCHAR(10) DEFAULT 'A',
    completed_modules_json TEXT DEFAULT '[]',
    payment_reference VARCHAR(100),
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
    FOREIGN KEY (course_id) REFERENCES courses(id) ON DELETE CASCADE,
    UNIQUE(user_id, course_id)
);

CREATE TABLE IF NOT EXISTS live_classes (
    id VARCHAR(50) PRIMARY KEY,
    title_en VARCHAR(255) NOT NULL,
    title_ar VARCHAR(255) NOT NULL,
    class_date VARCHAR(50) NOT NULL,
    class_time VARCHAR(50) NOT NULL,
    duration_en VARCHAR(50) NOT NULL,
    duration_ar VARCHAR(50) NOT NULL,
    instructor_en VARCHAR(255) NOT NULL,
    platform VARCHAR(50) NOT NULL,
    link VARCHAR(255) NOT NULL,
    status VARCHAR(20) DEFAULT 'upcoming'
);
");

echo "Tables created successfully.\n";

// Seed Courses
$stmtCheck = $db->query("SELECT COUNT(*) FROM courses");
if ((int)$stmtCheck->fetchColumn() === 0) {
    echo "Seeding Course Data...\n";

    $courses = [
        [
            'id' => 'course-1',
            'title_en' => 'Advanced Classical Arabic & Linguistics',
            'title_ar' => 'اللغة العربية الفصحى المتقدمة واللسانيات',
            'description_en' => 'Master Arabic grammar (Nahw), morphology (Sarf), and eloquence (Balaghah). Ideal for deep theological and academic studies.',
            'description_ar' => 'أتقن قواعد النحو والصرف والبلاغة العربية. مثالي للدراسات اللاهوتية والأكاديمية العميقة.',
            'category_en' => 'Linguistics & Islamic Studies',
            'category_ar' => 'اللسانيات والدراسات الإسلامية',
            'instructor_en' => 'Prof. Dr. Ibrahim Al-Hassan',
            'instructor_ar' => 'أ. د. إبراهيم الحسن',
            'rating' => 4.9,
            'reviews_count' => 142,
            'price_ngn' => 45000,
            'price_usd' => 30,
            'duration_en' => '12 weeks',
            'duration_ar' => '١٢ أسبوعاً',
            'image' => 'https://images.unsplash.com/photo-1544716278-ca5e3f4abd8c?auto=format&fit=crop&q=80&w=800',
            'modules' => [
                ['Introduction to Nahw & Sentence Structure', 'مقدمة في علم النحو وتركيب الجملة'],
                ['Advanced Morphology (Sarf) & Verb Paradigms', 'الصرف المتقدم وأوزان الأفعال'],
                ['The Science of Eloquence (Balaghah) & Metaphors', 'علم البلاغة والمجاز والبيان'],
                ['Classical Textual Analysis & Composition', 'تحليل النصوص الفصحى والكتابة الإبداعية']
            ]
        ],
        [
            'id' => 'course-2',
            'title_en' => 'Full-Stack Software Engineering (React & Node.js)',
            'title_ar' => 'هندسة البرمجيات الكاملة (React & Node.js)',
            'description_en' => 'Build robust web applications from scratch. Covers Tailwind CSS, React, Express, MongoDB, and modern web deployment.',
            'description_ar' => 'ابنِ تطبيقات ويب متكاملة وقوية من الصفر. يغطي Tailwind CSS وReact وExpress وMongoDB ونشر المواقع الحديثة.',
            'category_en' => 'Technology & Coding',
            'category_ar' => 'التكنولوجيا والبرمجة',
            'instructor_en' => 'Engr. Yusuf Mohammed',
            'instructor_ar' => 'المهندس يوسف محمد',
            'rating' => 4.8,
            'reviews_count' => 320,
            'price_ngn' => 75000,
            'price_usd' => 50,
            'duration_en' => '16 weeks',
            'duration_ar' => '١٦ أسبوعاً',
            'image' => 'https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&fit=crop&q=80&w=800',
            'modules' => [
                ['Frontend Fundamentals: HTML, CSS & Modern JS', 'أساسيات واجهات المستخدم: HTML, CSS وجافا سكريبت الحديثة'],
                ['Building Responsive Interfaces with Tailwind CSS', 'بناء واجهات متجاوبة باستخدام Tailwind CSS'],
                ['React Components, State Management & Hooks', 'مكونات React، إدارة الحالة والخطافات (Hooks)'],
                ['Backend Systems: Express API Design & Databases', 'الأنظمة الخلفية: تصميم واجهات Express وقواعد البيانات']
            ]
        ],
        [
            'id' => 'course-3',
            'title_en' => 'Islamic Finance, Wealth Management & Ethics',
            'title_ar' => 'التمويل الإسلامي، إدارة الثروات والأخلاقيات',
            'description_en' => 'Learn the ethical foundations of Islamic finance, Takaful, Murabaha, Sukuk bond structures, and shariah-compliant modern investing.',
            'description_ar' => 'تعرف على الأسس الأخلاقية للتمويل الإسلامي والتكافل والمرابحة والصكوك واستراتيجيات الاستثمار المتوافقة مع الشريعة.',
            'category_en' => 'Business & Finance',
            'category_ar' => 'الأعمال والتمويل',
            'instructor_en' => 'Dr. Fatima Umar',
            'instructor_ar' => 'د. فاطمة عمر',
            'rating' => 4.7,
            'reviews_count' => 98,
            'price_ngn' => 60000,
            'price_usd' => 40,
            'duration_en' => '8 weeks',
            'duration_ar' => '٨ أسابيع',
            'image' => 'https://images.unsplash.com/photo-1590283603385-17ffb3a7f29f?auto=format&fit=crop&q=80&w=800',
            'modules' => [
                ['Principles of Shariah in Commercial Contracts', 'مبادئ الشريعة في العقود والمعاملات التجارية'],
                ['Islamic Banking vs Traditional Finance Mechanisms', 'الخدمات المصرفية الإسلامية مقابل التمويل التقليدي'],
                ['Sukuk Bonds, Capital Markets & Ethical Investment', 'الصكوك، أسواق رأس المال، والاستثمار الأخلاقي'],
                ['Zakat Calculation, Inheritance & Wealth Management', 'حساب الزكاة والمواريث وإدارة الثروات الشخصية']
            ]
        ],
        [
            'id' => 'course-4',
            'title_en' => 'Professional Graphic Design & Brand Identity',
            'title_ar' => 'التصميم الجرافيكي الاحترافي والهوية البصرية',
            'description_en' => 'Master Adobe Photoshop, Illustrator, and Figma. Build stunning layouts, vectors, branding assets, and high-quality portfolio pieces.',
            'description_ar' => 'احترف أدوبي فوتوشوب، إليستريتور، وفيجما. ابنِ تصاميم مذهلة، شعارات، هويات تجارية، وحقيبة أعمال احترافية.',
            'category_en' => 'Design & Creative',
            'category_ar' => 'التصميم والإبداع',
            'instructor_en' => 'Ustadha Aisha Al-Sayed',
            'instructor_ar' => 'الأستاذة عائشة السيد',
            'rating' => 4.9,
            'reviews_count' => 210,
            'price_ngn' => 50000,
            'price_usd' => 35,
            'duration_en' => '10 weeks',
            'duration_ar' => '١٠ أسابيع',
            'image' => 'https://images.unsplash.com/photo-1626785774573-4b799315345d?auto=format&fit=crop&q=80&w=800',
            'modules' => [
                ['Design Principles, Color Theory & Typography', 'مبادئ التصميم، نظرية الألوان والخطوط'],
                ['Vector Illustration & Brand Logo Systems', 'الرسم المتجهي ونظم الهويات البصرية'],
                ['UI/UX Design Wireframing in Figma', 'تصميم واجهات المستخدم Wireframing في فيجما'],
                ['Portfolio Preparation & Client Presentation', 'إعداد ملف الأعمال وعرض المشاريع للعملاء']
            ]
        ]
    ];

    $stmtInsert = $db->prepare("INSERT INTO courses (id, title_en, title_ar, description_en, description_ar, category_en, category_ar, instructor_en, instructor_ar, rating, reviews_count, price_ngn, price_usd, duration_en, duration_ar, image) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
    $stmtMod = $db->prepare("INSERT INTO course_modules (course_id, module_index, title_en, title_ar) VALUES (?, ?, ?, ?)");

    foreach ($courses as $c) {
        $stmtInsert->execute([
            $c['id'], $c['title_en'], $c['title_ar'], $c['description_en'], $c['description_ar'],
            $c['category_en'], $c['category_ar'], $c['instructor_en'], $c['instructor_ar'],
            $c['rating'], $c['reviews_count'], $c['price_ngn'], $c['price_usd'],
            $c['duration_en'], $c['duration_ar'], $c['image']
        ]);

        foreach ($c['modules'] as $idx => $m) {
            $stmtMod->execute([$c['id'], $idx, $m[0], $m[1]]);
        }
    }
    echo "Courses seeded successfully.\n";
}

// Seed Live Classes
$stmtLiveCheck = $db->query("SELECT COUNT(*) FROM live_classes");
if ((int)$stmtLiveCheck->fetchColumn() === 0) {
    echo "Seeding Live Classes...\n";
    $liveClasses = [
        [
            'id' => 'live-1',
            'title_en' => 'Live Q&A: Balaghah & Rhetoric in Quranic Exegesis',
            'title_ar' => 'جلسة أسئلة مباشرة: البلاغة والإعجاز البياني في التفسير',
            'class_date' => 'Tomorrow',
            'class_time' => '16:00 GMT+1',
            'duration_en' => '90 mins',
            'duration_ar' => '٩٠ دقيقة',
            'instructor_en' => 'Prof. Dr. Ibrahim Al-Hassan',
            'platform' => 'Zoom',
            'link' => 'https://zoom.us/j/demo123456',
            'status' => 'upcoming'
        ],
        [
            'id' => 'live-2',
            'title_en' => 'Workshop: Building RESTful APIs with Node.js & Express',
            'title_ar' => 'ورشة عمل: بناء واجهات برمجة التطبيقات باستخدام Node.js',
            'class_date' => 'Friday',
            'class_time' => '18:30 GMT+1',
            'duration_en' => '120 mins',
            'duration_ar' => '١٢٠ دقيقة',
            'instructor_en' => 'Engr. Yusuf Mohammed',
            'platform' => 'Google Meet',
            'link' => 'https://meet.google.com/demo-abc-xyz',
            'status' => 'upcoming'
        ]
    ];

    $stmtLive = $db->prepare("INSERT INTO live_classes (id, title_en, title_ar, class_date, class_time, duration_en, duration_ar, instructor_en, platform, link, status) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
    foreach ($liveClasses as $l) {
        $stmtLive->execute([
            $l['id'], $l['title_en'], $l['title_ar'], $l['class_date'], $l['class_time'],
            $l['duration_en'], $l['duration_ar'], $l['instructor_en'], $l['platform'], $l['link'], $l['status']
        ]);
    }
    echo "Live classes seeded successfully.\n";
}

// Seed Demo User
$stmtUserCheck = $db->query("SELECT COUNT(*) FROM users WHERE email = 'student@alfaruq.edu'");
if ((int)$stmtUserCheck->fetchColumn() === 0) {
    echo "Seeding Demo Student User...\n";
    $passHash = password_hash('password123', PASSWORD_BCRYPT);
    $stmtUser = $db->prepare("INSERT INTO users (name, email, phone, password_hash, bio) VALUES (?, ?, ?, ?, ?)");
    $stmtUser->execute([
        'Ahmad Al-Mansoor',
        'student@alfaruq.edu',
        '+234 803 123 4567',
        $passHash,
        'Enthusiastic scholar in Classical Arabic and Modern Technology.'
    ]);
    $userId = $db->lastInsertId();

    // Auto-enroll in course-1
    $stmtEnroll = $db->prepare("INSERT INTO enrollments (user_id, course_id, progress, status, grade, completed_modules_json) VALUES (?, ?, ?, ?, ?, ?)");
    $stmtEnroll->execute([
        $userId,
        'course-1',
        25,
        'in_progress',
        'A',
        json_encode([0])
    ]);

    echo "Demo student created (Email: student@alfaruq.edu / Pass: password123).\n";
}

echo "Database initialization complete!\n";
