#!/usr/bin/env python3
from app_complete import app, db
from models import Case, User, CaseDocument
import sys

with app.app_context():
    print("\n=== DEBUGGING CASES ===\n")
    
    # Check all cases in database
    cases = Case.query.all()
    print(f"Total cases in database: {len(cases)}")
    
    for case in cases:
        print(f"\nCase ID: {case.id}")
        print(f"  Case Number: {case.case_number}")
        print(f"  Case Name: {case.case_name}")
        print(f"  Company ID: {case.company_id}")
        print(f"  Created By ID: {case.created_by_id}")
        print(f"  Lead Attorney ID: {case.lead_attorney_id}")
        print(f"  Status: {case.status}")
        print(f"  Created At: {case.created_at}")
        
        # Check documents
        documents = CaseDocument.query.filter_by(case_id=case.id).all()
        print(f"  Documents: {len(documents)}")
        for doc in documents:
            print(f"    - {doc.filename}")
    
    # Check users
    print("\n=== USERS ===")
    users = User.query.all()
    for user in users:
        print(f"User ID: {user.id}, Username: {user.username}, Role: {user.role}, Company ID: {user.company_id}")
    
    # Check if there's a user filter issue
    if len(sys.argv) > 1:
        user_id = int(sys.argv[1])
        user = User.query.get(user_id)
        if user:
            print(f"\n=== Testing case visibility for user {user.username} (ID: {user.id}) ===")
            print(f"User role: {user.role}")
            print(f"User company ID: {user.company_id}")
            
            # Check the can_view_case method
            for case in cases:
                can_view = user.can_view_case(case) if hasattr(user, 'can_view_case') else None
                print(f"Case {case.case_number}: can_view = {can_view}")
                
                # Manual check
                if user.is_admin():
                    print(f"  -> Should see (admin)")
                elif case.company_id == user.company_id:
                    print(f"  -> Should see (same company)")
                elif case.created_by_id == user.id:
                    print(f"  -> Should see (creator)")
                elif case.lead_attorney_id == user.id:
                    print(f"  -> Should see (lead attorney)")
                else:
                    print(f"  -> Should NOT see")
