<?php
/**
 * API: تعيين فاحص لطلب فحص
 * POST /api/supervisor/endpoints/assign_inspector.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();
}

// إعدادات الاتصال بقاعدة البيانات
$host = "localhost";
$dbname = "digitals_autotester_db";
$username = "digitals";
$password = "bassam.bassam";

$input = json_decode(file_get_contents('php://input'), true);

if (!$input) {
    echo json_encode(['success' => false, 'message' => 'لم يتم إرسال بيانات']);
    exit;
}

$requestId = $input['request_id'] ?? null;
$inspectorId = $input['inspector_id'] ?? null;
$inspectorName = $input['inspector_name'] ?? null;
$requestNumber = $input['request_number'] ?? null;

if (!$requestId) {
    echo json_encode(['success' => false, 'message' => 'معرف الطلب غير صالح']);
    exit;
}

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // أولاً: جلب أسماء الأعمدة الموجودة في الجدول
    $columnsQuery = "SHOW COLUMNS FROM inspection_requests_new";
    $columnsStmt = $pdo->prepare($columnsQuery);
    $columnsStmt->execute();
    $existingColumns = $columnsStmt->fetchAll(PDO::FETCH_COLUMN);
    
    // التحقق من وجود الطلب
    $checkQuery = "SELECT id, status FROM inspection_requests_new WHERE id = :id";
    $checkStmt = $pdo->prepare($checkQuery);
    $checkStmt->execute([':id' => $requestId]);
    $request = $checkStmt->fetch(PDO::FETCH_ASSOC);
    
    if (!$request) {
        echo json_encode(['success' => false, 'message' => 'الطلب غير موجود']);
        exit;
    }
    
    // بناء استعلام التحديث بناءً على الأعمدة الموجودة
    $setFields = [];
    $params = [':id' => $requestId];
    
    // إضافة عمود inspector_id إذا كان موجوداً
    if (in_array('inspector_id', $existingColumns)) {
        $setFields[] = "inspector_id = :inspector_id";
        $params[':inspector_id'] = $inspectorId;
    }
    
    // إضافة عمود inspector_name إذا كان موجوداً
    if (in_array('inspector_name', $existingColumns)) {
        $setFields[] = "inspector_name = :inspector_name";
        $params[':inspector_name'] = $inspectorName;
    }
    
    // إضافة عمود assigned_to إذا كان موجوداً
    if (in_array('assigned_to', $existingColumns)) {
        $setFields[] = "assigned_to = :assigned_to";
        $params[':assigned_to'] = $inspectorId;
    }
    
    // إضافة عمود assigned_inspector إذا كان موجوداً
    if (in_array('assigned_inspector', $existingColumns)) {
        $setFields[] = "assigned_inspector = :assigned_inspector";
        $params[':assigned_inspector'] = $inspectorName;
    }
    
    // تحديث الحالة
    $setFields[] = "status = 'assigned'";
    $setFields[] = "updated_at = NOW()";
    
    // إضافة عمود assigned_date إذا كان موجوداً
    if (in_array('assigned_date', $existingColumns)) {
        $setFields[] = "assigned_date = NOW()";
    }
    
    if (count($setFields) === 0) {
        echo json_encode(['success' => false, 'message' => 'لا توجد أعمدة مناسبة للتحديث']);
        exit;
    }
    
    $query = "UPDATE inspection_requests_new 
              SET " . implode(", ", $setFields) . "
              WHERE id = :id AND (status = 'pending' OR status IS NULL)";
    
    $stmt = $pdo->prepare($query);
    $result = $stmt->execute($params);
    
    if ($result && $stmt->rowCount() > 0) {
        echo json_encode([
            'success' => true,
            'message' => 'تم تعيين الفاحص بنجاح',
            'request_id' => $requestId,
            'inspector_id' => $inspectorId,
            'inspector_name' => $inspectorName
        ], JSON_UNESCAPED_UNICODE);
    } else {
        echo json_encode([
            'success' => false,
            'message' => 'لم يتم تحديث الطلب (ربما تم تعيينه مسبقاً أو الحالة غير صالحة)'
        ], JSON_UNESCAPED_UNICODE);
    }
    
} catch(PDOException $e) {
    error_log("Database error: " . $e->getMessage());
    echo json_encode([
        'success' => false,
        'message' => 'Database error: ' . $e->getMessage()
    ], JSON_UNESCAPED_UNICODE);
}
?>