"""
Roteador Master / SuperAdmin do SaaS:
Visão global de todas as barbearias, faturamento do SaaS (MRR),
criação de novas barbearias e troca de planos (Básico, Intermediário e Profissional).
"""
from fastapi import APIRouter, Request, HTTPException
from fastapi.templating import Jinja2Templates
import os
from app.database import get_db
from app.plans import SAAS_PLANS, get_plan_info

TEMPLATES_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), "templates")
templates = Jinja2Templates(directory=TEMPLATES_DIR)

router = APIRouter(prefix="/master", tags=["Master SaaS"])

@router.get("")
@router.get("/")
def master_dashboard(request: Request):
    with get_db() as conn:
        cursor = conn.cursor()

        # 1. Buscar todas as barbearias
        cursor.execute("""
        SELECT b.*,
               (SELECT COUNT(*) FROM barbers WHERE barbershop_id = b.id AND is_active = 1) as total_barbers,
               (SELECT COUNT(*) FROM appointments WHERE barbershop_id = b.id) as total_appts,
               (SELECT COUNT(*) FROM clients WHERE barbershop_id = b.id) as total_clients
        FROM barbershops b
        ORDER BY b.id DESC
        """)
        shops = [dict(r) for r in cursor.fetchall()]

        # 2. Calcular Faturamento Recorrente do SaaS (MRR)
        total_mrr = 0.0
        for s in shops:
            if s["is_active"] == 1:
                tier = s.get("plan_tier", "basico")
                plan_data = get_plan_info(tier)
                s["plan_data"] = plan_data
                total_mrr += plan_data["price"]
            else:
                s["plan_data"] = get_plan_info(s.get("plan_tier", "basico"))

        # Totais gerais
        total_barbers_all = sum(s["total_barbers"] for s in shops)
        total_appts_all = sum(s["total_appts"] for s in shops)
        active_shops_count = sum(1 for s in shops if s["is_active"] == 1)

        base_url = str(request.base_url).rstrip("/")

        return templates.TemplateResponse(
            request=request,
            name="master/dashboard.html",
            context={
                "shops": shops,
                "plans": SAAS_PLANS,
                "metrics": {
                    "total_shops": len(shops),
                    "active_shops": active_shops_count,
                    "total_mrr": total_mrr,
                    "total_barbers": total_barbers_all,
                    "total_appts": total_appts_all
                },
                "base_url": base_url
            }
        )
