from flask import Blueprint, render_template, request, jsonify
from flask_login import login_required 
from src.services.stats_service import StatsService 

stats_bp = Blueprint('stats', __name__, template_folder='../templates')

@stats_bp.route('/stats')
@login_required
def statistics_page_route():
    """
    Renderiza a página de estatísticas com dados para o período selecionado.
    """
    period = request.args.get('period', default=7, type=int)
    stats_data, error = StatsService.get_dashboard_stats(period_days=period)

    if error:
        print(f"Erro ao buscar dados de estatísticas para a página /stats: {error}")
        empty_stats = {
            "total_conversations": 0, "total_messages": 0, "avg_response_time": 0.0,
            "total_tokens": 0, "model_usage": {}, "activity_data": {}, "period_days": period
        }
        return render_template('stats.html', stats=empty_stats, error_message=error, selected_period=period)
        
    return render_template('stats.html', stats=stats_data, selected_period=period)

@stats_bp.route('/api/stats_data')
@login_required
def api_get_stats_data_route():
    """
    Endpoint da API para buscar dados de estatísticas dinamicamente (para JS).
    """
    period = request.args.get('period', default=7, type=int)
    stats_data, error = StatsService.get_dashboard_stats(period_days=period)

    if error:
        return jsonify({"error": "Falha ao buscar dados de estatísticas.", "details": error}), 500
    
    return jsonify(stats_data)