from app import app
from flask import send_file, session, flash, redirect, url_for, request, abort
from controllers.funciones_profesores import sql_doc_profesoresBD
import os

@app.route('/ver-documento-profesor/<int:iddoc>', methods=['GET'])
def ver_documento_profesor(iddoc):
    if 'conectado' not in session:
        flash('Primero debes iniciar sesión.', 'error')
        return redirect(url_for('inicio'))
    
    if session.get('admin') != 1:
        flash('Acceso denegado. Solo administradores.', 'error')
        return redirect(url_for('admin_dashboard'))
    
    # Obtener info del documento (necesita dniprof para verificar)
    # Para simplicidad, buscar primer profesor con ese doc o validar ownership
    try:
        # Query para obtener archivo y verificar existe
        with connectionBD() as conn:
            with conn.cursor(dictionary=True) as cursor:
                cursor.execute("""
                    SELECT d.archivo, d.dniprof, p.codmodular 
                    FROM tbl_docprof d 
                    JOIN profesor p ON d.dniprof = p.dniprof 
                    WHERE d.iddoc = %s LIMIT 1
                """, (iddoc,))
                doc_info = cursor.fetchone()
        
        if not doc_info:
            flash('Documento no encontrado.', 'error')
            return redirect(url_for('admin_dashboard'))
        
        file_path = os.path.join('static/docprof', doc_info['archivo'])
        
        if not os.path.exists(file_path):
            flash('Archivo físico no encontrado.', 'error')
            return redirect(url_for('admin_dashboard'))
        
        # Send as inline preview (not download)
        return send_file(file_path, as_attachment=False)
        
    except Exception as e:
        print(f"Error en ver_documento_profesor: {e}")
        flash('Error al visualizar documento.', 'error')
        return redirect(url_for('admin_dashboard'))

