<?php
/**
 * تحديث حالة أي طلب في النظام
 * api/admin/update_request_status.php
 */

header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, OPTIONS');

if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    http_response_code(200);
    exit();
}

require_once '../config/database.php';
require_once 'includes/auth.php';

validateAdminToken();

$data = json_decode(file_get_contents('php://input'), true);
$table = $data['table'] ?? '';
$requestId = $data['request_id'] ?? 0;
$newStatus = $data['status'] ?? '';
$comments = $data['comments'] ?? '';

$allowedTables = [
    'permission_requests', 'registration_requests', 'supervisors_requests',
    'trainees_requests', 'job_applications', 'inspectors_requests',
    'companies_requests', 'clients_requests', 'administrative_requests'
];

if (!in_array($table, $allowedTables)) {
    http_response_code(400);
    echo json_encode(['error' => 'جدول غير مسموح به']);
    exit();
}

if (!$requestId || !$newStatus) {
    http_response_code(400);
    echo json_encode(['error' => 'معرف الطلب والحالة الجديدة مطلوبان']);
    exit();
}

try {
    $database = new Database();
    $db = $database->getConnection();
    $db->beginTransaction();
    
    // تحديث حالة الطلب
    $stmt = $db->prepare("UPDATE $table SET status = :status, updated_at = NOW() WHERE id = :id");
    $stmt->execute([':status' => $newStatus, ':id' => $requestId]);
    
    // إضافة إشعار للمدير
    $stmt = $db->prepare("
        INSERT INTO admin_notifications (title, message, type, created_at) 
        VALUES (:title, :message, 'request_update', NOW())
    ");
    $stmt->execute([
        ':title' => "تحديث طلب في جدول $table",
        ':message' => "تم تحديث حالة الطلب رقم $requestId إلى $newStatus" . ($comments ? " - ملاحظات: $comments" : "")
    ]);
    
    $db->commit();
    
    echo json_encode([
        'success' => true,
        'message' => 'تم تحديث حالة الطلب بنجاح'
    ]);
    
} catch (PDOException $e) {
    $db->rollBack();
    http_response_code(500);
    echo json_encode(['error' => 'خطأ في قاعدة البيانات: ' . $e->getMessage()]);
}
?>