from app import app
from flask import render_template, request, flash, redirect, url_for, session, jsonify
import datetime

# Importar funciones de calendarización
from controllers.funciones_calendarizacion import obtener_calendarizacion_iiee, obtener_informacion_iiee, generar_calendarizacion_predeterminada


@app.route('/calendarizacion/<string:codmodular>', methods=['GET'])
def calendarizacion_iiee(codmodular):
    if 'conectado' in session:
        # Obtener información de la IIEE
        info_iiee = obtener_informacion_iiee(codmodular)
        if not info_iiee:
            flash('La institución educativa no existe.', 'error')
            return redirect(url_for('lista_ie'))

        # Obtener calendarización existente o generar una nueva
        anio_actual = datetime.datetime.now().year
        calendarizacion = obtener_calendarizacion_iiee(codmodular, anio_actual)

        # Si no hay calendarización, generar una predeterminada
        if not calendarizacion:
            if generar_calendarizacion_predeterminada(codmodular, anio_actual):
                calendarizacion = obtener_calendarizacion_iiee(codmodular, anio_actual)
                flash('Se ha generado una calendarización predeterminada para el año actual.', 'info')

        # Verificar si el usuario es admin
        is_admin = session.get('admin') == 1

        return render_template('public/colegios/calendarizacion_iiee.html',
                             info_iiee=info_iiee,
                             calendarizacion=calendarizacion,
                             codmodular=codmodular,
                             anio_actual=anio_actual,
                             is_admin=is_admin)
    else:
        flash('Primero debes iniciar sesión.', 'error')
        return redirect(url_for('inicio'))

@app.route('/obtener-calendarizacion', methods=['GET'])
def obtener_calendarizacion():
    if 'conectado' not in session:
        return jsonify({'success': False, 'message': 'No autorizado'}), 401

    codmodular = request.args.get('codmodular')
    anio = request.args.get('anio')

    if not codmodular or not anio:
        return jsonify({'success': False, 'message': 'Datos incompletos'}), 400

    try:
        calendarizacion = obtener_calendarizacion_iiee(codmodular, int(anio))
        # LOG para depuración: imprime los días devueltos por la BD
        mes_count = {}
        for row in calendarizacion:
            mes = row.get('mes')
            mes_count[mes] = mes_count.get(mes, 0) + 1
        mes_list = sorted(mes_count.keys())
        print(f"[DEBUG] Calendarización {codmodular}/{anio}: {len(calendarizacion)} días total, meses: {mes_list}, counts: {mes_count}")
        if codmodular == '0891556':
            print(f"[URGENTE] DATA 0891556: {len(calendarizacion)} días, meses {mes_list}")

        # Si quieres ver el detalle, descomenta la siguiente línea:
        # print(calendarizacion)
        return jsonify({'success': True, 'cambios': calendarizacion, 'debug': {'total_dias': len(calendarizacion), 'meses': sorted(set(row['mes'] for row in calendarizacion))}})
    except Exception as e:
        print(f"Error al obtener calendarización: {e}")
        return jsonify({'success': False, 'message': 'Error interno del servidor'}), 500
