from flask import Blueprint
from src.utils.decorators import handle_exceptions, token_required
from src.controller.teachers import (
    login_func,
    auto_ass_func,
    send_ass_func,
    overview_func,
    remedial_func,
    sub_concept_func,
    concept_func,
    concept_overview_func,
    download_func,
    replace_question_func,
    delete_question_func,
    verify_assessment_func
)

teachers_bp = Blueprint('teachers', __name__)


@teachers_bp.route("/teacher-login", methods=['POST'])
@handle_exceptions
def login():
    return login_func()


@teachers_bp.route("/auto-generate-assignment", methods=['POST'])
@handle_exceptions
@token_required(role="teacher")
def auto_generate():
    return auto_ass_func()


@teachers_bp.route("/sending-assesment", methods=['POST'])
@handle_exceptions
@token_required(role="teacher")
def send_ass():
    return send_ass_func()


@teachers_bp.route("/teacher-concept_overview", methods=["POST"])
@handle_exceptions
@token_required(role="teacher")
def concept_overview():
    return concept_overview_func()


@teachers_bp.route("/download-student-progress", methods=['POST'])
@handle_exceptions
@token_required(role="teacher")
def download_student_prog():
    return download_func()


@teachers_bp.route("/get_concept", methods=['POST'])
@handle_exceptions
@token_required(role="teacher")
def get_concept():
    return concept_func()


@teachers_bp.route("/get_sub_concept", methods=['POST'])
@handle_exceptions
@token_required(role="teacher")
def sub_concept():
    return sub_concept_func()


@teachers_bp.route("/teacher-overview", methods=['POST'])
@handle_exceptions
@token_required(role="teacher")
def teacher_dashboard():
    return overview_func()


@teachers_bp.route("/teacher-remedial", methods=["POST"])
@handle_exceptions
@token_required(role="teacher")
def remedial():
    return remedial_func()


@teachers_bp.route("/delete-question", methods=['POST'])
@handle_exceptions
@token_required(role="teacher")
def delete_question():
    return delete_question_func()


@teachers_bp.route("/replace-question", methods=['POST'])
@handle_exceptions
@token_required(role="teacher")
def replace_question():
    return replace_question_func()


@teachers_bp.route("/verify-assessment", methods=['POST'])
@handle_exceptions
@token_required(role="teacher")
def verify_assessment():
    return verify_assessment_func()