<?php
// config/register_config.php - Registration Database Configuration
// ================================================================

// Database credentials
$db_host = 'localhost';
$db_name = 'lms_bd_passara';
$db_user = 'root';
$db_pass = '';

// Create connection
$reg_conn = new mysqli($db_host, $db_user, $db_pass, $db_name);

// Check connection
if ($reg_conn->connect_error) {
    die("Registration database connection failed: " . $reg_conn->connect_error);
}

// Set charset
$reg_conn->set_charset("utf8mb4");

// Function to check if student exists
function studentExists($reg_conn, $admission_number) {
    $stmt = $reg_conn->prepare("SELECT id, full_name, status FROM students WHERE admission_number = ?");
    $stmt->bind_param("s", $admission_number);
    $stmt->execute();
    $result = $stmt->get_result();
    return $result->fetch_assoc();
}

// Function to check if teacher exists
function teacherExists($reg_conn, $email) {
    $stmt = $reg_conn->prepare("SELECT id, full_name, status FROM teachers WHERE email = ?");
    $stmt->bind_param("s", $email);
    $stmt->execute();
    $result = $stmt->get_result();
    return $result->fetch_assoc();
}

// Function to check if user already has login account
function userExists($reg_conn, $username, $user_type) {
    $stmt = $reg_conn->prepare("SELECT id FROM users WHERE username = ? AND user_type = ?");
    $stmt->bind_param("ss", $username, $user_type);
    $stmt->execute();
    $result = $stmt->get_result();
    return $result->num_rows > 0;
}

// Function to register a student
function registerStudent($reg_conn, $admission_number, $full_name, $password) {
    // Check if student exists
    $student = studentExists($reg_conn, $admission_number);
    if (!$student) {
        return ['success' => false, 'message' => 'Admission number not found. Please contact administrator.'];
    }
    
    if ($student['status'] !== 'active') {
        return ['success' => false, 'message' => 'Student account is disabled. Please contact administrator.'];
    }
    
    // Check if already registered
    if (userExists($reg_conn, $admission_number, 'student')) {
        return ['success' => false, 'message' => 'Student already has a login account. Please login.'];
    }
    
    // Hash password
    $hashed_password = password_hash($password, PASSWORD_DEFAULT);
    
    // Insert user
    $stmt = $reg_conn->prepare("INSERT INTO users (username, password, user_type, full_name, admission_number, reference_id, status) VALUES (?, ?, 'student', ?, ?, ?, 'active')");
    $stmt->bind_param("ssssi", $admission_number, $hashed_password, $student['full_name'], $admission_number, $student['id']);
    
    if ($stmt->execute()) {
        return ['success' => true, 'message' => 'Student registration successful! Please login.', 'username' => $admission_number];
    } else {
        return ['success' => false, 'message' => 'Registration failed: ' . $stmt->error];
    }
}

// Function to register a teacher
function registerTeacher($reg_conn, $email, $full_name, $password) {
    // Check if teacher exists
    $teacher = teacherExists($reg_conn, $email);
    if (!$teacher) {
        return ['success' => false, 'message' => 'Email not found in teacher records. Please contact administrator.'];
    }
    
    if ($teacher['status'] !== 'active') {
        return ['success' => false, 'message' => 'Teacher account is disabled. Please contact administrator.'];
    }
    
    // Check if already registered
    if (userExists($reg_conn, $email, 'teacher')) {
        return ['success' => false, 'message' => 'Teacher already has a login account. Please login.'];
    }
    
    // Hash password
    $hashed_password = password_hash($password, PASSWORD_DEFAULT);
    
    // Insert user
    $stmt = $reg_conn->prepare("INSERT INTO users (username, email, password, user_type, full_name, reference_id, status) VALUES (?, ?, ?, 'teacher', ?, ?, 'active')");
    $stmt->bind_param("ssssi", $email, $email, $hashed_password, $teacher['full_name'], $teacher['id']);
    
    if ($stmt->execute()) {
        return ['success' => true, 'message' => 'Teacher registration successful! Please login.', 'username' => $email];
    } else {
        return ['success' => false, 'message' => 'Registration failed: ' . $stmt->error];
    }
}

// Function to get all students (for debugging)
function getAllStudents($reg_conn) {
    $result = $reg_conn->query("SELECT admission_number, full_name, status FROM students ORDER BY admission_number");
    $students = [];
    while ($row = $result->fetch_assoc()) {
        $students[] = $row;
    }
    return $students;
}

// Function to get all teachers (for debugging)
function getAllTeachers($reg_conn) {
    $result = $reg_conn->query("SELECT email, full_name, status FROM teachers ORDER BY id");
    $teachers = [];
    while ($row = $result->fetch_assoc()) {
        $teachers[] = $row;
    }
    return $teachers;
}
?>