from flask import Flask, jsonify, render_template, request
import pandas as pd
import os
from datetime import datetime

# Configuración
PATH_UBUNTU = "/var/www/html/predictor.backtestingmarket/data"
symbol = "$SPX"

app = Flask(__name__)

def get_available_dates():
    """Obtiene las fechas de los archivos CSV disponibles en /data."""
    files = os.listdir(PATH_UBUNTU)
    dates = []
    for file in files:
        if file.startswith(f"prediction_{symbol}_") and file.endswith(".csv"):
            try:
                date_part = file.split("_")[-1].replace(".csv", "")
                dates.append(date_part)
            except Exception as e:
                print(f"Error procesando archivo {file}: {e}")
    return sorted(dates, reverse=True)  # Ordenar de más reciente a más antiguo

def read_csv(selected_date):
    """Lee los datos del archivo CSV seleccionado."""
    csv_file = f"{PATH_UBUNTU}/prediction_{symbol}_{selected_date}.csv"
    try:
        df = pd.read_csv(csv_file, parse_dates=['timestamp'])
        return df.tail(390).to_dict(orient='records')
    except Exception as e:
        print(f"Error leyendo el CSV: {e}")
        return {'error': str(e)}

@app.route('/get_dates')
def get_dates():
    """Devuelve la lista de fechas disponibles para el combo box."""
    return jsonify(get_available_dates())

@app.route('/data')
def get_data():
    """Devuelve los datos del archivo según la fecha seleccionada."""
    selected_date = request.args.get('date')
    if not selected_date:
        selected_date = datetime.today().strftime('%Y-%m-%d')  # Fecha por defecto
    return jsonify(read_csv(selected_date))

@app.route('/')
def index():
    """Carga la página web."""
    return render_template('index.html')

if __name__ == '__main__':
    app.run(debug=True)
