<?php
// استدعاء ملف الحماية الشاملة فوراً
require_once __DIR__ . '/security_headers.php';
require_once 'db_connect.php';



// مسح أي مخرجات أو مسافات فارغة جاءت من ملفات أخرى (مثل db_connect.php)
ob_clean();

// 1. إجبار السيرفر على إرجاع JSON فقط
header('Content-Type: application/json; charset=utf-8');

// 2. إيقاف عرض الأخطاء كـ HTML لكي لا تفسد ה-JSON
error_reporting(0);
ini_set('display_errors', 0);

// حماية الصفحة للمدير أو المحاسب فقط
if (!isset($_SESSION['loggedin']) || !in_array($_SESSION['role'], ['admin', 'accountant'])) {
    echo json_encode(['status' => 'error', 'message' => 'غير مصرح لك بإجراء عمليات مالية']);
    exit;
}

$school_name = $conn->real_escape_string($_SESSION['school_name'] ?? 'مستقل');
$operator_name = $conn->real_escape_string($_SESSION['manager_name'] ?? $_SESSION['display_name'] ?? 'غير معروف');

// قراءة نوع العملية (من الـ POST)
$action = $_POST['action'] ?? '';

// ==========================================
// 🚀 1. تأمين وجود جداول المالية 🚀
// ==========================================
// جدول مصفوفة الأسعار
$conn->query("CREATE TABLE IF NOT EXISTS `acc_pricing_matrix` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `school_name` varchar(150) NOT NULL,
  `stage_name` varchar(100) NOT NULL,
  `base_price` decimal(15,2) NOT NULL DEFAULT '0.00',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_stage_school` (`school_name`,`stage_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;");

// جدول الحركات العامة (في حال لم يكن موجوداً)
$conn->query("CREATE TABLE IF NOT EXISTS `finance_transactions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `school_name` varchar(255) NOT NULL,
  `transaction_type` enum('income','expense') NOT NULL,
  `amount` decimal(15,2) NOT NULL,
  `party_name` varchar(255) NOT NULL,
  `description` text,
  `operator_name` varchar(255) NOT NULL,
  `transaction_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");


// ==========================================
// 💰 2. حفظ مصفوفة الأسعار (Pricing Matrix) 💰
// ==========================================
if ($action === 'save_pricing_matrix') {
    // قراءة المصفوفة القادمة من الجافاسكريبت
    $pricing_data_json = $_POST['pricing_data'] ?? '{}';
    $pricing_data = json_decode($pricing_data_json, true);
    
    if (empty($pricing_data)) {
        echo json_encode(['status' => 'error', 'message' => 'لا توجد بيانات لحفظها.']);
        exit;
    }

    $success_count = 0;
    
    // استخدام ON DUPLICATE KEY UPDATE لتحديث السعر إذا كانت المرحلة مسجلة مسبقاً
    $stmt = $conn->prepare("
        INSERT INTO acc_pricing_matrix (school_name, stage_name, base_price) 
        VALUES (?, ?, ?) 
        ON DUPLICATE KEY UPDATE base_price = VALUES(base_price)
    ");
    
    if ($stmt) {
        foreach ($pricing_data as $stage => $price) {
            $clean_stage = $conn->real_escape_string($stage);
            $clean_price = floatval($price);
            
            $stmt->bind_param("ssd", $school_name, $clean_stage, $clean_price);
            if ($stmt->execute()) {
                $success_count++;
            }
        }
        $stmt->close();
        
        if ($success_count > 0) {
            echo json_encode(['status' => 'success', 'message' => 'تم حفظ وتحديث التسعيرة بنجاح!']);
        } else {
            echo json_encode(['status' => 'error', 'message' => 'لم يتم حفظ أي بيانات، تأكد من المدخلات.']);
        }
    } else {
        echo json_encode(['status' => 'error', 'message' => 'خطأ في إعداد الاستعلام.']);
    }
    exit;
}

// ==========================================
// 💰 3. استلام مبلغ (سند قبض سريع) 💰
// ==========================================
if ($action === 'receive_payment') {
    $payer = $conn->real_escape_string(trim($_POST['payer_name'] ?? ''));
    $amount = floatval($_POST['amount'] ?? 0);
    $notes = $conn->real_escape_string(trim($_POST['notes'] ?? ''));

    if (empty($payer) || $amount <= 0) {
        echo json_encode(['status' => 'error', 'message' => 'يرجى إدخال اسم الدافع والمبلغ.']);
        exit;
    }

    $sql = "INSERT INTO finance_transactions (school_name, transaction_type, amount, party_name, description, operator_name) 
            VALUES (?, 'income', ?, ?, ?, ?)";
            
    $stmt = $conn->prepare($sql);
    if ($stmt) {
        $stmt->bind_param("sdsss", $school_name, $amount, $payer, $notes, $operator_name);
        if ($stmt->execute()) {
            echo json_encode(['status' => 'success', 'message' => 'تم استلام المبلغ وحفظ السند بنجاح!']);
        } else {
            echo json_encode(['status' => 'error', 'message' => 'حدث خطأ أثناء حفظ البيانات.']);
        }
        $stmt->close();
    } else {
        echo json_encode(['status' => 'error', 'message' => 'خطأ في إعداد قاعدة البيانات.']);
    }
    exit;
}

// إذا لم يتم تطابق أي Action
echo json_encode(['status' => 'error', 'message' => 'إجراء غير معروف.']);
exit;
?>