<?php 

class ControladorConsulta{

	static public function ctrMostrarListaEspera(){
    $tabla = "triaje";
    $idAreaMedico = $_SESSION["id_area"];
    // El modelo debe traer solo los que NO han sido atendidos por un médico aún
    $respuesta = ModeloConsulta::mdlMostrarListaEspera($tabla,$idAreaMedico);
    return $respuesta;
	}

    static public function ctrMostrarPacienteConsulta($item, $valor) {

        $tabla = "triaje";

        // Llamamos al modelo para obtener el "Súper Join" que preparamos
        $respuesta = ModeloConsulta::mdlMostrarPacienteConsulta($tabla, $item, $valor);

        return $respuesta;
    }


    static public function ctrFinalizarAtencion() {

        if (isset($_POST["nuevaAnamnesis"])) {

            // Validación mínima obligatoria
            if (empty($_POST["nuevoCie10"]) || empty($_POST["nuevoDestino"])) {
                echo '<script>
                    swal({
                        icon: "warning",
                        title: "¡Faltan datos!",
                        text: "El Diagnóstico y el Destino son obligatorios para cerrar la atención.",
                    });
                </script>';
                return;
            }

            // En tu controlador, donde recibes el $_POST
            $medicamentos_detalle = [];

            if(isset($_POST["med_nombre"])) {
                foreach($_POST["med_nombre"] as $i => $nombre) {
                    if(!empty($nombre)) {
                        $medicamentos_detalle[] = [
                            "nombre"        => $_POST["med_nombre"][$i],
                            "concentracion" => $_POST["med_conc"][$i],
                            "cantidad"      => $_POST["med_cant"][$i],
                            "dosis"         => $_POST["med_dosis"][$i],
                            "via"           => $_POST["med_via"][$i],
                            "frecuencia"    => $_POST["med_frec"][$i],
                            "duracion"      => $_POST["med_duracion"][$i]
                        ];
                    }
                }
            }

                        // --- PROCESAMIENTO DE ANTECEDENTES ---
            $antecedentesFinales = "";

            // 1. Recogemos los checkboxes (si hay alguno seleccionado)
            if (isset($_POST["antecedentes_seleccionados"])) {
                $antecedentesFinales = "Marcados: " . implode(", ", $_POST["antecedentes_seleccionados"]) . ". ";
            }

            // 2. Agregamos lo que se escribió en el textarea de detalles adicionales
            if (!empty($_POST["nuevosAntecedentes"])) {
                $antecedentesFinales .= "Adicional: " . $_POST["nuevosAntecedentes"];
            }

            // Guardamos en el array que va al modelo
            $datos["antecedentes"] = $antecedentesFinales;
            $datos["funciones_biologicas"] = $_POST["nuevasFuncionesBio"];

            // Convertimos a JSON para guardarlo
            $datos["medicamentos"] = json_encode($medicamentos_detalle);

            // Recolectamos datos de la vista
            $datos = array(
                "id_ingreso"    => $_POST["idIngresoAtencion"],
                "id_medico"     => $_SESSION["id"],
                "anamnesis"     => $_POST["nuevaAnamnesis"],
                "examen_fisico" => $_POST["nuevoExamenFisico"],
                "cie10"         => $_POST["nuevoCie10"],
                "tratamiento"   => $datos["medicamentos"],
                "procedimientos" => $_POST["nuevoProcedimiento"], 
                "indicaciones"  => $_POST["nuevasIndicaciones"],
                "antecedentes" => $datos["antecedentes"],
                "funciones_biologicas" => $datos["funciones_biologicas"],
                "destino"       => $_POST["nuevoDestino"] 
            );

            $respuesta = ModeloConsulta::mdlRegistroMedicoCompleto($datos);

            if ($respuesta == "ok") {

                /* =============================================
                [RF05] LÓGICA DE DIGITALIZACIÓN DE DOCUMENTOS
                ============================================= */
                if (isset($_FILES["archivoClinico"]) && $_FILES["archivoClinico"]["tmp_name"] != "") {

                    // Definir carpeta por Paciente (usando el ID que ya tienes en el hidden)
                    $directorio = "vistas/archivos/pacientes/".$_POST["idPacienteAtencion"];
                    
                    if (!file_exists($directorio)) {
                        mkdir($directorio, 0755, true);
                    }

                    $extension = pathinfo($_FILES["archivoClinico"]["name"], PATHINFO_EXTENSION);
                    $nombreLimpio = "DOC_ING_".$datos["id_ingreso"]."_".mt_rand(10, 99);
                    $rutaDestino = $directorio."/".$nombreLimpio.".".$extension;

                    if (move_uploaded_file($_FILES["archivoClinico"]["tmp_name"], $rutaDestino)) {
                        
                            $datosDoc = array(
                                "id_paciente" => $_POST["idPacienteAtencion"],
                                "id_ingreso"  => $datos["id_ingreso"],
                                "tipo_documento"        => $_POST["tipoDocumentoClinico"],
                                "ruta_archivo"        => $rutaDestino,
                                "id_usuario"  => $_SESSION["id"]
                            );

                            // Guardamos en la tabla de documentos
                            ModeloPaciente::mdlGuardarDocumento1("documento", $datosDoc);
                    }
                }

                /* =============================================
                RF03: REGISTRO DE AUDITORÍA (Acción Crítica)
                ============================================= */
                $moduloAuditoria = "Consulta Médica";
                $accionAuditoria = "CREAR";
                $descAuditoria = "Se finalizó la atención médica del ingreso #" . $datos["id_ingreso"] . " con diagnóstico CIE-10: " . $datos["cie10"] . " y destino: " . $datos["destino"];

                ControladorAuditoria::ctrRegistrarAuditoria($moduloAuditoria, $accionAuditoria, $descAuditoria);
                
                $msg = ($datos["destino"] == "alta") ? "Paciente dado de ALTA MÉDICA" : "Paciente enviado a OBSERVACIÓN";
                
               echo '<script>
                swal({
                    icon: "success",
                    title: "Registro Exitoso",
                    text: "'.$msg.'\n\n¿Desea imprimir la receta médica ahora?",
                    showCancelButton: true,
                    confirmButtonColor: "#3085d6",
                    cancelButtonColor: "#d33",
                    confirmButtonText: "Sí, Imprimir",
                    cancelButtonText: "No, cerrar"
                }).then(function(result){
                    // result.value es true si el usuario presiona "Sí, Imprimir"
                    if(result.value){
                        
                        // 1. Abrimos la receta en una pestaña nueva
                        window.open("extenciones/TCPDF/pdf/receta.php?idIngreso='.$_POST["idIngresoAtencion"].'", "_blank");
                        
                        // 2. Redireccionamos la pestaña actual
                        window.location = "consulta-medica";

                    } else {
                        // Si presiona "No, cerrar" solo redireccionamos
                        window.location = "consulta-medica";
                    }
                });
            </script>';
            }
        }
    }

