<?php
// save_student.php - النسخة النهائية بدون أخطاء
error_reporting(E_ALL);
ini_set('display_errors', 1);
session_start();

require 'db.php';
require 'helpers.php';
require_committee();

try {
    if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
        throw new Exception('طريقة الطلب غير مسموحة', 405);
    }

    if (!isset($_POST['csrf_token']) || !isset($_SESSION['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
        throw new Exception('رمز التحقق غير صالح', 403);
    }

    if (!isset($_SESSION['committee_id'])) {
        throw new Exception('يجب تسجيل الدخول أولاً', 401);
    }

    $committeeId = (int)($_SESSION['committee_id'] ?? 0);

    // الحصول على البيانات
    $student_id = trim($_POST['student_id'] ?? '');
    $student_name = trim($_POST['student_name'] ?? '');
    $student_name_eng = !empty($_POST['student_name_eng']) ? trim($_POST['student_name_eng']) : null;
    $gender = (int)($_POST['gender'] ?? 0);
    $college_id = (string)($_POST['college_id'] ?? '0');
    $program_id = (string)($_POST['program_id'] ?? '0');
    $section_id = (string)($_POST['section_id'] ?? '0');
    $batch_id = (string)($_POST['batch_id'] ?? '0');
    
    $specialization_id = (!empty($_POST['specialization_id']) && is_numeric($_POST['specialization_id'])) 
        ? (string)$_POST['specialization_id'] : null;
    
    $admission_id = (!empty($_POST['admission_id']) && is_numeric($_POST['admission_id'])) 
        ? (string)$_POST['admission_id'] : null;
    
    $program_fees = (float)($_POST['program_fees'] ?? 0);
    $registration_fees = (float)($_POST['registration_fees'] ?? 0);
    $insurance_fees = (float)($_POST['insurance_fees'] ?? 0);
    $discount = (float)($_POST['discount'] ?? 0);
    
    $program_fees = max(0, $program_fees);
    $registration_fees = max(0, $registration_fees);
    $insurance_fees = max(0, $insurance_fees);
    $discount = min(100, max(0, $discount));

    // التحقق من الحقول المطلوبة
    $required = ['student_id', 'student_name', 'gender', 'college_id', 'program_id', 'section_id', 'batch_id'];
    $missing = [];
    foreach ($required as $field) {
        if (empty($$field) && $$field !== '0') {
            $missing[] = $field;
        }
    }
    if (!empty($missing)) {
        throw new Exception('الحقول التالية مطلوبة: ' . implode(', ', $missing));
    }

    if (!in_array($gender, [1, 2])) $gender = 1;
    if (strlen($student_id) > 50) throw new Exception('رقم الطالب طويل جداً');
    if (strlen($student_name) > 191) throw new Exception('الاسم طويل جداً');

    // التحقق من عدم تكرار رقم الطالب
    $check = $mysqli1->prepare("SELECT COUNT(*) FROM students WHERE student_id = ? AND deleted_at IS NULL");
    $check->bind_param('s', $student_id);
    $check->execute();
    $check->bind_result($count);
    $check->fetch();
    $check->close();
    
    if ($count > 0) {
        throw new Exception('رقم الطالب "' . htmlspecialchars($student_id) . '" موجود مسبقاً');
    }

    // إدراج الطالب
    $query = "INSERT INTO students (
        student_id, student_number, student_name, student_name_eng, gender,
        college_id, program_id, section_id, batch_id,
        specialization_id, admission_id, 
        program_fees, registration_fees, insurance_fees, discount,
        created_at, updated_at
    ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW())";

    $stmt = $mysqli1->prepare($query);
    if (!$stmt) {
        throw new Exception('خطأ في إعداد الاستعلام: ' . $mysqli1->error);
    }

    $student_number = $student_id;
    $gender_str = (string)$gender;

    $stmt->bind_param(
        'sssssssssssdddd',
        $student_id, $student_number, $student_name, $student_name_eng, $gender_str,
        $college_id, $program_id, $section_id, $batch_id,
        $specialization_id, $admission_id,
        $program_fees, $registration_fees, $insurance_fees, $discount
    );

    if (!$stmt->execute()) {
        if ($stmt->errno == 1062) {
            throw new Exception('رقم الطالب مكرر');
        } elseif ($stmt->errno == 1452) {
            throw new Exception('خطأ في العلاقات الخارجية');
        } else {
            throw new Exception('خطأ في حفظ البيانات: ' . $stmt->error);
        }
    }

    $new_student_id = $mysqli1->insert_id;
    $stmt->close();

    // تم تعطيل تسجيل النشاطات لتجنب أي أخطاء
    // يمكنك تفعيله لاحقاً عند الحاجة

    $_SESSION['success_message'] = "✅ تم إضافة الطالب {$student_name} بنجاح برقم: {$student_id}";
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
    unset($_SESSION['form_data']);
    
    header('Location: add-student.php');
    exit();

} catch (Exception $e) {
    $_SESSION['error_message'] = $e->getMessage();
    $_SESSION['form_data'] = $_POST;
    error_log("خطأ: " . $e->getMessage());
    header('Location: add-student.php');
    exit();
}
?>