from django.core.management.base import BaseCommand
from django.contrib.auth.models import User
from assets.models import Organization, Location, ItemType, UserProfile, Unit


class Command(BaseCommand):
    help = 'Create initial data for the system'

    def handle(self, *args, **options):
        # Create superuser if not exists
        if not User.objects.filter(username='admin').exists():
            User.objects.create_superuser('admin', 'admin@example.com', 'admin123')
            self.stdout.write('Superuser created: admin/admin123')

        # Create sample organizations
        org1, created = Organization.objects.get_or_create(
            name='شرکت فناوری پارس',
            defaults={'description': 'شرکت فعال در زمینه فناوری اطلاعات'}
        )
        if created:
            self.stdout.write('Organization created: Pars Tech Company')

        org2, created = Organization.objects.get_or_create(
            name='شرکت بازرگانی آریا',
            defaults={'description': 'شرکت فعال در زمینه بازرگانی'}
        )
        if created:
            self.stdout.write('Organization created: Arya Trading Company')

        # Create sample locations
        locations = [
            ('Main Office', 'Main building of the company'),
            ('Warehouse', 'Main warehouse'),
            ('First Floor', 'First floor of building'),
            ('Second Floor', 'Second floor of building'),
            ('Parking', 'Building parking'),
        ]
        
        for name, desc in locations:
            location, created = Location.objects.get_or_create(
                name=name,
                defaults={'description': desc}
            )
            if created:
                self.stdout.write(f'Location created: {name}')

        # Create sample item types
        item_types = [
            ('Computer', 'Various computers and laptops'),
            ('Printer', 'Various printers and scanners'),
            ('Desk', 'Various work desks'),
            ('Chair', 'Various office chairs'),
            ('Phone', 'Various phones and communication equipment'),
            ('AC', 'Various air conditioners'),
            ('Cabinet', 'Various cabinets and files'),
        ]
        
        for name, desc in item_types:
            item_type, created = ItemType.objects.get_or_create(
                name=name,
                defaults={'description': desc}
            )
            if created:
                self.stdout.write(f'Item type created: {name}')

        # Create sample units
        units = [
            ('کیلو', 'kg'),
            ('دستگاه', ''),
            ('پایه', ''),
            ('بسته', ''),
        ]

        for name, abbr in units:
            unit, created = Unit.objects.get_or_create(
                name=name,
                defaults={'abbreviation': abbr}
            )
            if created:
                self.stdout.write(f'Unit created: {name}')

        # Create sample users
        # Owner for org1
        if not User.objects.filter(username='owner1').exists():
            user = User.objects.create_user(
                username='owner1',
                email='owner1@example.com',
                password='pass123',
                first_name='Ahmad',
                last_name='Mohammadi'
            )
            UserProfile.objects.create(
                user=user,
                organization=org1,
                user_type='owner'
            )
            self.stdout.write('Owner created for org1: owner1/pass123')

        # Employee for org1
        if not User.objects.filter(username='employee1').exists():
            user = User.objects.create_user(
                username='employee1',
                email='employee1@example.com',
                password='pass123',
                first_name='Ali',
                last_name='Ahmadi'
            )
            UserProfile.objects.create(
                user=user,
                organization=org1,
                user_type='employee'
            )
            self.stdout.write('Employee created for org1: employee1/pass123')

        # Owner for org2
        if not User.objects.filter(username='owner2').exists():
            user = User.objects.create_user(
                username='owner2',
                email='owner2@example.com',
                password='pass123',
                first_name='Fatemeh',
                last_name='Rezaei'
            )
            UserProfile.objects.create(
                user=user,
                organization=org2,
                user_type='owner'
            )
            self.stdout.write('Owner created for org2: owner2/pass123')

        # Employee for org2
        if not User.objects.filter(username='employee2').exists():
            user = User.objects.create_user(
                username='employee2',
                email='employee2@example.com',
                password='pass123',
                first_name='Maryam',
                last_name='Karimi'
            )
            UserProfile.objects.create(
                user=user,
                organization=org2,
                user_type='employee'
            )
            self.stdout.write('Employee created for org2: employee2/pass123')

        self.stdout.write(self.style.SUCCESS('Initial data created successfully!'))