        static public function ctrMostrarHistorialPaciente($idPaciente) {
    
        $respuesta = ModeloConsulta::mdlMostrarHistorialPaciente($idPaciente);
        return $respuesta;
    }

    static public function ctrMostrarPacientesObservacion() {
        // Estado 'observacion' que definimos en el ENUM
        $respuesta = ModeloConsulta::mdlMostrarPacientesPorEstado("observacion");
        return $respuesta;
    }

    static public function ctrCrearEvolucion() {
    if (isset($_POST["nuevaNotaEvolucion"])) {
        
            $datos = array(
                "id_ingreso" => $_POST["idIngresoEvolucion"],
                "nota"       => $_POST["nuevaNotaEvolucion"],
                "id_usuario" => $_SESSION["id"]
            );

            $respuesta = ModeloConsulta::mdlIngresarEvolucion($datos);

            if ($respuesta == "ok") {
                echo '<script>
                    swal({
                        icon: "success",
                        title: "Evolución guardada",
                        text: "La nota se ha registrado correctamente.",
                        showConfirmButton: true
                    }).then(function(result){
                        window.location = "consulta-medica";
                    });
                </script>';
            }
        }
    }

        static public function ctrFinalizarObservacion() {
            if (isset($_POST["idIngresoEgreso"])) {
            
                    $datos = array(
                        "id_ingreso" => $_POST["idIngresoEgreso"],
                        "estado"     => $_POST["estadoEgresoFinal"],
                        "nota"       => $_POST["notaEgreso"],
                        "id_usuario" => $_SESSION["id"]
                    );

                    $respuesta = ModeloConsulta::mdlFinalizarObservacion($datos);

                    if ($respuesta == "ok") {
                        echo '<script>
                            swal({
                                icon: "success",
                                title: "Egreso Registrado",
                                text: "El paciente ha salido de observación correctamente.",
                            }).then(function(result){
                                window.location = "consulta-medica";
                            });
                        </script>';
                    }
                }
            }

