#!/usr/bin/env python3
"""
Script to check how many cases a user has
"""

from app import app
from models import db, User, Case

def check_user_cases(email):
    """Check user's case count"""

    with app.app_context():
        # Find the user
        user = User.query.filter_by(email=email).first()

        if not user:
            print(f"❌ User with email {email} not found")
            return False

        print(f"✅ Found user: {user.username} (ID: {user.id})")
        print(f"   Company ID: {user.company_id}")

        # Get subscription info
        subscription = user.get_subscription()
        if subscription:
            print(f"   Plan: {subscription.plan.display_name}")
            max_cases = subscription.plan.features.get('max_cases', 'unlimited')
            print(f"   Max cases allowed: {max_cases}")

        # Count all company cases
        all_cases = Case.query.filter_by(company_id=user.company_id).all()
        active_cases = [c for c in all_cases if c.status == 'active']
        closed_cases = [c for c in all_cases if c.status == 'closed']

        print(f"\n📊 Case Statistics:")
        print(f"   Total cases: {len(all_cases)}")
        print(f"   Active cases: {len(active_cases)}")
        print(f"   Closed cases: {len(closed_cases)}")

        if subscription and subscription.plan.name == 'free':
            max_cases = subscription.plan.features.get('max_cases', 5)
            remaining = max_cases - len(active_cases)
            print(f"\n⚠️  Case Limit Status:")
            print(f"   Using: {len(active_cases)}/{max_cases} active cases")
            if remaining > 0:
                print(f"   ✅ Can create {remaining} more cases")
            else:
                print(f"   ❌ Case limit reached! Must close/archive cases to create new ones")

        # List active cases
        if active_cases:
            print(f"\n📁 Active Cases:")
            for case in active_cases[:10]:  # Show first 10
                print(f"   - {case.case_number}: {case.case_name}")
                print(f"     Created: {case.created_at.strftime('%Y-%m-%d')}")

        return True

if __name__ == "__main__":
    email = "scott.barbour@yahoo.com"
    check_user_cases(email)