<?php
// 1. تشغيل صد الأخطاء النصية (لمنع تخريب الـ JSON والشاشة السوداء)
ob_start();
error_reporting(E_ALL);
ini_set('display_errors', 1);

session_start();
header('Content-Type: application/json; charset=utf-8');

$response = ['status' => 'error', 'message' => 'حدث خطأ مجهول.'];

try {
    require_once 'db_connect.php';

    if (!$conn) {
        throw new Exception('لا يوجد اتصال بقاعدة البيانات.');
    }

    if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
        throw new Exception('طريقة الطلب غير صحيحة.');
    }

    // استقبال البيانات الأساسية بأمان
    $display_name = $conn->real_escape_string(trim($_POST['display_name'] ?? ''));
    $phone = $conn->real_escape_string(trim($_POST['phone'] ?? ''));
    $email = $conn->real_escape_string(trim($_POST['email'] ?? ''));
    $specialization = $conn->real_escape_string(trim($_POST['specialization'] ?? ''));
    $password = $conn->real_escape_string(trim($_POST['password'] ?? ''));
    $title = $conn->real_escape_string(trim($_POST['title'] ?? 'أستاذ'));
    $role = $conn->real_escape_string(trim($_POST['role'] ?? 'teacher'));
    $country = $conn->real_escape_string(trim($_POST['country'] ?? 'العراق'));
    $base_salary = floatval($_POST['base_salary'] ?? 0);
    
    // المعرف السري
    $teacher_name = $conn->real_escape_string(trim($_POST['teacher_id_input'] ?? 'TCH-' . time()));
    $school_name = isset($_SESSION['school_name']) ? $conn->real_escape_string($_SESSION['school_name']) : 'مستقل';
    $account_status = 'active';

    if (empty($display_name) || empty($password) || empty($teacher_name)) {
        throw new Exception('يرجى تعبئة الحقول الإجبارية وتوليد المعرف السري.');
    }

    // ==========================================
    // 2. معالجة ورفع الملفات (الصورة والمستمسك)
    // ==========================================
    $safe_teacher_name = str_replace([' ', '/', '\\'], '_', $teacher_name);
    $upload_dir = 'uploads/teachers_data/' . $safe_teacher_name . '/';
    
    // إنشاء المجلد إذا لم يكن موجوداً
    if (!is_dir($upload_dir)) {
        if (!mkdir($upload_dir, 0777, true)) {
            throw new Exception('فشل في إنشاء مجلد حفظ الملفات. تأكد من صلاحيات المجلد uploads.');
        }
    }

    $personal_photo_path = 'NULL';
    $id_document_path = 'NULL';

    // رفع الصورة الشخصية
    if (isset($_FILES['personal_photo']) && $_FILES['personal_photo']['error'] == 0) {
        $ext = pathinfo($_FILES['personal_photo']['name'], PATHINFO_EXTENSION);
        $photo_target = $upload_dir . 'profile_' . time() . '.' . $ext;
        if (move_uploaded_file($_FILES['personal_photo']['tmp_name'], $photo_target)) {
            $personal_photo_path = "'" . $conn->real_escape_string($photo_target) . "'";
        }
    }

    // رفع المستمسكات (وحفظ مسارها للمدرس)
    if (isset($_FILES['id_document']) && $_FILES['id_document']['error'] == 0) {
        $ext = pathinfo($_FILES['id_document']['name'], PATHINFO_EXTENSION);
        $doc_target = $upload_dir . 'document_' . time() . '.' . $ext;
        if (move_uploaded_file($_FILES['id_document']['tmp_name'], $doc_target)) {
            $id_document_path = "'" . $conn->real_escape_string($doc_target) . "'";
        }
    }

    // ==========================================
    // 3. الحفظ في قاعدة البيانات (تم إضافة id_document هنا)
    // ==========================================
    $query = "INSERT INTO teachers (
        school_name, teacher_name, display_name, title, role, 
        specialization, subject, phone, email, password, 
        country, account_status, base_salary, personal_photo, id_document
    ) VALUES (
        '$school_name', '$teacher_name', '$display_name', '$title', '$role', 
        '$specialization', '$specialization', '$phone', '$email', '$password', 
        '$country', '$account_status', $base_salary, $personal_photo_path, $id_document_path
    )";

    if ($conn->query($query)) {
        // إنشاء العقد المالي تلقائياً للكادر
        $new_emp_id = $conn->insert_id;
        $emp_type = ($role === 'admin') ? 'admin' : (($role === 'accountant') ? 'accountant' : 'teacher');
        $start_dt = date('Y-m-d');
        
        $contract_query = "INSERT INTO acc_employee_contracts (employee_type, reference_id, base_salary, start_date) 
                           VALUES ('$emp_type', $new_emp_id, $base_salary, '$start_dt')";
        $conn->query($contract_query);

        $response = ['status' => 'success', 'message' => 'تم إضافة الكادر ورفع مستمسكاته وإنشاء عقده بنجاح!'];
    } else {
        throw new Exception('خطأ في قاعدة البيانات: ' . $conn->error);
    }

} catch (Exception $e) {
    $response = ['status' => 'error', 'message' => $e->getMessage()];
}

// تنظيف أي نصوص عشوائية وطباعة الـ JSON فقط
ob_clean();
echo json_encode($response, JSON_UNESCAPED_UNICODE);
exit;
?>