from flask import Blueprint, render_template, session
from controllers.auth_controller import login_required
from models.user_model import UserModel
from models.survey_model import SurveyModel
from models.temperament_model import TemperamentModel
from models.project_model import ProjectModel
from models.feature_model import FeatureModel
from models.question_model import QuestionModel
from models.people_model import PeopleModel
from models.option_model import OptionModel
from models.database import execute_single_query

dashboard_bp = Blueprint('dashboard', __name__)

@dashboard_bp.route('/dashboard')
@login_required
def index():
    # Get statistics for dashboard
    stats = {
        'users_count': UserModel.get_users_count(),
        'surveys_count': SurveyModel.get_surveys_count(),
        'temperaments_count': TemperamentModel.get_temperaments_count(),
        'projects_count': ProjectModel.get_projects_count(),
        'questions_count': QuestionModel.get_questions_count(),
        'peoples_count': PeopleModel.get_people_count(),
        'answers_count': get_answers_count(),
        'features_count': FeatureModel.get_features_count(),
        'options_count': OptionModel.get_options_count()
    }
    
    # Get recent activity
    recent_users = UserModel.get_all_users()[:5]
    recent_surveys = SurveyModel.get_all_surveys()[:5]
    
    return render_template('dashboard/index.html', 
                         stats=stats, 
                         recent_users=recent_users,
                         recent_surveys=recent_surveys)

def get_projects_count():
    query = "SELECT COUNT(*) as count FROM projects"
    result = execute_single_query(query)
    return result['count'] if result else 0

def get_questions_count():
    query = "SELECT COUNT(*) as count FROM questions"
    result = execute_single_query(query)
    return result['count'] if result else 0

def get_peoples_count():
    query = "SELECT COUNT(*) as count FROM peoples"
    result = execute_single_query(query)
    return result['count'] if result else 0

def get_answers_count():
    query = "SELECT COUNT(*) as count FROM answers"
    result = execute_single_query(query)
    return result['count'] if result else 0

def get_features_count():
    query = "SELECT COUNT(*) as count FROM features"
    result = execute_single_query(query)
    return result['count'] if result else 0