<?php
require('conexion.php'); // Incluye la conexión a la base de datos
require('password.php');

// Función para manejar errores de MySQL y mostrar mensajes personalizados
function handle_sql_error($error, $error_message) {
    switch ($error) {
        case 1062:
            if (strpos($error_message, 'for key \'documento\'') !== false) {
                $message = "El documento ya está registrado.";
            } else if (strpos($error_message, 'for key \'correo\'') !== false) {
                $message = "El correo electrónico ya está registrado.";
            } else {
                $message = "Registro duplicado.";
            }
            break;
        case 1048:
            if (strpos($error_message, '\'usuario_id\'') !== false) {
                $message = "Ocurrió un error al crear el usuario. Inténtelo de nuevo más tarde.";
            } else {
                $message = "Todos los campos son obligatorios.";
            }
            break;
        default:
            $message = "Ocurrió un error inesperado. Por favor, inténtelo de nuevo.";
            break;
    }
    return $message;
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $tipo_documento = $conn->real_escape_string($_POST['tipo_documento']);
    $documento = $conn->real_escape_string($_POST['documento']);
    $nombres = $conn->real_escape_string($_POST['nombres']);
    $apellidos = $conn->real_escape_string($_POST['apellidos']);
    $fecha_nacimiento = $conn->real_escape_string($_POST['fecha_nacimiento']);
    $correo = $conn->real_escape_string($_POST['correo']);
    $genero = $conn->real_escape_string($_POST['genero']);
    $contraseña = $conn->real_escape_string($_POST['contraseña']);
    $contraseñaHasheada = password_hash($contraseña, PASSWORD_DEFAULT);
    $tipo_usuario = $conn->real_escape_string($_POST['tipoUsuario']);
    $direccion = $conn->real_escape_string($_POST['direccion']);
    $ciudad = $conn->real_escape_string($_POST['ciudad']);
    $departamento = $conn->real_escape_string($_POST['departamento']);
    $telefono = $conn->real_escape_string($_POST['celular']);
    $eps = $conn->real_escape_string($_POST['eps']);
    $grupo_sanguineo = $conn->real_escape_string($_POST['grupo_sanguineo']);
    $diagnostico = $conn->real_escape_string($_POST['diagnostico']);
    $tratamiento_actual = $conn->real_escape_string($_POST['tratamiento']);
    $especialidad = $conn->real_escape_string($_POST['especialidad']);
    $experiencia = $conn->real_escape_string($_POST['experiencia']);

    // Verificar si el documento ya existe
    $query_check = "SELECT documento FROM usuarios WHERE documento = ?";
    $stmt_check = $conn->prepare($query_check);
    $stmt_check->bind_param("s", $documento);
    $stmt_check->execute();
    $stmt_check->store_result();

    if ($stmt_check->num_rows > 0) {
        // El documento ya está registrado
        echo "<script>alert('Error: El documento ya esta registrado.'); window.history.back();</script>";
    } else {
        // Si no está registrado, insertar el nuevo usuario
        $sql = "INSERT INTO usuarios(tipo_documento, documento, nombres, apellidos, fecha_nacimiento, correo, genero, contraseña, tipo_usuario, direccion, ciudad, departamento, telefono) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param("sssssssssssss", $tipo_documento, $documento, $nombres, $apellidos, $fecha_nacimiento, $correo, $genero, $contraseñaHasheada, $tipo_usuario, $direccion, $ciudad, $departamento, $telefono);

        if ($stmt->execute()) {
            echo "<script>alert('Registro exitoso.');</script>";
            $usuario_id = $conn->insert_id;

            if ($tipo_usuario === "Paciente") {
                $sql_paciente = "INSERT INTO pacientes(usuario_id, eps, grupo_sanguineo, diagnostico, tratamiento_actual) VALUES (?, ?, ?, ?, ?)";
                $stmt_paciente = $conn->prepare($sql_paciente);
                $stmt_paciente->bind_param("issss", $usuario_id, $eps, $grupo_sanguineo, $diagnostico, $tratamiento_actual);

                if ($stmt_paciente->execute()) {
                    echo "<script>alert('Registro exitoso de Paciente.'); window.location.href='login.php';</script>";
                    
                }
                $stmt_paciente->close();
            } else {
                $sql_especialista = "INSERT INTO especialistas(usuario_id, especialidad, experiencia) VALUES (?, ?, ?)";
                $stmt_especialista = $conn->prepare($sql_especialista);
                $stmt_especialista->bind_param("iss", $usuario_id, $especialidad, $experiencia);

                if ($stmt_especialista->execute()) {
                    echo "<script>alert('Registro exitoso de Especialista.'); window.location.href='login.php';</script>";
                }
                $stmt_especialista->close();
            }
        } else {
            $error = htmlspecialchars($stmt->error, ENT_QUOTES, 'UTF-8');
            echo "<script>alert('Error: $error'); window.history.back();</script>";
        }
        $stmt->close();
    }
    $stmt_check->close();
    $conn->close();
} else {
    echo "<script>alert('Todos los campos son obligatorios.'); window.history.back();</script>";
}
?>

