<?php
/**
 * API: إضافة فاحص جديد مع إنشاء مستخدم تلقائي
 * POST /api/admin/endpoints/add_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;
}

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // بدء المعاملة
    $pdo->beginTransaction();
    
    // 1. إنشاء مستخدم جديد للفاحص في جدول users
    $userName = $input['full_name'];
    $userEmail = $input['email'] ?? strtolower(str_replace(' ', '.', $userName)) . '@autotester.com';
    $userPhone = $input['phone'];
    $userPassword = password_hash('123456', PASSWORD_DEFAULT); // كلمة مرور افتراضية
    
    // التحقق من وجود جدول users
    $tableCheck = $pdo->query("SHOW TABLES LIKE 'users'")->rowCount();
    
    $userId = null;
    
    if ($tableCheck > 0) {
        // جلب أسماء الأعمدة في جدول users
        $userColumnsQuery = "SHOW COLUMNS FROM users";
        $userColumnsStmt = $pdo->prepare($userColumnsQuery);
        $userColumnsStmt->execute();
        $userColumns = $userColumnsStmt->fetchAll(PDO::FETCH_COLUMN);
        
        // بناء استعلام إدراج مستخدم
        $userInsertFields = [];
        $userPlaceholders = [];
        $userParams = [];
        
        if (in_array('full_name', $userColumns) || in_array('name', $userColumns)) {
            $nameCol = in_array('full_name', $userColumns) ? 'full_name' : 'name';
            $userInsertFields[] = $nameCol;
            $userPlaceholders[] = ":full_name";
            $userParams[':full_name'] = $userName;
        }
        
        if (in_array('email', $userColumns)) {
            $userInsertFields[] = 'email';
            $userPlaceholders[] = ":email";
            $userParams[':email'] = $userEmail;
        }
        
        if (in_array('phone', $userColumns)) {
            $userInsertFields[] = 'phone';
            $userPlaceholders[] = ":phone";
            $userParams[':phone'] = $userPhone;
        }
        
        if (in_array('password', $userColumns)) {
            $userInsertFields[] = 'password';
            $userPlaceholders[] = ":password";
            $userParams[':password'] = $userPassword;
        }
        
        if (in_array('role', $userColumns)) {
            $userInsertFields[] = 'role';
            $userPlaceholders[] = ":role";
            $userParams[':role'] = 'inspector';
        }
        
        if (in_array('status', $userColumns)) {
            $userInsertFields[] = 'status';
            $userPlaceholders[] = ":status";
            $userParams[':status'] = 'active';
        }
        
        if (in_array('created_at', $userColumns)) {
            $userInsertFields[] = 'created_at';
            $userPlaceholders[] = "NOW()";
        }
        
        if (!empty($userInsertFields)) {
            $userQuery = "INSERT INTO users (" . implode(", ", $userInsertFields) . ") 
                          VALUES (" . implode(", ", $userPlaceholders) . ")";
            
            $userStmt = $pdo->prepare($userQuery);
            $userStmt->execute($userParams);
            $userId = $pdo->lastInsertId();
        }
    }
    
    // إذا لم يتم إنشاء مستخدم، نستخدم معرف افتراضي أو NULL
    if (!$userId) {
        $userId = null;
    }
    
    // 2. إضافة الفاحص في جدول inspectors
    // جلب أسماء الأعمدة الموجودة في جدول inspectors
    $inspColumnsQuery = "SHOW COLUMNS FROM inspectors";
    $inspColumnsStmt = $pdo->prepare($inspColumnsQuery);
    $inspColumnsStmt->execute();
    $inspColumns = $inspColumnsStmt->fetchAll(PDO::FETCH_COLUMN);
    
    // بناء استعلام INSERT
    $insertFields = [];
    $placeholders = [];
    $params = [];
    
    // عمود user_id
    if (in_array('user_id', $inspColumns)) {
        $insertFields[] = 'user_id';
        $placeholders[] = ":user_id";
        $params[':user_id'] = $userId;
    }
    
    // أعمدة الاسم
    if (in_array('full_name', $inspColumns)) {
        $insertFields[] = 'full_name';
        $placeholders[] = ":full_name";
        $params[':full_name'] = $input['full_name'];
    } elseif (in_array('name', $inspColumns)) {
        $insertFields[] = 'name';
        $placeholders[] = ":name";
        $params[':name'] = $input['full_name'];
    } elseif (in_array('inspector_name', $inspColumns)) {
        $insertFields[] = 'inspector_name';
        $placeholders[] = ":inspector_name";
        $params[':inspector_name'] = $input['full_name'];
    }
    
    if (in_array('phone', $inspColumns)) {
        $insertFields[] = 'phone';
        $placeholders[] = ":phone";
        $params[':phone'] = $input['phone'];
    }
    
    if (in_array('email', $inspColumns)) {
        $insertFields[] = 'email';
        $placeholders[] = ":email";
        $params[':email'] = $input['email'] ?? null;
    }
    
    if (in_array('specialization', $inspColumns)) {
        $insertFields[] = 'specialization';
        $placeholders[] = ":specialization";
        $params[':specialization'] = $input['specialization'] ?? null;
    }
    
    if (in_array('region', $inspColumns)) {
        $insertFields[] = 'region';
        $placeholders[] = ":region";
        $params[':region'] = $input['region'] ?? null;
    }
    
    if (in_array('experience_years', $inspColumns)) {
        $insertFields[] = 'experience_years';
        $placeholders[] = ":experience_years";
        $params[':experience_years'] = $input['experience_years'] ?? 0;
    }
    
    if (in_array('max_load', $inspColumns)) {
        $insertFields[] = 'max_load';
        $placeholders[] = ":max_load";
        $params[':max_load'] = $input['max_load'] ?? 5;
    }
    
    if (in_array('current_load', $inspColumns)) {
        $insertFields[] = 'current_load';
        $placeholders[] = ":current_load";
        $params[':current_load'] = 0;
    }
    
    if (in_array('status', $inspColumns)) {
        $insertFields[] = 'status';
        $placeholders[] = ":status";
        $params[':status'] = $input['status'] ?? 'available';
    }
    
    if (in_array('rating', $inspColumns)) {
        $insertFields[] = 'rating';
        $placeholders[] = ":rating";
        $params[':rating'] = $input['rating'] ?? 0;
    }
    
    if (in_array('center_id', $inspColumns)) {
        $insertFields[] = 'center_id';
        $placeholders[] = ":center_id";
        $params[':center_id'] = $input['center_id'] ?? null;
    }
    
    if (in_array('created_at', $inspColumns)) {
        $insertFields[] = 'created_at';
        $placeholders[] = "NOW()";
    }
    
    if (empty($insertFields)) {
        throw new Exception('لا توجد أعمدة مناسبة للإدراج في جدول inspectors');
    }
    
    $inspQuery = "INSERT INTO inspectors (" . implode(", ", $insertFields) . ") 
                  VALUES (" . implode(", ", $placeholders) . ")";
    
    $inspStmt = $pdo->prepare($inspQuery);
    $inspStmt->execute($params);
    $inspectorId = $pdo->lastInsertId();
    
    // تأكيد المعاملة
    $pdo->commit();
    
    echo json_encode([
        'success' => true,
        'message' => 'تم إضافة الفاحص بنجاح',
        'id' => $inspectorId,
        'user_id' => $userId,
        'user_created' => ($userId !== null)
    ], 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);
} catch(Exception $e) {
    if (isset($pdo)) {
        $pdo->rollBack();
    }
    echo json_encode([
        'success' => false,
        'message' => $e->getMessage()
    ], JSON_UNESCAPED_UNICODE);
}
?>