from django.core.management.base import BaseCommand
from django.contrib.auth import get_user_model
from django.db import transaction
from apps.customers.models import Customer

class Command(BaseCommand):
    help = 'Initializes basic customer data: creates a customer linked to a regular user.'

    def handle(self, *args, **options):
        User = get_user_model()

        self.stdout.write(self.style.SUCCESS('--- Initializing Customer Data ---'))

        try:
            # Get the regular user created by init_auth_data
            regular_user = User.objects.get(email='user@example.com')
        except User.DoesNotExist:
            self.stdout.write(self.style.ERROR('Regular user (user@example.com) not found. Please run init_auth_data first.'))
            return

        with transaction.atomic():
            if not hasattr(regular_user, 'customer'):
                self.stdout.write(f'Creating customer for user: {regular_user.email}...')
                Customer.objects.create(
                    user=regular_user,
                    address="123 Main St, Anytown",
                    id_card_number="ID123456789",
                    phone_number="+1234567890",
                    birth_date="1990-01-01",
                    created_by=regular_user # Assuming created_by can be the user themselves
                )
                self.stdout.write(self.style.SUCCESS('Customer created successfully.'))
            else:
                self.stdout.write(self.style.WARNING(f'Customer for user {regular_user.email} already exists.'))

        self.stdout.write(self.style.SUCCESS('--- Customer Data Initialization Complete ---'))
