#!/usr/bin/env python3
"""
Script to add case limit to Pro plan features
"""

from app import app
from models import db, SubscriptionPlan
import json

def update_pro_plan_case_limit():
    """Add case limit to Pro plan features"""

    with app.app_context():
        # Find the Pro plan
        pro_plan = SubscriptionPlan.query.filter_by(name='pro').first()

        if not pro_plan:
            print("❌ Pro plan not found")
            return False

        print(f"✅ Found pro plan: {pro_plan.display_name}")
        print(f"📊 Current features: {json.dumps(pro_plan.features, indent=2)}")

        # Update features to include case limit
        if not pro_plan.features:
            pro_plan.features = {}

        pro_plan.features['max_cases'] = 20
        pro_plan.features['case_management'] = True

        # Ensure monthly_analyses is set to unlimited (-1)
        pro_plan.features['monthly_analyses'] = -1  # Unlimited for Pro

        # Force update to ensure JSON column is properly marked as modified
        from sqlalchemy.orm.attributes import flag_modified
        flag_modified(pro_plan, 'features')

        try:
            db.session.commit()
            print(f"\n✅ Updated Pro plan features!")
            print(f"📊 New features: {json.dumps(pro_plan.features, indent=2)}")

            # Also show all plans for comparison
            print("\n📋 All Plan Limits:")
            plans = SubscriptionPlan.query.filter_by(is_active=True).order_by(SubscriptionPlan.price).all()
            for plan in plans:
                max_cases = plan.features.get('max_cases', 'unlimited')
                monthly_analyses = plan.features.get('monthly_analyses', 'unlimited')
                analyses_text = 'Unlimited' if monthly_analyses == -1 else str(monthly_analyses)
                print(f"   {plan.display_name}:")
                print(f"     - Max cases: {max_cases}")
                print(f"     - Monthly analyses: {analyses_text}")
                print(f"     - Price: ${plan.price}")

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

if __name__ == "__main__":
    update_pro_plan_case_limit()