<?php
/**
 * API: تحديث حالة طلب المشرف
 * POST /api/supervisor/endpoints/update_supervisor_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();
}

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

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

if (!$input || !isset($input['user_id']) || !isset($input['status'])) {
    echo json_encode(['success' => false, 'message' => 'بيانات غير مكتملة']);
    exit;
}

$userId = (int)$input['user_id'];
$status = $input['status'];
$notes = $input['notes'] ?? null;

$allowedStatuses = ['pending', 'reviewed', 'interview', 'accepted', 'rejected'];

if (!in_array($status, $allowedStatuses)) {
    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);
    
    $pdo->beginTransaction();
    
    // تحديث حالة المشرف في جدول supervisors
    $query = "UPDATE supervisors SET status = :status, updated_at = NOW() WHERE user_id = :user_id";
    $stmt = $pdo->prepare($query);
    $stmt->execute([
        ':status' => $status,
        ':user_id' => $userId
    ]);
    
    // إذا تم القبول، تحديث دور المستخدم في جدول users
    if ($status === 'accepted') {
        $updateUser = $pdo->prepare("UPDATE users SET role = 'supervisor', is_active = 1, updated_at = NOW() WHERE id = ?");
        $updateUser->execute([$userId]);
        
        // إرسال إشعار للمشرف
        $userQuery = $pdo->prepare("SELECT full_name, email FROM users WHERE id = ?");
        $userQuery->execute([$userId]);
        $user = $userQuery->fetch(PDO::FETCH_ASSOC);
        
        // يمكن إضافة إشعار أو إرسال بريد إلكتروني هنا
    }
    
    // إذا تم الرفض، تحديث الحالة فقط
    if ($status === 'rejected') {
        $updateUser = $pdo->prepare("UPDATE users SET role = 'client', is_active = 0 WHERE id = ?");
        $updateUser->execute([$userId]);
    }
    
    $pdo->commit();
    
    echo json_encode([
        'success' => true,
        'message' => 'تم تحديث حالة المشرف بنجاح',
        'data' => [
            'user_id' => $userId,
            'status' => $status
        ]
    ], JSON_UNESCAPED_UNICODE);
    
} catch(PDOException $e) {
    if (isset($pdo)) $pdo->rollBack();
    error_log("Database error: " . $e->getMessage());
    echo json_encode([
        'success' => false,
        'message' => 'Database error: ' . $e->getMessage()
    ], JSON_UNESCAPED_UNICODE);
}
?>