from app import app
from flask import request, jsonify, session
from controllers.funciones_calendarizacion import actualizar_estado_calendarizacion

@app.route('/actualizar-estado-calendarizacion', methods=['POST'])
def actualizar_estado_calendarizacion_route():
    if 'conectado' not in session:
        return jsonify({'success': False, 'message': 'No autorizado'}), 401

    if session.get('admin') != 1:
        return jsonify({'success': False, 'message': 'Acceso denegado. Solo administradores pueden cambiar el estado.'}), 403

    try:
        data = request.get_json()
        codmodular = data.get('codmodular')
        estado = data.get('estado')
        comentario = data.get('comentario')

        if not codmodular or estado is None:
            return jsonify({'success': False, 'message': 'Datos incompletos'}), 400

        # Validar que el estado sea un número entre 0 y 3
        if not isinstance(estado, int) or estado < 0 or estado > 3:
            return jsonify({'success': False, 'message': 'Estado inválido'}), 400

        # Validar comentario si el estado es 3 (No aprobado)
        if estado == 3 and not comentario:
            return jsonify({'success': False, 'message': 'Comentario requerido para estado No aprobado'}), 400

        # Actualizar el estado en la base de datos
        if actualizar_estado_calendarizacion(codmodular, estado, comentario):
            return jsonify({'success': True, 'message': 'Estado actualizado correctamente'})
        else:
            return jsonify({'success': False, 'message': 'Error al actualizar el estado'}), 500

    except Exception as e:
        print(f"Error al actualizar estado de calendarización: {e}")
        return jsonify({'success': False, 'message': 'Error interno del servidor'}), 500
