"""
Create demo users for the end-to-end workflow demonstration
"""
import sys
import os
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

from app import create_app
from app.extensions import db
from app.models.user import User
from app.models.category import Category
from datetime import datetime, timezone

def create_demo_users():
    """Create demo users for workflow testing"""
    app = create_app()
    
    with app.app_context():
        print("=" * 80)
        print("CREATING DEMO USERS FOR E2E WORKFLOW")
        print("=" * 80)
        
        # Ensure database tables exist
        db.create_all()
        
        # Ensure categories exist
        if Category.query.count() == 0:
            categories = [
                Category(name='Plumbing', description='Plumbing work'),
                Category(name='Electrical', description='Electrical work'),
                Category(name='Construction', description='General construction'),
                Category(name='Renovation', description='Renovation work')
            ]
            for cat in categories:
                db.session.add(cat)
            db.session.commit()
            print("✓ Categories created")
        
        # Check if demo users already exist
        contractor = User.query.filter_by(email='contractor@demo.com').first()
        worker = User.query.filter_by(email='worker@demo.com').first()
        
        if contractor:
            print(f"⚠️  Contractor already exists: {contractor.email}")
        else:
            # Create contractor
            contractor = User(
                email='contractor@demo.com',
                first_name='John',
                last_name='Contractor',
                role='contractor',
                phone_number='0400111111',
                location='Sydney',
                abn_number='11111111111',
                privacy_consent=True,
                terms_accepted=True,
                terms_accepted_date=datetime.now(timezone.utc),
                is_active=True
            )
            contractor.set_password('DemoPass123!')
            db.session.add(contractor)
            print("✓ Contractor created: contractor@demo.com")
        
        if worker:
            print(f"⚠️  Worker already exists: {worker.email}")
        else:
            # Create worker
            worker = User(
                email='worker@demo.com',
                first_name='Jane',
                last_name='Worker',
                role='worker',
                phone_number='0400222222',
                location='Sydney',
                abn_number='22222222222',
                privacy_consent=True,
                terms_accepted=True,
                terms_accepted_date=datetime.now(timezone.utc),
                is_active=True
            )
            worker.set_password('DemoPass123!')
            db.session.add(worker)
            print("✓ Worker created: worker@demo.com")
        
        db.session.commit()
        
        print("\n" + "=" * 80)
        print("DEMO USERS READY")
        print("=" * 80)
        print("\n📧 Contractor Login:")
        print("   Email: contractor@demo.com")
        print("   Password: DemoPass123!")
        print("\n📧 Worker Login:")
        print("   Email: worker@demo.com")
        print("   Password: DemoPass123!")
        print("\n✅ You can now login and test the complete workflow!")
        print("=" * 80)

if __name__ == "__main__":
    create_demo_users()
