from flask import Flask, render_template, jsonify, Response from conexion import get_connection from dotenv import load_dotenv import os load_dotenv() ip = os.getenv("IPSERVER") puerto = os.getenv("PORT") modo = os.getenv("MODE", "1") monitor1 = os.getenv("MONITOR_ID_1") monitor2 = os.getenv("MONITOR_ID_2") tema = os.getenv("THEME", "csm") tema_styles = { "csm": { "bg1":"#114b94", "bg2":"#0a6eb2" }, "imq": { "bg1":"#CC0C00", "bg2":"#e6392d" } } app = Flask(__name__) def obtener_turnos(mon_id): conn = get_connection() if not conn: return [] try: cursor = conn.cursor() cursor.execute("SELECT CONS_ESTAD.CODIGO_IMPRESION CONSULTA, CONS_ESTAD.ESTADO_ID ESTADO_CONSULTA, TM.CODIGO_TURNO TURNO, TM.ESTADO_ID ESTADO_TURNO FROM CSMK_TURNO_MON TM, (SELECT ROW_NUMBER() OVER (PARTITION BY ESTADO.ESTANCIA_ID ORDER BY CONSULTA_ESTADO_ID DESC) AS RN, ESTADO.ESTADO_ID, ESTANCIA.* FROM CSMK_CONSULTA_ESTADO ESTADO, CSMK_ESTANCIA ESTANCIA WHERE ESTADO.FECHA = TRUNC (SYSDATE) AND ESTADO.ESTANCIA_ID = ESTANCIA.ESTANCIA_ID AND ESTANCIA.MONITOR_ID = :monitor ORDER BY ESTADO.CONSULTA_ESTADO_ID DESC) CONS_ESTAD WHERE CONS_ESTAD.RN = 1 AND TM.ESTANCIA_ID = CONS_ESTAD.ESTANCIA_ID AND TM.MONITOR_ID = CONS_ESTAD.MONITOR_ID AND TM.ESTADO_ID IN (1,2) AND TM.FECHA = TRUNC(SYSDATE) ORDER BY CONSULTA ASC",{'monitor':mon_id}) datos = cursor.fetchall() cursor.close() conn.close() return datos except Exception as e: print(f"Error al conectar: {e}") return None def obtener_pie(mon_id1, mon_id2): conn = get_connection() if not conn: return [] try: cursor = conn.cursor() if modo == "2": cursor.execute("SELECT MENSAJE FROM CSMK_MONITOR_PIE WHERE MONITOR_ID IN (:monitor, :monitor2) AND INACTIVO = 0 ORDER BY MONITOR_ID, MONITOR_PIE_ID ASC",{'monitor':mon_id1, 'monitor2':mon_id2}) else: cursor.execute("SELECT MENSAJE FROM CSMK_MONITOR_PIE WHERE MONITOR_ID IN (:monitor) AND INACTIVO = 0 ORDER BY MONITOR_ID, MONITOR_PIE_ID ASC",{'monitor':mon_id1}) mensajes = [fila[0] for fila in cursor.fetchall()] mensaje_final = "       ".join(mensajes) cursor.close() conn.close() return mensaje_final except Exception as e: print(f"Error al conectar: {e}") return None @app.route('/') def index(): tema_colores = tema_styles.get(tema, tema_styles["csm"]) return render_template("index.html", mode=modo, theme=tema, theme_colors=tema_colores) @app.route('/api/datos1') def api_datos1(): filas = obtener_turnos(monitor1) return jsonify(filas) @app.route('/api/datos2') def api_datos2(): filas = obtener_turnos(monitor2) return jsonify(filas) @app.route('/api/footer') def api_pie(): mensaje = obtener_pie(monitor1, monitor2) return Response(mensaje, mimetype='text/plain') if __name__ == '__main__': app.run(debug=True,host=ip, port=puerto)