#!/usr/bin/env python3
"""
Script to create test cases for limit testing
"""

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

def create_test_cases(email, num_cases=3):
    """Create test cases for a user"""

    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})")

        # Create test cases
        for i in range(num_cases):
            case_num = f"TEST-{datetime.now().strftime('%Y%m%d')}-{i+1:03d}"
            case = Case(
                case_number=case_num,
                case_name=f"Test Case {i+1} for Limit Testing",
                case_type='civil',
                practice_area='general',
                client_name='Test Client',
                opposing_party='Test Opponent',
                jurisdiction='Test Jurisdiction',
                description=f'This is test case {i+1} created to test case limits',
                company_id=user.company_id,
                lead_attorney_id=user.id,
                created_by_id=user.id,
                date_opened=datetime.utcnow().date(),
                status='active'
            )
            db.session.add(case)
            print(f"   ✅ Created case: {case_num}")

        try:
            db.session.commit()
            print(f"\n✅ Successfully created {num_cases} test cases")

            # Show updated count
            active_cases = Case.query.filter_by(
                company_id=user.company_id,
                status='active'
            ).count()
            print(f"   Total active cases now: {active_cases}")

            subscription = user.get_subscription()
            if subscription and subscription.plan.name == 'free':
                max_cases = subscription.plan.features.get('max_cases', 5)
                if active_cases >= max_cases:
                    print(f"   ⚠️  Case limit reached! ({active_cases}/{max_cases})")
                else:
                    print(f"   ✅ Can create {max_cases - active_cases} more cases")

            return True
        except Exception as e:
            db.session.rollback()
            print(f"❌ Error creating cases: {str(e)}")
            return False

if __name__ == "__main__":
    email = "scott.barbour@yahoo.com"
    # Create 3 more cases to reach the limit of 5
    create_test_cases(email, 3)