import os
import django

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.base')
django.setup()

from django.contrib.auth import get_user_model
from apps.organizations.models import Organization

User = get_user_model()

def create_seed_users():
    print("Creating seed organization...")
    org, created = Organization.objects.get_or_create(
        name="PREPOC Global",
        defaults={
            "slug": "prepoc-global",
            "timezone": "UTC",
            "currency": "USD",
        }
    )

    users_to_create = [
        {
            "email": "hr@example.com",
            "first_name": "Sarah",
            "last_name": "Connor",
            "role": "HR_MANAGER",
            "password": "password123",
            "organization": org,
            "is_2fa_enabled": False, # Will trigger setup flow
        },
        {
            "email": "manager@example.com",
            "first_name": "Michael",
            "last_name": "Scott",
            "role": "TEAM_MANAGER",
            "password": "password123",
            "organization": org,
            "is_2fa_enabled": False,
        },
        {
            "email": "employee@example.com",
            "first_name": "Jim",
            "last_name": "Halpert",
            "role": "EMPLOYEE",
            "password": "password123",
            "organization": org,
            "is_2fa_enabled": False,
        },
        {
            "email": "accountant@example.com",
            "first_name": "Oscar",
            "last_name": "Martinez",
            "role": "ACCOUNTANT",
            "password": "password123",
            "organization": org,
            "is_2fa_enabled": False,
        },
        {
            "email": "client@example.com",
            "first_name": "David",
            "last_name": "Wallace",
            "role": "CLIENT",
            "password": "password123",
            "organization": org,
            "is_2fa_enabled": False,
        }
    ]

    for user_data in users_to_create:
        email = user_data.pop("email")
        password = user_data.pop("password")
        
        user, created = User.objects.get_or_create(
            email=email,
            defaults=user_data
        )
        if created:
            user.set_password(password)
            user.save()
            print(f"Created user: {email} (Role: {user_data['role']})")
        else:
            print(f"User already exists: {email}")

    print("Done seeding users.")

if __name__ == "__main__":
    create_seed_users()
