<?php 
require_once "../controladores/consulta.controlador.php";
require_once "../modelos/consulta.modelo.php";
require_once "../controladores/auditoria.controlador.php";
require_once "../modelos/auditoria.modelo.php";


session_start();

class AjaxConsulta {
    public $idTriaje;

    public function ajaxTraerDatosPaciente() {
        $item = "id_triaje";
        $valor = $this->idTriaje;
        
        // Llamamos a un método que haga el JOIN de paciente, ingreso, triaje y signos
        $respuesta = ControladorConsulta::ctrMostrarPacienteConsulta($item, $valor);
       
        // --- RF03: REGISTRO DE AUDITORÍA (Visualización de datos de triaje) ---
        if($respuesta){
            $descripcion = "El usuario visualizó los datos de triaje del paciente: " . $respuesta["nombres"] . " " . $respuesta["apellidos"];
            ControladorAuditoria::ctrRegistrarAuditoria("Consulta Médica", "VISUALIZAR", $descripcion);
        }

        echo json_encode($respuesta);
    }

    public $idPacienteHistorial;

    public function ajaxMostrarHistorial(){
        $idPaciente = $this->idPacienteHistorial;
        $respuesta = ControladorConsulta::ctrMostrarHistorialPaciente($idPaciente);
        
        if($respuesta != null && count($respuesta) > 0){

            foreach ($respuesta as $key => $value) {
                
                $adjuntosArray = array();

                // Si el SQL trajo adjuntos (usando GROUP_CONCAT como planeamos)
                if (isset($value["adjuntos_raw"]) && !empty($value["adjuntos_raw"])) {
                    
                    $documentos = explode("||", $value["adjuntos_raw"]);
                    
                    foreach ($documentos as $doc) {
                        $partes = explode(":", $doc);
                        // Evitamos errores si el string no viene bien formado
                        if(count($partes) == 2){
                            $adjuntosArray[] = array(
                                "tipo" => $partes[0],
                                "ruta" => $partes[1]
                            );
                        }
                    }
                }

                // Sobreescribimos o añadimos el campo adjuntos ya como array de PHP
                $respuesta[$key]["adjuntos"] = $adjuntosArray;
            }
        }
        // --- RF03: REGISTRO DE AUDITORÍA (Visualización de Historia Clínica) ---
        // Buscamos el nombre del paciente en la respuesta para el log si es posible
        $nombrePaciente = (isset($respuesta[0]["paciente"])) ? $respuesta[0]["paciente"] : "ID: ".$idPaciente;
        
        $descripcion = "El usuario visualizó el historial clínico completo del paciente: " . $nombrePaciente;
        ControladorAuditoria::ctrRegistrarAuditoria("Historia Clínica", "VISUALIZAR", $descripcion);

        if(ob_get_length()) ob_clean();
        echo json_encode($respuesta);
    }

    // Y dentro de la clase AjaxConsulta agrega el método:
    public $idAnular;
    public function ajaxAnularConsulta(){
        $valor = $this->idAnular;
        // Llamamos al controlador que hará el cambio de estado y el log de auditoría
        $respuesta = ControladorConsulta::ctrAnularConsulta($valor);
        echo $respuesta;
    }

    public $idIngresoConsulta;

    public function ajaxTraerConsultaParaEditar(){
        
        $item = "id_ingreso";
        $valor = $this->idIngresoConsulta;

        // Reutilizamos o creamos un método en el controlador que busque una sola fila
        $respuesta = ControladorConsulta::ctrMostrarConsultaUnica($item, $valor);

        echo json_encode($respuesta);
    }
}

if(isset($_POST["idTriaje"])){
    $consulta = new AjaxConsulta();
    $consulta -> idTriaje = $_POST["idTriaje"];
    $consulta -> ajaxTraerDatosPaciente();
}

if(isset($_POST["idPacienteHistorial"])){
    $historial = new AjaxConsulta();
    $historial -> idPacienteHistorial = $_POST["idPacienteHistorial"];
    $historial -> ajaxMostrarHistorial();
}

if(isset($_POST["idAnular"])){
    $anular = new AjaxConsulta();
    $anular -> idAnular = $_POST["idAnular"];
    $anular -> ajaxAnularConsulta();
}

/*=============================================
BUSCAR DATOS DE UNA CONSULTA ESPECÍFICA PARA EDITAR
=============================================*/
if(isset($_POST["idIngresoConsulta"])){
    $editarC = new AjaxConsulta();
    $editarC -> idIngresoConsulta = $_POST["idIngresoConsulta"];
    $editarC -> ajaxTraerConsultaParaEditar();
}

