from flask import Blueprint, render_template, redirect, url_for, session, flash

from extensions import db
from models import Customer


customers_bp = Blueprint("customers", __name__)


# ============================================================
# ADMIN CUSTOMERS
# ============================================================

@customers_bp.route(
    "/admin/customers",
    endpoint="admin_customers"
)
def admin_customers():

    if "user_id" not in session:
        return redirect(url_for("auth.login"))

    customers = (
        Customer.query
        .order_by(Customer.created_at.desc())
        .all()
    )

    total_customers = Customer.query.count()

    active_customers = Customer.query.filter_by(
        is_active=True
    ).count()

    inactive_customers = Customer.query.filter_by(
        is_active=False
    ).count()

    return render_template(
        "admin/customers.html",
        customers=customers,
        total_customers=total_customers,
        active_customers=active_customers,
        inactive_customers=inactive_customers
    )


# ============================================================
# TOGGLE CUSTOMER STATUS
# ============================================================

@customers_bp.route(
    "/admin/customers/<int:customer_id>/toggle",
    methods=["POST"],
    endpoint="toggle_customer"
)
def toggle_customer(customer_id):

    if "user_id" not in session:
        return redirect(url_for("auth.login"))

    customer = Customer.query.get_or_404(customer_id)

    customer.is_active = not customer.is_active

    db.session.commit()

    if customer.is_active:

        flash(
            "Customer account activated successfully.",
            "success"
        )

    else:

        flash(
            "Customer account deactivated successfully.",
            "success"
        )

    return redirect(
        url_for("customers.admin_customers")
    )