#!/usr/bin/env python3
"""
Debug script to test the copy functionality endpoint
"""
from app import app
from models import AnalysisJob, AnalysisResult, User
import requests
import json

def test_copy_endpoint():
    with app.app_context():
        # Find a completed analysis job
        job = AnalysisJob.query.filter_by(status='completed').first()
        
        if not job:
            print("No completed analysis jobs found")
            return
            
        print(f"Testing with job: {job.job_uuid}")
        print(f"Job status: {job.status}")
        print(f"Original filename: {job.original_filename}")
        
        # Check if results exist
        if job.results:
            print("✓ Results exist")
            print(f"Final analysis length: {len(job.results.final_analysis) if job.results.final_analysis else 0}")
        else:
            print("✗ No results found")
            return
            
        # Test the endpoint logic directly
        try:
            user_id = job.user_id
            user = User.query.get(user_id)
            
            if not user:
                print(f"✗ User {user_id} not found")
                return
                
            print(f"✓ User found: {user.username}")
            
            # Check permissions
            if job.case and not user.can_view_case(job.case):
                print("✗ User cannot view case")
                return
                
            if not user.is_admin() and not user.is_company_admin() and job.user_id != user_id:
                print("✗ User does not have permission")
                return
                
            print("✓ Permissions check passed")
            
            # Get the results
            results = job.results
            
            if not results:
                print("✗ Results not found")
                return
                
            # Format the analysis as plain text
            perspective = job.perspective.capitalize()
            text_analysis = f"{perspective} Perspective Analysis:\n\n"
            
            # Add case information if available
            if job.case:
                text_analysis += f"Case: {job.case.case_name} (#{job.case.case_number})\n"
                text_analysis += f"Client: {job.case.client_name}\n\n"
            
            # Add final analysis
            text_analysis += "--- Overall Analysis ---\n"
            text_analysis += f"{results.final_analysis}\n\n"
            
            # Add citations if available
            if results.citations_json:
                text_analysis += "--- Citations ---\n"
                for i, citation in enumerate(results.citations_json, 1):
                    text_analysis += f"[{i}] {citation.get('text', '')}\n"
                    if "url" in citation and citation["url"]:
                        text_analysis += f"    {citation['url']}\n"
                    text_analysis += "\n"
            
            # Add section analyses if available
            if results.section_analyses_json:
                for i, section in enumerate(results.section_analyses_json):
                    if isinstance(section, dict) and 'title' in section and 'content' in section:
                        text_analysis += f"--- {section['title']} ---\n"
                        text_analysis += f"{section['content']}\n\n"
                    else:
                        text_analysis += f"--- Section {i+1} ---\n"
                        text_analysis += f"{section}\n\n"
            
            # Add arguments if available
            if results.arguments:
                text_analysis += "--- Arguments ---\n"
                text_analysis += f"{results.arguments}\n\n"
            
            print("✓ Text analysis generated successfully")
            print(f"Total length: {len(text_analysis)}")
            print("First 200 characters:")
            print(text_analysis[:200])
            
            # Test JSON response format
            response_data = {
                'success': True,
                'job_id': job.job_uuid,
                'perspective': perspective,
                'analysis': text_analysis,
                'case': {
                    'id': job.case.id,
                    'name': job.case.case_name,
                    'number': job.case.case_number
                } if job.case else None
            }
            
            print("✓ JSON response format is correct")
            
        except Exception as e:
            print(f"✗ Error in endpoint logic: {str(e)}")
            import traceback
            traceback.print_exc()

if __name__ == "__main__":
    test_copy_endpoint()