            static public function ctrMostrarHistorialPaciente1($item, $valor){

            $respuesta = ModeloConsulta::mdlMostrarHistorialPaciente1($item, $valor);

            return $respuesta;

    }

            static public function ctrAnularConsulta($id){

            
            // 1. Mandamos a actualizar el estado a 0
            $respuesta = ModeloConsulta::mdlAnularConsulta($id);

            if($respuesta == "ok"){
                // 2. REGISTRAMOS EN TU TABLA DE AUDITORÍA (RF03)
                $modulo = "Consulta Médica";
                $accion = "ANULAR";
                $descripcion = "El usuario anuló la atención médica vinculada al ingreso #" . $id;
                
                ControladorAuditoria::ctrRegistrarAuditoria($modulo, $accion, $descripcion);
                
                return "ok";
            }
        }

        public function ctrEditarAtencion(){

            if(isset($_POST["editarAnamnesis"])){

                $datos = array(
                    "id_ingreso"    => $_POST["idIngresoEditar"],
                    "anamnesis"     => $_POST["editarAnamnesis"],
                    "examen_fisico" => $_POST["editarExamenFisico"],
                    "tratamiento"   => $_POST["editarTratamiento"],
                    "cie10"         => $_POST["editarCie10"],
                    "destino"       => $_POST["editarDestino"]
                );

                $respuesta = ModeloConsulta::mdlEditarAtencion("consultamedica", $datos);

                if($respuesta == "ok"){

                    // AUDITORIA DE EDICIÓN
                    ControladorAuditoria::ctrRegistrarAuditoria("Consulta Médica", "EDITAR", "Se modificó la atención del ingreso #" . $datos["id_ingreso"]);

                    echo '<script>
                        swal({
                            icon: "success",
                            title: "Atención Actualizada",
                            text: "Los cambios se guardaron correctamente.",
                            showConfirmButton: true,
                            confirmButtonText: "Cerrar"
                        }).then(function(result){
                            if(result.value){
                                window.location = "reportes"; // O la vista donde estés
                            }
                        });
                    </script>';
                }
            }
        }

        static public function ctrMostrarConsultaUnica($item, $valor){
            $tabla = "consultamedica";
            $respuesta = ModeloConsulta::mdlMostrarConsultaUnica($tabla, $item, $valor);
            return $respuesta;
        }

        static public function ctrMostrarEstadisticasInicio() {

            /*=============================================
            SOLICITUD DE DATOS AL MODELO
            =============================================*/
            $respuesta = ModeloConsulta::mdlMostrarEstadisticasInicio();

            if(!$respuesta){
                return array(
                    "atenciones_hoy" => 0,
                    "pendientes" => 0,
                    "observacion" => 0
                );
            }

            return $respuesta;

        }




}