from flask import Blueprint, render_template, session, request
from pymongo import MongoClient, DESCENDING
from config import Config

main = Blueprint('main', __name__)

@main.route('/')
def homepage():
    client = MongoClient(Config.MONGO_URI)
    db = client['fyp']
    kmeans = db['kmeans']

    query = request.args.get('q', '').strip()
    mongo_query = {}
    if query:
        mongo_query['title'] = {'$regex': query, '$options': 'i'}
    products = list(kmeans.find(mongo_query).limit(12))
    for p in products:
        p['_id'] = str(p['_id'])

    # Fixed aggregation for top categories
    top_categories = db.kmeans.aggregate([
        {"$group": {
            "_id": "$main_category_original",
            "product_count": {"$sum": 1}
        }},
        {"$sort": {"product_count": -1}},
        {"$limit": 4}
    ])
    main_category_detail = [
        {"name": cat["_id"], "product_count": cat["product_count"]}
        for cat in top_categories
    ]

    return render_template(
        'account/index.html',
        products=products,
        query=query,
        main_category_detail=main_category_detail,
        logged_in=session.get('user_id') is not None
    )


