from app import create_app
from app.extensions import db
from app.models.contract import Contract
from app.models.job import Job
from app.models.user import User
from datetime import datetime, date, timedelta

app = create_app()

print("="*50)
print("CREATING TEST CONTRACT FOR CLOSEOUT")
print("="*50)

with app.app_context():
    # Get users
    worker = User.query.filter_by(id=1).first()  # Worker
    contractor = User.query.filter_by(id=2).first()  # Contractor
    
    # Get or create a job
    job = Job.query.filter_by(contractor_id=2).first()
    if not job:
        # Create a test job
        job = Job(
            title="Test Job for Closeout",
            description="Test job for testing the closeout workflow",
            contractor_id=2,
            category_id=1,
            location="Sydney",
            hourly_rate=50.00,
            status='open',
            white_card_required=True,
            insurance_required=True
        )
        db.session.add(job)
        db.session.commit()
        print(f"✓ Created test job ID: {job.id}")
    else:
        print(f"✓ Using existing job ID: {job.id}")
    
    # Create a new active contract
    test_contract = Contract(
        job_id=job.id,
        contractor_id=2,
        worker_id=1,
        agreed_rate=50.00,
        rate_type='hourly',
        start_date=date.today(),
        end_date=date.today() + timedelta(days=7),
        scope_of_work="Test contract for closeout workflow testing",
        status='active',  # Ready for closeout!
        completion_status='not_started',
        payment_status='pending',
        contractor_signed=True,
        worker_signed=True,
        contractor_signed_date=datetime.utcnow(),
        worker_signed_date=datetime.utcnow(),
        contractor_reviewed=True,
        worker_reviewed=True,
        independent_contractor_status=True,
        superannuation_required=False,
        workers_comp_covered=True,
        payment_terms='completion'
    )
    
    db.session.add(test_contract)
    db.session.commit()
    
    print(f"\n✅ TEST CONTRACT CREATED!")
    print(f"   Contract ID: {test_contract.id}")
    print(f"   Status: {test_contract.status}")
    print(f"   Worker: {worker.email if worker else 'ID 1'}")
    print(f"   Contractor: {contractor.email if contractor else 'ID 2'}")
    print(f"   Rate: ${test_contract.agreed_rate}/hour")
    
    print(f"\n📋 NEXT STEPS:")
    print(f"   1. Login as Worker (ID: 1)")
    print(f"   2. Go to My Contracts")
    print(f"   3. Find Contract ID {test_contract.id}")
    print(f"   4. Click 'Close Out' → 'Mark Work Complete'")
    print(f"   5. Then login as Contractor to approve")
    print(f"   6. Both parties can then submit ratings")
