import os
#from flask import Blueprint, render_template, request, jsonify
from flask import Blueprint, render_template, request, jsonify, current_app
from flask_login import login_required, current_user
from app.models.teacher import Teacher
from app.models.course import Course
from app.models.announcement import Announcement
from app.models.user import User
#main_bp = Blueprint('main', __name__)
#main_bp = Blueprint('main', __name__, name='main_bp')
main_bp = Blueprint('main', __name__)
@main_bp.route('/')
def index():
    """首页"""
    # 获取推荐老师
    featured_teachers = Teacher.query.filter_by(
        is_verified=True, 
        is_featured=True
    ).limit(6).all()
    
    # 获取热门课程
    popular_courses = Course.query.filter_by(
        is_available=True
    ).order_by(Course.total_enrollments.desc()).limit(8).all()
    
    # 获取系统公告
    announcements = Announcement.query.filter_by(
        is_published=True
    ).order_by(Announcement.is_pinned.desc(), Announcement.publish_at.desc()).limit(5).all()
    
    return render_template('index.html',
                         featured_teachers=featured_teachers,
                         popular_courses=popular_courses,
                         announcements=announcements)

@main_bp.route('/teachers')
def teachers():
    # 获取 data 目录路径
    data_dir = os.path.join(current_app.root_path, 'static', 'teacher', 'data')
    
    # 获取所有 .txt 文件（教师简介）
    try:
        txt_files = [f for f in os.listdir(data_dir) if f.endswith('.txt')]
    except FileNotFoundError:
        current_app.logger.warning("教师数据目录不存在: %s", data_dir)
        txt_files = []

    teacher_list = []

    for txt_file in txt_files:
        name = txt_file[:-4]  # 去掉 .txt 后缀
        pic_file = name + '.jpg'
        mp4_file = name + '.mp4'

        # 检查照片和视频是否存在
        has_pic = os.path.exists(os.path.join(data_dir, pic_file))
        has_video = os.path.exists(os.path.join(data_dir, mp4_file))

        # 读取简介内容
        bio = "暂无简介"
        bio_path = os.path.join(data_dir, txt_file)
        try:
            with open(bio_path, 'r', encoding='utf-8') as f:
                bio = f.read().strip()
                if not bio:
                    bio = "该教师暂无详细简介。"
        except Exception as e:
            current_app.logger.error(f"读取简介文件失败 {txt_file}: {e}")
            bio = "简介读取失败。"

        teacher_list.append({
            'name': name,
            'bio': bio,
            'has_pic': has_pic,
            'pic_filename': pic_file,
            'has_video': has_video,
            'video_filename': mp4_file
        })

    return render_template('teacher/list.html', teachers=teacher_list)

@main_bp.route('/teacher/<int:teacher_id>')
def teacher_detail(teacher_id):
    """老师详情页"""
    teacher = Teacher.query.get_or_404(teacher_id)
    courses = Course.query.filter_by(teacher_id=teacher_id, is_available=True).all()
    
    return render_template('teachers/detail.html', 
                         teacher=teacher, 
                         courses=courses)

@main_bp.route('/courses')
def courses():
    """课程列表页"""
    page = request.args.get('page', 1, type=int)
    per_page = 12
    
    # 筛选条件
    course_type = request.args.get('type')
    level = request.args.get('level')
    category = request.args.get('category')
    
    query = Course.query.filter_by(is_available=True)
    
    if course_type:
        query = query.filter(Course.course_type == course_type)
    if level:
        query = query.filter(Course.level == level)
    if category:
        query = query.filter(Course.category == category)
    
    courses = query.order_by(Course.total_enrollments.desc()).paginate(
        page=page, per_page=per_page, error_out=False
    )
    
    return render_template('course/list.html', courses=courses)

@main_bp.route('/about')
def about():
    """关于我们"""
    return render_template('about.html')

@main_bp.route('/contact')
def contact():
    """联系我们"""
    return render_template('contact.html')
